bpm-core 0.0.16 → 0.0.18

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.
@@ -121,7 +121,7 @@ export class WorkflowSectionComponent {
121
121
  });
122
122
  }
123
123
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: WorkflowSectionComponent, deps: [{ token: i1.CoreI18nService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
124
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: WorkflowSectionComponent, isStandalone: true, selector: "app-workflow-section", inputs: { sections: "sections", isReadOnly: "isReadOnly", isLoading: "isLoading", form: "form", contentClass: "contentClass", sectionsController: "sectionsController", segmentDynamicLoaderService: "segmentDynamicLoaderService", sectionFormComponent: "sectionFormComponent", sectionName: "sectionName" }, outputs: { sectionSubmitted: "sectionSubmitted" }, viewQueries: [{ propertyName: "formStateObject", first: true, predicate: ["f"], descendants: true }], ngImport: i0, template: "<form #f=\"ngForm\" autocomplete=\"off\">\r\n <div *ngIf=\"form?.header?.status?.['key'] !== 'NEW' \" class=\"mt-n3\" id=\"accordion\" role=\"tablist\"\r\n aria-multiselectable=\"true\">\r\n <app-form-section\r\n *ngIf=\"form.sections?.[1]?.body?.details?.['stage0']?.['isStage0'] === 'true'\"\r\n class=\"app-form-section\"\r\n [segmentDynamicLoaderService]=\"segmentDynamicLoaderService\"\r\n [section]=\"form.sections[1]\"\r\n [lov]=\"form?.lovs\"\r\n [isReadOnly]=\"form.sections[1]?.header?.readOnly\"\r\n [form]=\"form\"\r\n [controllers]=\"sectionsController\"\r\n >\r\n </app-form-section>\r\n\r\n <app-main-request-details [lov]=\"form?.lovs\" [form]=\"form\" [section]=\"form.sections?.[0]\">\r\n <ng-container *ngTemplateOutlet=\"contentReqDet\"></ng-container>\r\n </app-main-request-details>\r\n\r\n <header class=\"header-line fs-12 fw-medium fc-dark-gray mt-sm-5 mt-4 mb-4\" *ngIf=\"form.sections?.length > 1 && !(form?.header?.formId?.includes('MEO') || form?.header?.formId?.includes('MEX'))\">\r\n {{i18n.translate('Approvals')}}\r\n </header>\r\n\r\n <mat-accordion class=\"primary-accordion main-approval\" [multi]=\"isExpandableFromBackend\">\r\n <ng-container *ngFor=\"let section of form.sections; let i = index\">\r\n <app-form-section *ngIf=\"i !== 0 && (!section?.body?.details?.['stage0']?.['isStage0'] || section?.body?.details?.['stage0']?.['isStage0'] === 'false')\" class=\"app-form-section\" [segmentDynamicLoaderService]=\"segmentDynamicLoaderService\" [section]=section [lov]=\"form?.lovs\"\r\n [isReadOnly]=\"section.header.readOnly\" [form]=\"form\" [controllers]=\"sectionsController\">\r\n </app-form-section>\r\n </ng-container>\r\n </mat-accordion>\r\n </div>\r\n\r\n <section *ngIf=\"form?.header?.status?.['key'] === 'NEW' \" class=\"{{contentClass}}\">\r\n <ng-container *ngTemplateOutlet=\"contentReqDet\"></ng-container>\r\n </section>\r\n\r\n\r\n</form>\r\n\r\n\r\n<ng-template #contentReqDet><ng-content></ng-content></ng-template>\r\n", styles: ["@charset \"UTF-8\";.primary-accordion{--accordion-height: auto;--indicator-bc: transparent;--indicator-bc-active: transparent;--indicator-icon: \"\\e9bc\";--indicator-icon-active: \"\\ea34\";--indicator-color: var(--coral);--indicator-color-active: var(--dark-gray);--accordion-radius: 4px;--accordion-border-active: 1px solid var(--gray);--accordion-shadow: 0 7px 10px 0 rgba(var(--rgb-black), 3%);--accordion-shadow-active: none;--panel-padding: 1.5rem;--panel-body-padding: 0 1.5rem 1.5rem}@media (max-width: 576px){.primary-accordion{--accordion-height: 110px;--panel-padding: 1.5rem 1rem;--panel-body-padding: 0 1rem 1rem}}.primary-accordion.main-approval{position:relative}.primary-accordion.main-approval:before{content:\"\";position:absolute;top:0;bottom:0;margin:2rem;width:1px;height:calc(100% - 2rem);background-color:var(--dark-gray);z-index:0}@media (max-width: 576px){.workflow-all-btns ds-button::part(base){--btn-padding: 0 .5rem;--btn-fs: .75rem;--btn-height: var(--default-size-sm);--btn-min-width: var(--default-size-sm)}}\n"], dependencies: [{ kind: "directive", type: MatAccordion, selector: "mat-accordion", inputs: ["hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FormSectionComponent, selector: "app-form-section", inputs: ["requestDetails", "section", "form", "lov", "isReadOnly", "isOpen", "isFinalApproval", "controllers", "segmentDynamicLoaderService", "sectionFormComponent", "sectionName"] }, { kind: "component", type: MainRequestDetailsComponent, selector: "app-main-request-details", inputs: ["section", "lov", "form"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }] });
124
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: WorkflowSectionComponent, isStandalone: true, selector: "app-workflow-section", inputs: { sections: "sections", isReadOnly: "isReadOnly", isLoading: "isLoading", form: "form", contentClass: "contentClass", sectionsController: "sectionsController", segmentDynamicLoaderService: "segmentDynamicLoaderService", sectionFormComponent: "sectionFormComponent", sectionName: "sectionName" }, outputs: { sectionSubmitted: "sectionSubmitted" }, viewQueries: [{ propertyName: "formStateObject", first: true, predicate: ["f"], descendants: true }], ngImport: i0, template: "<form #f=\"ngForm\" autocomplete=\"off\">\r\n <div *ngIf=\"form?.header?.status?.key !== 'NEW' \" class=\"mt-n3\" id=\"accordion\" role=\"tablist\"\r\n aria-multiselectable=\"true\">\r\n <app-main-request-details [lov]=\"form?.lovs\" [form]=\"form\" [section]=\"sections[0]\">\r\n <ng-container *ngTemplateOutlet=\"contentReqDet\"></ng-container>\r\n </app-main-request-details>\r\n <header class=\"header-line fs-12 fw-medium fc-dark-gray mt-sm-5 mt-4 mb-4\" *ngIf=\"sections.length > 1\">\r\n {{i18n.translate('Approvals')}}\r\n </header>\r\n <mat-accordion class=\"primary-accordion main-approval\">\r\n <ng-container *ngFor=\"let section of sections; let i = index\">\r\n <app-form-section *ngIf=\"i !== 0\" class=\"app-form-section\" [segmentDynamicLoaderService]=\"segmentDynamicLoaderService\" [section]=section [lov]=\"form?.lovs\"\r\n [isReadOnly]=\"section.header.readOnly\" [form]=\"form\" [controllers]=\"sectionsController\">\r\n </app-form-section>\r\n </ng-container>\r\n </mat-accordion>\r\n </div>\r\n\r\n <section *ngIf=\"form?.header?.status?.key === 'NEW' \" class=\"default-box box-shadow p-4\">\r\n <ng-container *ngTemplateOutlet=\"contentReqDet\"></ng-container>\r\n </section>\r\n\r\n</form>\r\n\r\n\r\n<ng-template #contentReqDet><ng-content></ng-content></ng-template>\r\n", styles: ["@charset \"UTF-8\";.primary-accordion{--accordion-height: auto;--indicator-bc: transparent;--indicator-bc-active: transparent;--indicator-icon: \"\\e9bc\";--indicator-icon-active: \"\\ea34\";--indicator-color: var(--coral);--indicator-color-active: var(--dark-gray);--accordion-radius: 4px;--accordion-border-active: 1px solid var(--gray);--accordion-shadow: 0 7px 10px 0 rgba(var(--rgb-black), 3%);--accordion-shadow-active: none;--panel-padding: 1.5rem;--panel-body-padding: 0 1.5rem 1.5rem}@media (max-width: 576px){.primary-accordion{--accordion-height: 110px;--panel-padding: 1.5rem 1rem;--panel-body-padding: 0 1rem 1rem}}.primary-accordion.main-approval{position:relative}.primary-accordion.main-approval:before{content:\"\";position:absolute;top:0;bottom:0;margin:2rem;width:1px;height:calc(100% - 2rem);background-color:var(--dark-gray);z-index:0}@media (max-width: 576px){.workflow-all-btns ds-button::part(base){--btn-padding: 0 .5rem;--btn-fs: .75rem;--btn-height: var(--default-size-sm);--btn-min-width: var(--default-size-sm)}}\n"], dependencies: [{ kind: "directive", type: MatAccordion, selector: "mat-accordion", inputs: ["hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FormSectionComponent, selector: "app-form-section", inputs: ["requestDetails", "section", "form", "lov", "isReadOnly", "isOpen", "isFinalApproval", "controllers", "segmentDynamicLoaderService", "sectionFormComponent", "sectionName"] }, { kind: "component", type: MainRequestDetailsComponent, selector: "app-main-request-details", inputs: ["section", "lov", "form"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }] });
125
125
  }
126
126
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: WorkflowSectionComponent, decorators: [{
127
127
  type: Component,
@@ -134,7 +134,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
134
134
  MainRequestDetailsComponent,
135
135
  NgForOf,
136
136
  FormsModule
137
- ], standalone: true, template: "<form #f=\"ngForm\" autocomplete=\"off\">\r\n <div *ngIf=\"form?.header?.status?.['key'] !== 'NEW' \" class=\"mt-n3\" id=\"accordion\" role=\"tablist\"\r\n aria-multiselectable=\"true\">\r\n <app-form-section\r\n *ngIf=\"form.sections?.[1]?.body?.details?.['stage0']?.['isStage0'] === 'true'\"\r\n class=\"app-form-section\"\r\n [segmentDynamicLoaderService]=\"segmentDynamicLoaderService\"\r\n [section]=\"form.sections[1]\"\r\n [lov]=\"form?.lovs\"\r\n [isReadOnly]=\"form.sections[1]?.header?.readOnly\"\r\n [form]=\"form\"\r\n [controllers]=\"sectionsController\"\r\n >\r\n </app-form-section>\r\n\r\n <app-main-request-details [lov]=\"form?.lovs\" [form]=\"form\" [section]=\"form.sections?.[0]\">\r\n <ng-container *ngTemplateOutlet=\"contentReqDet\"></ng-container>\r\n </app-main-request-details>\r\n\r\n <header class=\"header-line fs-12 fw-medium fc-dark-gray mt-sm-5 mt-4 mb-4\" *ngIf=\"form.sections?.length > 1 && !(form?.header?.formId?.includes('MEO') || form?.header?.formId?.includes('MEX'))\">\r\n {{i18n.translate('Approvals')}}\r\n </header>\r\n\r\n <mat-accordion class=\"primary-accordion main-approval\" [multi]=\"isExpandableFromBackend\">\r\n <ng-container *ngFor=\"let section of form.sections; let i = index\">\r\n <app-form-section *ngIf=\"i !== 0 && (!section?.body?.details?.['stage0']?.['isStage0'] || section?.body?.details?.['stage0']?.['isStage0'] === 'false')\" class=\"app-form-section\" [segmentDynamicLoaderService]=\"segmentDynamicLoaderService\" [section]=section [lov]=\"form?.lovs\"\r\n [isReadOnly]=\"section.header.readOnly\" [form]=\"form\" [controllers]=\"sectionsController\">\r\n </app-form-section>\r\n </ng-container>\r\n </mat-accordion>\r\n </div>\r\n\r\n <section *ngIf=\"form?.header?.status?.['key'] === 'NEW' \" class=\"{{contentClass}}\">\r\n <ng-container *ngTemplateOutlet=\"contentReqDet\"></ng-container>\r\n </section>\r\n\r\n\r\n</form>\r\n\r\n\r\n<ng-template #contentReqDet><ng-content></ng-content></ng-template>\r\n", styles: ["@charset \"UTF-8\";.primary-accordion{--accordion-height: auto;--indicator-bc: transparent;--indicator-bc-active: transparent;--indicator-icon: \"\\e9bc\";--indicator-icon-active: \"\\ea34\";--indicator-color: var(--coral);--indicator-color-active: var(--dark-gray);--accordion-radius: 4px;--accordion-border-active: 1px solid var(--gray);--accordion-shadow: 0 7px 10px 0 rgba(var(--rgb-black), 3%);--accordion-shadow-active: none;--panel-padding: 1.5rem;--panel-body-padding: 0 1.5rem 1.5rem}@media (max-width: 576px){.primary-accordion{--accordion-height: 110px;--panel-padding: 1.5rem 1rem;--panel-body-padding: 0 1rem 1rem}}.primary-accordion.main-approval{position:relative}.primary-accordion.main-approval:before{content:\"\";position:absolute;top:0;bottom:0;margin:2rem;width:1px;height:calc(100% - 2rem);background-color:var(--dark-gray);z-index:0}@media (max-width: 576px){.workflow-all-btns ds-button::part(base){--btn-padding: 0 .5rem;--btn-fs: .75rem;--btn-height: var(--default-size-sm);--btn-min-width: var(--default-size-sm)}}\n"] }]
137
+ ], standalone: true, template: "<form #f=\"ngForm\" autocomplete=\"off\">\r\n <div *ngIf=\"form?.header?.status?.key !== 'NEW' \" class=\"mt-n3\" id=\"accordion\" role=\"tablist\"\r\n aria-multiselectable=\"true\">\r\n <app-main-request-details [lov]=\"form?.lovs\" [form]=\"form\" [section]=\"sections[0]\">\r\n <ng-container *ngTemplateOutlet=\"contentReqDet\"></ng-container>\r\n </app-main-request-details>\r\n <header class=\"header-line fs-12 fw-medium fc-dark-gray mt-sm-5 mt-4 mb-4\" *ngIf=\"sections.length > 1\">\r\n {{i18n.translate('Approvals')}}\r\n </header>\r\n <mat-accordion class=\"primary-accordion main-approval\">\r\n <ng-container *ngFor=\"let section of sections; let i = index\">\r\n <app-form-section *ngIf=\"i !== 0\" class=\"app-form-section\" [segmentDynamicLoaderService]=\"segmentDynamicLoaderService\" [section]=section [lov]=\"form?.lovs\"\r\n [isReadOnly]=\"section.header.readOnly\" [form]=\"form\" [controllers]=\"sectionsController\">\r\n </app-form-section>\r\n </ng-container>\r\n </mat-accordion>\r\n </div>\r\n\r\n <section *ngIf=\"form?.header?.status?.key === 'NEW' \" class=\"default-box box-shadow p-4\">\r\n <ng-container *ngTemplateOutlet=\"contentReqDet\"></ng-container>\r\n </section>\r\n\r\n</form>\r\n\r\n\r\n<ng-template #contentReqDet><ng-content></ng-content></ng-template>\r\n", styles: ["@charset \"UTF-8\";.primary-accordion{--accordion-height: auto;--indicator-bc: transparent;--indicator-bc-active: transparent;--indicator-icon: \"\\e9bc\";--indicator-icon-active: \"\\ea34\";--indicator-color: var(--coral);--indicator-color-active: var(--dark-gray);--accordion-radius: 4px;--accordion-border-active: 1px solid var(--gray);--accordion-shadow: 0 7px 10px 0 rgba(var(--rgb-black), 3%);--accordion-shadow-active: none;--panel-padding: 1.5rem;--panel-body-padding: 0 1.5rem 1.5rem}@media (max-width: 576px){.primary-accordion{--accordion-height: 110px;--panel-padding: 1.5rem 1rem;--panel-body-padding: 0 1rem 1rem}}.primary-accordion.main-approval{position:relative}.primary-accordion.main-approval:before{content:\"\";position:absolute;top:0;bottom:0;margin:2rem;width:1px;height:calc(100% - 2rem);background-color:var(--dark-gray);z-index:0}@media (max-width: 576px){.workflow-all-btns ds-button::part(base){--btn-padding: 0 .5rem;--btn-fs: .75rem;--btn-height: var(--default-size-sm);--btn-min-width: var(--default-size-sm)}}\n"] }]
138
138
  }], ctorParameters: () => [{ type: i1.CoreI18nService }, { type: i0.ChangeDetectorRef }], propDecorators: { formStateObject: [{
139
139
  type: ViewChild,
140
140
  args: ['f']
@@ -159,4 +159,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
159
159
  }], sectionName: [{
160
160
  type: Input
161
161
  }] } });
162
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctc2VjdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9icG0tY29yZS9zcmMvbGliL2NvbXBvbmVudHMvYXBwLWNvbXBvbmVudC1zZWN0aW9ucy93b3JrZmxvdy1zZWN0aW9uL3dvcmtmbG93LXNlY3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL2FwcC1jb21wb25lbnQtc2VjdGlvbnMvd29ya2Zsb3ctc2VjdGlvbi93b3JrZmxvdy1zZWN0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBb0IsU0FBUyxFQUFFLHNCQUFzQixFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMzSCxPQUFPLEtBQUssU0FBUyxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxXQUFXLEVBQVMsTUFBTSxnQkFBZ0IsQ0FBQztBQUduRCxPQUFPLEVBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDekQsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFDNUUsT0FBTyxFQUFDLDJCQUEyQixFQUFDLE1BQU0sd0RBQXdELENBQUM7Ozs7QUFtQm5HLE1BQU0sT0FBTyx3QkFBd0I7SUFnQjFCO0lBQ0M7SUFoQmEsZUFBZSxDQUFTO0lBQ3JDLGdCQUFnQixHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBQzFELFFBQVEsQ0FBWTtJQUNwQixVQUFVLENBQVU7SUFDcEIsU0FBUyxDQUFVO0lBQ25CLElBQUks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SUFBSSxVQUFVO2dCQUN6QixJQUFJLEVBQUUsS0FBSyxJQUFJLFFBQVE7Z0JBQ3ZCLElBQUksRUFBRSxLQUFLLElBQUksUUFBUSxFQUN2QixDQUFDO2dCQUNELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1lBQzdCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7dUdBMUhVLHdCQUF3QjsyRkFBeEIsd0JBQXdCLHloQkMzQnJDLDBqRUF5Q0EsNmtDRHhCSSxZQUFZLCtJQUNaLGdCQUFnQixvSkFDaEIsSUFBSSw2RkFDSixvQkFBb0IsbVBBQ3BCLDJCQUEyQix5R0FDM0IsT0FBTyxrSEFDUCxXQUFXOzsyRkFJRix3QkFBd0I7a0JBakJwQyxTQUFTOytCQUNFLHNCQUFzQixXQUd2QixDQUFDLHNCQUFzQixDQUFDLFdBQ3hCO3dCQUNQLE9BQU87d0JBQ1AsWUFBWTt3QkFDWixnQkFBZ0I7d0JBQ2hCLElBQUk7d0JBQ0osb0JBQW9CO3dCQUNwQiwyQkFBMkI7d0JBQzNCLE9BQU87d0JBQ1AsV0FBVztxQkFDWixjQUNXLElBQUk7b0hBR08sZUFBZTtzQkFBckMsU0FBUzt1QkFBQyxHQUFHO2dCQUNKLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRSxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFFRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBRUcsMkJBQTJCO3NCQUFuQyxLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCAqIGFzIGNvbnN0YW50cyBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMnO1xyXG5pbXBvcnQge0Zvcm1zTW9kdWxlLCBOZ0Zvcm19IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtGb3JtLCBTZWN0aW9ufSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHtDb3JlSTE4blNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzJztcclxuaW1wb3J0IHtOZ0NsYXNzLCBOZ0Zvck9mLCBOZ0lmLCBOZ1RlbXBsYXRlT3V0bGV0fSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQge01hdEFjY29yZGlvbn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZXhwYW5zaW9uJztcclxuaW1wb3J0IHtGb3JtU2VjdGlvbkNvbXBvbmVudH0gZnJvbSAnLi4vZm9ybS1zZWN0aW9uL2Zvcm0tc2VjdGlvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQge01haW5SZXF1ZXN0RGV0YWlsc0NvbXBvbmVudH0gZnJvbSAnLi4vbWFpbi1yZXF1ZXN0LWRldGFpbHMvbWFpbi1yZXF1ZXN0LWRldGFpbHMuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXdvcmtmbG93LXNlY3Rpb24nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi93b3JrZmxvdy1zZWN0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi93b3JrZmxvdy1zZWN0aW9uLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIE5nQ2xhc3MsXHJcbiAgICBNYXRBY2NvcmRpb24sXHJcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxyXG4gICAgTmdJZixcclxuICAgIEZvcm1TZWN0aW9uQ29tcG9uZW50LFxyXG4gICAgTWFpblJlcXVlc3REZXRhaWxzQ29tcG9uZW50LFxyXG4gICAgTmdGb3JPZixcclxuICAgIEZvcm1zTW9kdWxlXHJcbiAgXSxcclxuICBzdGFuZGFsb25lOiB0cnVlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBXb3JrZmxvd1NlY3Rpb25Db21wb25lbnQge1xyXG4gIEBWaWV3Q2hpbGQoJ2YnKSBwdWJsaWMgZm9ybVN0YXRlT2JqZWN0OiBOZ0Zvcm07XHJcbiAgQE91dHB1dCgpIHNlY3Rpb25TdWJtaXR0ZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBJbnB1dCgpIHNlY3Rpb25zOiBTZWN0aW9uW107XHJcbiAgQElucHV0KCkgaXNSZWFkT25seTogYm9vbGVhbjtcclxuICBASW5wdXQoKSBpc0xvYWRpbmc6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgZm9ybTogRm9ybTtcclxuICBASW5wdXQoKSBjb250ZW50Q2xhc3MgPSAnZGVmYXVsdC1ib3ggYm94LXNoYWRvdyBwLTQnO1xyXG4gIHN0YXJ0ZWRMaXN0ZW5lciA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNlY3Rpb25zQ29udHJvbGxlcjogYW55O1xyXG4gIHNob3dCdXR0b25NZW51ID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2VnbWVudER5bmFtaWNMb2FkZXJTZXJ2aWNlID0gbnVsbDtcclxuICBASW5wdXQoKSBzZWN0aW9uRm9ybUNvbXBvbmVudCA9IG51bGw7XHJcbiAgQElucHV0KCkgc2VjdGlvbk5hbWUgPSBjb25zdGFudHMuU0VDVElPTl9JRF9SRVFVRVNUX0RFVEFJTFM7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGkxOG46IENvcmVJMThuU2VydmljZSxcclxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICkge1xyXG4vKiAgICBfbGlzdGVuZXJTZXJ2aWNlLmxpc3RlbigpLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3VsdD8uZnVuY3Rpb24gPT0gJ3Jlc2V0Rm9ybScpIHtcclxuICAgICAgICB0aGlzLnJlc2V0Rm9ybSgpO1xyXG4gICAgICB9IGVsc2UgaWYgKHJlc3VsdD8uZnVuY3Rpb24gPT0gJ29uU3VibWl0Jykge1xyXG4gICAgICAgIGNvbnN0IHNlY3Rpb25TaXplID0gdGhpcy5zZWN0aW9ucy5sZW5ndGggLSAxO1xyXG4gICAgICAgIGNvbnN0IHNlY3Rpb24gPSB0aGlzLnNlY3Rpb25zW3NlY3Rpb25TaXplXTtcclxuICAgICAgICBjb25zdCBkYXRhID0gcmVzdWx0LmRhdGEgPyByZXN1bHQuZGF0YSA6IHNlY3Rpb247XHJcbiAgICAgICAgdGhpcy5vblN1Ym1pdChyZXN1bHQ/LmFjdGlvbiwgZGF0YSk7XHJcbiAgICAgIH1cclxuICAgIH0pOyovXHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XHJcbiAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIGlmICh0aGlzLmZvcm1TdGF0ZU9iamVjdCAmJiB0aGlzLmZvcm0gJiYgIXRoaXMuc3RhcnRlZExpc3RlbmVyKSB7XHJcbiAgICAgIHRoaXMuZm9ybVN0YXRlT2JqZWN0LnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoXHJcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXHJcbiAgICAgICAgKGZvcm0pID0+IHtcclxuICAgICAgICAgIE9iamVjdC5rZXlzKGZvcm0pLmZvckVhY2goKGtleSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgdGhpcy5zZWN0aW9uc1t0aGlzLnNlY3Rpb25zLmxlbmd0aCAtIDFdLmJvZHkuZGV0YWlsc1trZXldICE9PVxyXG4gICAgICAgICAgICAgIGZvcm1ba2V5XSAmJlxyXG4gICAgICAgICAgICAgIGZvcm1ba2V5XSAhPT0gdW5kZWZpbmVkXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICB0aGlzLnNlY3Rpb25zW3RoaXMuc2VjdGlvbnMubGVuZ3RoIC0gMV0uYm9keS5kZXRhaWxzW2tleV0gPVxyXG4gICAgICAgICAgICAgICAgZm9ybVtrZXldO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLnNlY3Rpb25zQ29udHJvbGxlciA9IHRoaXMuZm9ybVN0YXRlT2JqZWN0LmNvbnRyb2xzO1xyXG4gICAgICB0aGlzLnN0YXJ0ZWRMaXN0ZW5lciA9IHRydWU7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNoZWNrQnV0dG9ucygpO1xyXG4gIH1cclxuXHJcbi8qICBpc1N1Ym1pdHRpbmcgPSB7fTtcclxuICBkaXNhYmxlQnV0dG9ucyA9IGZhbHNlOyovXHJcblxyXG4vKiAgb25TdWJtaXQoYWN0aW9uOiBhbnksIHNlY3Rpb246IGFueSkge1xyXG4gICAgY29uc3Qgc2VjdGlvblNpemUgPSB0aGlzLnNlY3Rpb25zLmxlbmd0aCAtIDE7XHJcbiAgICBsZXQgc2VjdGlvbkRlY2lzaW9uID0gdGhpcy5zZWN0aW9uc1tzZWN0aW9uU2l6ZV0uYm9keS5kZXRhaWxzLmRlY2lzaW9uO1xyXG4gICAgaWYgKHNlY3Rpb25EZWNpc2lvbiAmJiBhY3Rpb24gPT09ICdTVUJNSVQnKSB7XHJcbiAgICAgIHNlY3Rpb25EZWNpc2lvbiA9IHsga2V5OiBhY3Rpb24gfTtcclxuICAgIH1cclxuICAgIGlmIChzZWN0aW9uRGVjaXNpb24gJiYgYWN0aW9uICE9PSAnU1VCTUlUJykge1xyXG4gICAgICBzZWN0aW9uRGVjaXNpb24gPSB7IGtleTogYWN0aW9uIH07XHJcbiAgICB9XHJcbiAgICB0aGlzLnNlY3Rpb25zW3NlY3Rpb25TaXplXS5ib2R5LmRldGFpbHMuZGVjaXNpb24gPSBzZWN0aW9uRGVjaXNpb247XHJcbiAgICB0aGlzLnByb2ZpbGVSZXF1ZXN0ZXJTZXJ2aWNlLmlzU3VibWl0dGluZ1thY3Rpb25dID0gdHJ1ZTtcclxuICAgIHRoaXMucHJvZmlsZVJlcXVlc3RlclNlcnZpY2UuZGlzYWJsZUJ1dHRvbnMgPSB0cnVlO1xyXG4gICAgdGhpcy5zdGF0ZU1hY2hpbmVTZXJ2aWNlXHJcbiAgICAgIC5kaXNwYXRjaChcclxuICAgICAgICBjb25zdGFudHMuU1RBVEVfTUFDSElORV9BQ1RJT05fU1VCTUlUX0ZPUk0sXHJcbiAgICAgICAgc2VjdGlvbixcclxuICAgICAgICBhY3Rpb25cclxuICAgICAgKVxyXG4gICAgICAudGhlbigoZm9ybTogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5wcm9maWxlUmVxdWVzdGVyU2VydmljZS5pc1N1Ym1pdHRpbmdbYWN0aW9uXSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5wcm9maWxlUmVxdWVzdGVyU2VydmljZS5kaXNhYmxlQnV0dG9ucyA9IHRydWU7XHJcbiAgICAgICAgY29uc3Qgb2JqID0ge1xyXG4gICAgICAgICAgZm9ybTogZm9ybSxcclxuICAgICAgICAgIGFjdGlvbjogYWN0aW9uXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLnNlY3Rpb25TdWJtaXR0ZWQuZW1pdChvYmopO1xyXG4gICAgICB9KTtcclxuICB9Ki9cclxuXHJcbi8qICByZXNldEZvcm0oKSB7XHJcbiAgICB0aGlzLmZvcm1TdGF0ZU9iamVjdC5yZXNldCgpO1xyXG4gICAgdGhpcy5yZXNldFByb3BhZ2F0b3IucHJvcGFnYXRlKCk7XHJcbiAgfSovXHJcblxyXG4gIGdldCBpc0V4cGFuZGFibGVGcm9tQmFja2VuZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm0/LnNlY3Rpb25zPy5sZW5ndGggJiYgdGhpcy5mb3JtLnNlY3Rpb25zLnNvbWUoc2VjdGlvbiA9PiAnZXhwYW5kU3RhZ2UnIGluIHNlY3Rpb24/LmJvZHk/LmRldGFpbHMpO1xyXG4gIH1cclxuXHJcbiAgYnV0dG9uVHlwZXModHlwZSkge1xyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgJ0FQUFJPVkUnOlxyXG4gICAgICAgIHJldHVybiAnJztcclxuICAgICAgY2FzZSAnU0VOREJBQ0snOlxyXG4gICAgICAgIHJldHVybiAncmVkJztcclxuICAgICAgY2FzZSAnUkVKRUNUJzpcclxuICAgICAgICByZXR1cm4gJ3JlZCc7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hlY2tCdXR0b25zKCkge1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuZm9ybT8ubG92cz8uZGVjaXNpb24/Lm9wdGlvbnM7XHJcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkob3B0aW9ucykpIHJldHVybjtcclxuICAgIG9wdGlvbnMuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgaXRlbT8udmFsdWUgIT0gJ0FQUFJPVkUnICYmXHJcbiAgICAgICAgaXRlbT8udmFsdWUgIT0gJ1JFSkVDVCcgJiZcclxuICAgICAgICBpdGVtPy52YWx1ZSAhPSAnU0VOREJBQ0snICYmXHJcbiAgICAgICAgaXRlbT8udmFsdWUgIT0gJ1NVQk1JVCcgJiZcclxuICAgICAgICBpdGVtPy52YWx1ZSAhPSAnQ0FOQ0VMJ1xyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLnNob3dCdXR0b25NZW51ID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxmb3JtICNmPVwibmdGb3JtXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCI+XHJcbiAgPGRpdiAqbmdJZj1cImZvcm0/LmhlYWRlcj8uc3RhdHVzPy5bJ2tleSddICE9PSAnTkVXJyBcIiBjbGFzcz1cIm10LW4zXCIgaWQ9XCJhY2NvcmRpb25cIiByb2xlPVwidGFibGlzdFwiXHJcbiAgICBhcmlhLW11bHRpc2VsZWN0YWJsZT1cInRydWVcIj5cclxuICAgIDxhcHAtZm9ybS1zZWN0aW9uXHJcbiAgICAgICpuZ0lmPVwiZm9ybS5zZWN0aW9ucz8uWzFdPy5ib2R5Py5kZXRhaWxzPy5bJ3N0YWdlMCddPy5bJ2lzU3RhZ2UwJ10gPT09ICd0cnVlJ1wiXHJcbiAgICAgIGNsYXNzPVwiYXBwLWZvcm0tc2VjdGlvblwiXHJcbiAgICAgIFtzZWdtZW50RHluYW1pY0xvYWRlclNlcnZpY2VdPVwic2VnbWVudER5bmFtaWNMb2FkZXJTZXJ2aWNlXCJcclxuICAgICAgW3NlY3Rpb25dPVwiZm9ybS5zZWN0aW9uc1sxXVwiXHJcbiAgICAgIFtsb3ZdPVwiZm9ybT8ubG92c1wiXHJcbiAgICAgIFtpc1JlYWRPbmx5XT1cImZvcm0uc2VjdGlvbnNbMV0/LmhlYWRlcj8ucmVhZE9ubHlcIlxyXG4gICAgICBbZm9ybV09XCJmb3JtXCJcclxuICAgICAgW2NvbnRyb2xsZXJzXT1cInNlY3Rpb25zQ29udHJvbGxlclwiXHJcbiAgICAgID5cclxuICAgIDwvYXBwLWZvcm0tc2VjdGlvbj5cclxuXHJcbiAgICA8YXBwLW1haW4tcmVxdWVzdC1kZXRhaWxzIFtsb3ZdPVwiZm9ybT8ubG92c1wiIFtmb3JtXT1cImZvcm1cIiBbc2VjdGlvbl09XCJmb3JtLnNlY3Rpb25zPy5bMF1cIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRSZXFEZXRcIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvYXBwLW1haW4tcmVxdWVzdC1kZXRhaWxzPlxyXG5cclxuICAgIDxoZWFkZXIgY2xhc3M9XCJoZWFkZXItbGluZSBmcy0xMiBmdy1tZWRpdW0gZmMtZGFyay1ncmF5IG10LXNtLTUgbXQtNCBtYi00XCIgKm5nSWY9XCJmb3JtLnNlY3Rpb25zPy5sZW5ndGggPiAxICYmICEoZm9ybT8uaGVhZGVyPy5mb3JtSWQ/LmluY2x1ZGVzKCdNRU8nKSB8fCBmb3JtPy5oZWFkZXI/LmZvcm1JZD8uaW5jbHVkZXMoJ01FWCcpKVwiPlxyXG4gICAgICB7e2kxOG4udHJhbnNsYXRlKCdBcHByb3ZhbHMnKX19XHJcbiAgICA8L2hlYWRlcj5cclxuXHJcbiAgICA8bWF0LWFjY29yZGlvbiBjbGFzcz1cInByaW1hcnktYWNjb3JkaW9uIG1haW4tYXBwcm92YWxcIiBbbXVsdGldPVwiaXNFeHBhbmRhYmxlRnJvbUJhY2tlbmRcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc2VjdGlvbiBvZiBmb3JtLnNlY3Rpb25zOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgPGFwcC1mb3JtLXNlY3Rpb24gKm5nSWY9XCJpICE9PSAwICYmICghc2VjdGlvbj8uYm9keT8uZGV0YWlscz8uWydzdGFnZTAnXT8uWydpc1N0YWdlMCddIHx8IHNlY3Rpb24/LmJvZHk/LmRldGFpbHM/Llsnc3RhZ2UwJ10/LlsnaXNTdGFnZTAnXSA9PT0gJ2ZhbHNlJylcIiBjbGFzcz1cImFwcC1mb3JtLXNlY3Rpb25cIiBbc2VnbWVudER5bmFtaWNMb2FkZXJTZXJ2aWNlXT1cInNlZ21lbnREeW5hbWljTG9hZGVyU2VydmljZVwiIFtzZWN0aW9uXT1zZWN0aW9uIFtsb3ZdPVwiZm9ybT8ubG92c1wiXHJcbiAgICAgICAgICBbaXNSZWFkT25seV09XCJzZWN0aW9uLmhlYWRlci5yZWFkT25seVwiIFtmb3JtXT1cImZvcm1cIiBbY29udHJvbGxlcnNdPVwic2VjdGlvbnNDb250cm9sbGVyXCI+XHJcbiAgICAgICAgPC9hcHAtZm9ybS1zZWN0aW9uPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbWF0LWFjY29yZGlvbj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPHNlY3Rpb24gKm5nSWY9XCJmb3JtPy5oZWFkZXI/LnN0YXR1cz8uWydrZXknXSA9PT0gJ05FVycgXCIgY2xhc3M9XCJ7e2NvbnRlbnRDbGFzc319XCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFJlcURldFwiPjwvbmctY29udGFpbmVyPlxyXG4gIDwvc2VjdGlvbj5cclxuXHJcblxyXG48L2Zvcm0+XHJcblxyXG5cclxuPG5nLXRlbXBsYXRlICNjb250ZW50UmVxRGV0PjxuZy1jb250ZW50PjwvbmctY29udGVudD48L25nLXRlbXBsYXRlPlxyXG4iXX0=
162
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctc2VjdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9icG0tY29yZS9zcmMvbGliL2NvbXBvbmVudHMvYXBwLWNvbXBvbmVudC1zZWN0aW9ucy93b3JrZmxvdy1zZWN0aW9uL3dvcmtmbG93LXNlY3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL2FwcC1jb21wb25lbnQtc2VjdGlvbnMvd29ya2Zsb3ctc2VjdGlvbi93b3JrZmxvdy1zZWN0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBb0IsU0FBUyxFQUFFLHNCQUFzQixFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMzSCxPQUFPLEtBQUssU0FBUyxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxXQUFXLEVBQVMsTUFBTSxnQkFBZ0IsQ0FBQztBQUduRCxPQUFPLEVBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDekQsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFDNUUsT0FBTyxFQUFDLDJCQUEyQixFQUFDLE1BQU0sd0RBQXdELENBQUM7Ozs7QUFtQm5HLE1BQU0sT0FBTyx3QkFBd0I7SUFnQjFCO0lBQ0M7SUFoQmEsZUFBZSxDQUFTO0lBQ3JDLGdCQUFnQixHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBQzFELFFBQVEsQ0FBWTtJQUNwQixVQUFVLENBQVU7SUFDcEIsU0FBUyxDQUFVO0lBQ25CLElBQUks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SUFBSSxVQUFVO2dCQUN6QixJQUFJLEVBQUUsS0FBSyxJQUFJLFFBQVE7Z0JBQ3ZCLElBQUksRUFBRSxLQUFLLElBQUksUUFBUSxFQUN2QixDQUFDO2dCQUNELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1lBQzdCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7dUdBMUhVLHdCQUF3QjsyRkFBeEIsd0JBQXdCLHloQkMzQnJDLDQxQ0EwQkEsNmtDRFRJLFlBQVksK0lBQ1osZ0JBQWdCLG9KQUNoQixJQUFJLDZGQUNKLG9CQUFvQixtUEFDcEIsMkJBQTJCLHlHQUMzQixPQUFPLGtIQUNQLFdBQVc7OzJGQUlGLHdCQUF3QjtrQkFqQnBDLFNBQVM7K0JBQ0Usc0JBQXNCLFdBR3ZCLENBQUMsc0JBQXNCLENBQUMsV0FDeEI7d0JBQ1AsT0FBTzt3QkFDUCxZQUFZO3dCQUNaLGdCQUFnQjt3QkFDaEIsSUFBSTt3QkFDSixvQkFBb0I7d0JBQ3BCLDJCQUEyQjt3QkFDM0IsT0FBTzt3QkFDUCxXQUFXO3FCQUNaLGNBQ1csSUFBSTtvSEFHTyxlQUFlO3NCQUFyQyxTQUFTO3VCQUFDLEdBQUc7Z0JBQ0osZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUNFLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFFRywyQkFBMkI7c0JBQW5DLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0ICogYXMgY29uc3RhbnRzIGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7Rm9ybXNNb2R1bGUsIE5nRm9ybX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQge0Zvcm0sIFNlY3Rpb259IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQge0NvcmVJMThuU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xyXG5pbXBvcnQge05nQ2xhc3MsIE5nRm9yT2YsIE5nSWYsIE5nVGVtcGxhdGVPdXRsZXR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7TWF0QWNjb3JkaW9ufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9leHBhbnNpb24nO1xyXG5pbXBvcnQge0Zvcm1TZWN0aW9uQ29tcG9uZW50fSBmcm9tICcuLi9mb3JtLXNlY3Rpb24vZm9ybS1zZWN0aW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7TWFpblJlcXVlc3REZXRhaWxzQ29tcG9uZW50fSBmcm9tICcuLi9tYWluLXJlcXVlc3QtZGV0YWlscy9tYWluLXJlcXVlc3QtZGV0YWlscy5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtd29ya2Zsb3ctc2VjdGlvbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3dvcmtmbG93LXNlY3Rpb24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3dvcmtmbG93LXNlY3Rpb24uY29tcG9uZW50LnNjc3MnXSxcclxuICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgTmdDbGFzcyxcclxuICAgIE1hdEFjY29yZGlvbixcclxuICAgIE5nVGVtcGxhdGVPdXRsZXQsXHJcbiAgICBOZ0lmLFxyXG4gICAgRm9ybVNlY3Rpb25Db21wb25lbnQsXHJcbiAgICBNYWluUmVxdWVzdERldGFpbHNDb21wb25lbnQsXHJcbiAgICBOZ0Zvck9mLFxyXG4gICAgRm9ybXNNb2R1bGVcclxuICBdLFxyXG4gIHN0YW5kYWxvbmU6IHRydWVcclxufSlcclxuZXhwb3J0IGNsYXNzIFdvcmtmbG93U2VjdGlvbkNvbXBvbmVudCB7XHJcbiAgQFZpZXdDaGlsZCgnZicpIHB1YmxpYyBmb3JtU3RhdGVPYmplY3Q6IE5nRm9ybTtcclxuICBAT3V0cHV0KCkgc2VjdGlvblN1Ym1pdHRlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQElucHV0KCkgc2VjdGlvbnM6IFNlY3Rpb25bXTtcclxuICBASW5wdXQoKSBpc1JlYWRPbmx5OiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGlzTG9hZGluZzogYm9vbGVhbjtcclxuICBASW5wdXQoKSBmb3JtOiBGb3JtO1xyXG4gIEBJbnB1dCgpIGNvbnRlbnRDbGFzcyA9ICdkZWZhdWx0LWJveCBib3gtc2hhZG93IHAtNCc7XHJcbiAgc3RhcnRlZExpc3RlbmVyID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2VjdGlvbnNDb250cm9sbGVyOiBhbnk7XHJcbiAgc2hvd0J1dHRvbk1lbnUgPSBmYWxzZTtcclxuICBASW5wdXQoKSBzZWdtZW50RHluYW1pY0xvYWRlclNlcnZpY2UgPSBudWxsO1xyXG4gIEBJbnB1dCgpIHNlY3Rpb25Gb3JtQ29tcG9uZW50ID0gbnVsbDtcclxuICBASW5wdXQoKSBzZWN0aW9uTmFtZSA9IGNvbnN0YW50cy5TRUNUSU9OX0lEX1JFUVVFU1RfREVUQUlMUztcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgaTE4bjogQ29yZUkxOG5TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgKSB7XHJcbi8qICAgIF9saXN0ZW5lclNlcnZpY2UubGlzdGVuKCkuc3Vic2NyaWJlKChyZXN1bHQ6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzdWx0Py5mdW5jdGlvbiA9PSAncmVzZXRGb3JtJykge1xyXG4gICAgICAgIHRoaXMucmVzZXRGb3JtKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAocmVzdWx0Py5mdW5jdGlvbiA9PSAnb25TdWJtaXQnKSB7XHJcbiAgICAgICAgY29uc3Qgc2VjdGlvblNpemUgPSB0aGlzLnNlY3Rpb25zLmxlbmd0aCAtIDE7XHJcbiAgICAgICAgY29uc3Qgc2VjdGlvbiA9IHRoaXMuc2VjdGlvbnNbc2VjdGlvblNpemVdO1xyXG4gICAgICAgIGNvbnN0IGRhdGEgPSByZXN1bHQuZGF0YSA/IHJlc3VsdC5kYXRhIDogc2VjdGlvbjtcclxuICAgICAgICB0aGlzLm9uU3VibWl0KHJlc3VsdD8uYWN0aW9uLCBkYXRhKTtcclxuICAgICAgfVxyXG4gICAgfSk7Ki9cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpIHtcclxuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgaWYgKHRoaXMuZm9ybVN0YXRlT2JqZWN0ICYmIHRoaXMuZm9ybSAmJiAhdGhpcy5zdGFydGVkTGlzdGVuZXIpIHtcclxuICAgICAgdGhpcy5mb3JtU3RhdGVPYmplY3QudmFsdWVDaGFuZ2VzLnN1YnNjcmliZShcclxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cclxuICAgICAgICAoZm9ybSkgPT4ge1xyXG4gICAgICAgICAgT2JqZWN0LmtleXMoZm9ybSkuZm9yRWFjaCgoa2V5KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICB0aGlzLnNlY3Rpb25zW3RoaXMuc2VjdGlvbnMubGVuZ3RoIC0gMV0uYm9keS5kZXRhaWxzW2tleV0gIT09XHJcbiAgICAgICAgICAgICAgZm9ybVtrZXldICYmXHJcbiAgICAgICAgICAgICAgZm9ybVtrZXldICE9PSB1bmRlZmluZWRcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgIHRoaXMuc2VjdGlvbnNbdGhpcy5zZWN0aW9ucy5sZW5ndGggLSAxXS5ib2R5LmRldGFpbHNba2V5XSA9XHJcbiAgICAgICAgICAgICAgICBmb3JtW2tleV07XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuc2VjdGlvbnNDb250cm9sbGVyID0gdGhpcy5mb3JtU3RhdGVPYmplY3QuY29udHJvbHM7XHJcbiAgICAgIHRoaXMuc3RhcnRlZExpc3RlbmVyID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHRoaXMuY2hlY2tCdXR0b25zKCk7XHJcbiAgfVxyXG5cclxuLyogIGlzU3VibWl0dGluZyA9IHt9O1xyXG4gIGRpc2FibGVCdXR0b25zID0gZmFsc2U7Ki9cclxuXHJcbi8qICBvblN1Ym1pdChhY3Rpb246IGFueSwgc2VjdGlvbjogYW55KSB7XHJcbiAgICBjb25zdCBzZWN0aW9uU2l6ZSA9IHRoaXMuc2VjdGlvbnMubGVuZ3RoIC0gMTtcclxuICAgIGxldCBzZWN0aW9uRGVjaXNpb24gPSB0aGlzLnNlY3Rpb25zW3NlY3Rpb25TaXplXS5ib2R5LmRldGFpbHMuZGVjaXNpb247XHJcbiAgICBpZiAoc2VjdGlvbkRlY2lzaW9uICYmIGFjdGlvbiA9PT0gJ1NVQk1JVCcpIHtcclxuICAgICAgc2VjdGlvbkRlY2lzaW9uID0geyBrZXk6IGFjdGlvbiB9O1xyXG4gICAgfVxyXG4gICAgaWYgKHNlY3Rpb25EZWNpc2lvbiAmJiBhY3Rpb24gIT09ICdTVUJNSVQnKSB7XHJcbiAgICAgIHNlY3Rpb25EZWNpc2lvbiA9IHsga2V5OiBhY3Rpb24gfTtcclxuICAgIH1cclxuICAgIHRoaXMuc2VjdGlvbnNbc2VjdGlvblNpemVdLmJvZHkuZGV0YWlscy5kZWNpc2lvbiA9IHNlY3Rpb25EZWNpc2lvbjtcclxuICAgIHRoaXMucHJvZmlsZVJlcXVlc3RlclNlcnZpY2UuaXNTdWJtaXR0aW5nW2FjdGlvbl0gPSB0cnVlO1xyXG4gICAgdGhpcy5wcm9maWxlUmVxdWVzdGVyU2VydmljZS5kaXNhYmxlQnV0dG9ucyA9IHRydWU7XHJcbiAgICB0aGlzLnN0YXRlTWFjaGluZVNlcnZpY2VcclxuICAgICAgLmRpc3BhdGNoKFxyXG4gICAgICAgIGNvbnN0YW50cy5TVEFURV9NQUNISU5FX0FDVElPTl9TVUJNSVRfRk9STSxcclxuICAgICAgICBzZWN0aW9uLFxyXG4gICAgICAgIGFjdGlvblxyXG4gICAgICApXHJcbiAgICAgIC50aGVuKChmb3JtOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnByb2ZpbGVSZXF1ZXN0ZXJTZXJ2aWNlLmlzU3VibWl0dGluZ1thY3Rpb25dID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnByb2ZpbGVSZXF1ZXN0ZXJTZXJ2aWNlLmRpc2FibGVCdXR0b25zID0gdHJ1ZTtcclxuICAgICAgICBjb25zdCBvYmogPSB7XHJcbiAgICAgICAgICBmb3JtOiBmb3JtLFxyXG4gICAgICAgICAgYWN0aW9uOiBhY3Rpb25cclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuc2VjdGlvblN1Ym1pdHRlZC5lbWl0KG9iaik7XHJcbiAgICAgIH0pO1xyXG4gIH0qL1xyXG5cclxuLyogIHJlc2V0Rm9ybSgpIHtcclxuICAgIHRoaXMuZm9ybVN0YXRlT2JqZWN0LnJlc2V0KCk7XHJcbiAgICB0aGlzLnJlc2V0UHJvcGFnYXRvci5wcm9wYWdhdGUoKTtcclxuICB9Ki9cclxuXHJcbiAgZ2V0IGlzRXhwYW5kYWJsZUZyb21CYWNrZW5kKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybT8uc2VjdGlvbnM/Lmxlbmd0aCAmJiB0aGlzLmZvcm0uc2VjdGlvbnMuc29tZShzZWN0aW9uID0+ICdleHBhbmRTdGFnZScgaW4gc2VjdGlvbj8uYm9keT8uZGV0YWlscyk7XHJcbiAgfVxyXG5cclxuICBidXR0b25UeXBlcyh0eXBlKSB7XHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgY2FzZSAnQVBQUk9WRSc6XHJcbiAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICBjYXNlICdTRU5EQkFDSyc6XHJcbiAgICAgICAgcmV0dXJuICdyZWQnO1xyXG4gICAgICBjYXNlICdSRUpFQ1QnOlxyXG4gICAgICAgIHJldHVybiAncmVkJztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGVja0J1dHRvbnMoKSB7XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5mb3JtPy5sb3ZzPy5kZWNpc2lvbj8ub3B0aW9ucztcclxuICAgIGlmICghQXJyYXkuaXNBcnJheShvcHRpb25zKSkgcmV0dXJuO1xyXG4gICAgb3B0aW9ucy5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICBpdGVtPy52YWx1ZSAhPSAnQVBQUk9WRScgJiZcclxuICAgICAgICBpdGVtPy52YWx1ZSAhPSAnUkVKRUNUJyAmJlxyXG4gICAgICAgIGl0ZW0/LnZhbHVlICE9ICdTRU5EQkFDSycgJiZcclxuICAgICAgICBpdGVtPy52YWx1ZSAhPSAnU1VCTUlUJyAmJlxyXG4gICAgICAgIGl0ZW0/LnZhbHVlICE9ICdDQU5DRUwnXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuc2hvd0J1dHRvbk1lbnUgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPGZvcm0gI2Y9XCJuZ0Zvcm1cIiBhdXRvY29tcGxldGU9XCJvZmZcIj5cclxuICA8ZGl2ICpuZ0lmPVwiZm9ybT8uaGVhZGVyPy5zdGF0dXM/LmtleSAhPT0gJ05FVycgXCIgY2xhc3M9XCJtdC1uM1wiIGlkPVwiYWNjb3JkaW9uXCIgcm9sZT1cInRhYmxpc3RcIlxyXG4gICAgYXJpYS1tdWx0aXNlbGVjdGFibGU9XCJ0cnVlXCI+XHJcbiAgICA8YXBwLW1haW4tcmVxdWVzdC1kZXRhaWxzIFtsb3ZdPVwiZm9ybT8ubG92c1wiIFtmb3JtXT1cImZvcm1cIiBbc2VjdGlvbl09XCJzZWN0aW9uc1swXVwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFJlcURldFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9hcHAtbWFpbi1yZXF1ZXN0LWRldGFpbHM+XHJcbiAgICA8aGVhZGVyIGNsYXNzPVwiaGVhZGVyLWxpbmUgZnMtMTIgZnctbWVkaXVtIGZjLWRhcmstZ3JheSBtdC1zbS01IG10LTQgbWItNFwiICpuZ0lmPVwic2VjdGlvbnMubGVuZ3RoID4gMVwiPlxyXG4gICAgICB7e2kxOG4udHJhbnNsYXRlKCdBcHByb3ZhbHMnKX19XHJcbiAgICA8L2hlYWRlcj5cclxuICAgIDxtYXQtYWNjb3JkaW9uIGNsYXNzPVwicHJpbWFyeS1hY2NvcmRpb24gbWFpbi1hcHByb3ZhbFwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzZWN0aW9uIG9mIHNlY3Rpb25zOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgPGFwcC1mb3JtLXNlY3Rpb24gKm5nSWY9XCJpICE9PSAwXCIgY2xhc3M9XCJhcHAtZm9ybS1zZWN0aW9uXCIgW3NlZ21lbnREeW5hbWljTG9hZGVyU2VydmljZV09XCJzZWdtZW50RHluYW1pY0xvYWRlclNlcnZpY2VcIiBbc2VjdGlvbl09c2VjdGlvbiBbbG92XT1cImZvcm0/LmxvdnNcIlxyXG4gICAgICAgICAgW2lzUmVhZE9ubHldPVwic2VjdGlvbi5oZWFkZXIucmVhZE9ubHlcIiBbZm9ybV09XCJmb3JtXCIgW2NvbnRyb2xsZXJzXT1cInNlY3Rpb25zQ29udHJvbGxlclwiPlxyXG4gICAgICAgIDwvYXBwLWZvcm0tc2VjdGlvbj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L21hdC1hY2NvcmRpb24+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxzZWN0aW9uICpuZ0lmPVwiZm9ybT8uaGVhZGVyPy5zdGF0dXM/LmtleSA9PT0gJ05FVycgXCIgY2xhc3M9XCJkZWZhdWx0LWJveCBib3gtc2hhZG93IHAtNFwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRSZXFEZXRcIj48L25nLWNvbnRhaW5lcj5cclxuICA8L3NlY3Rpb24+XHJcblxyXG48L2Zvcm0+XHJcblxyXG5cclxuPG5nLXRlbXBsYXRlICNjb250ZW50UmVxRGV0PjxuZy1jb250ZW50PjwvbmctY29udGVudD48L25nLXRlbXBsYXRlPlxyXG4iXX0=
@@ -241,4 +241,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
241
241
  type: ViewChild,
242
242
  args: [MatDatepicker]
243
243
  }] } });
244
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzL2Zvcm0tZmllbGQvZGF0ZS1waWNrZXIvZGF0ZS1waWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzL2Zvcm0tZmllbGQvZGF0ZS1waWNrZXIvZGF0ZS1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sNENBQTRDLENBQUM7QUFDekUsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQWdDLHNCQUFzQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3RJLE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDdEYsT0FBTyxFQUFDLCtCQUErQixFQUFFLGlCQUFpQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDcEcsT0FBTyxFQUFDLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ3BHLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDMUQsT0FBTyxFQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVB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LFNBQVM7c0JBQWxCLE1BQU07Z0JBRUUsS0FBSztzQkFBYixLQUFLO2dCQUdHLE9BQU87c0JBQWYsS0FBSztnQkFFQyxhQUFhO3NCQURuQixTQUFTO3VCQUFDLFNBQVM7Z0JBRVgsT0FBTztzQkFBZixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFFTyxNQUFNO3NCQUFsQixLQUFLO2dCQU1vQixVQUFVO3NCQUFuQyxTQUFTO3VCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Zvcm1Db250cm9sLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0b3JzfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7QmFzZUNvbXBvbmVudH0gZnJvbSAnLi4vYmFzZS1jb21wb25lbnQvYmFzZS1jb21wb25lbnQuY29tcG9uZW50JztcclxuaW1wb3J0IHtDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgVmlld0NoaWxkLCBTaW1wbGVDaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtNQVRfREFURV9GT1JNQVRTLCBEYXRlQWRhcHRlciwgTUFUX0RBVEVfTE9DQUxFfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcclxuaW1wb3J0IHtNQVRfTU9NRU5UX0RBVEVfQURBUFRFUl9PUFRJT05TLCBNb21lbnREYXRlQWRhcHRlcn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwtbW9tZW50LWFkYXB0ZXInO1xyXG5pbXBvcnQge01hdERhdGVwaWNrZXIsIE1hdERhdGVwaWNrZXJJbnB1dCwgTWF0RGF0ZXBpY2tlclRvZ2dsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XHJcbmltcG9ydCB7Q3VzdG9tRGF0ZUZvcm1hdH0gZnJvbSAnLi9kYXRlLWZvcm1hdCc7XHJcbmltcG9ydCB7TWF0Rm9ybUZpZWxkfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZFwiO1xyXG5pbXBvcnQge05nQ2xhc3MsIE5nSWZ9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHtJbmZvSXRlbUNvbXBvbmVudH0gZnJvbSBcIi4uL2luZm8taXRlbS9pbmZvLWl0ZW0uY29tcG9uZW50XCI7XHJcbmltcG9ydCAqIGFzIG1vbWVudCBmcm9tICdtb21lbnQnO1xyXG5cclxuXHJcbmNvbnN0IFlFQVJfT05MWV9GT1JNQVQgPSB7XHJcbiAgcGFyc2U6IHtcclxuICAgIGRhdGVJbnB1dDogJ1lZWVknLFxyXG4gIH0sXHJcbiAgZGlzcGxheToge1xyXG4gICAgZGF0ZUlucHV0OiAnWVlZWScsXHJcbiAgICBtb250aFllYXJMYWJlbDogJ1lZWVknLFxyXG4gICAgZGF0ZUExMXlMYWJlbDogJ0xMJyxcclxuICAgIG1vbnRoWWVhckExMXlMYWJlbDogJ1lZWVknLFxyXG4gIH0sXHJcbn07XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtZGF0ZXBpY2tlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9kYXRlLXBpY2tlci5jb21wb25lbnQuc2NzcyddLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBEYXRlQWRhcHRlcixcclxuICAgICAgdXNlQ2xhc3M6IE1vbWVudERhdGVBZGFwdGVyLFxyXG4gICAgICBkZXBzOiBbTUFUX0RBVEVfTE9DQUxFLCBNQVRfTU9NRU5UX0RBVEVfQURBUFRFUl9PUFRJT05TXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE1BVF9EQVRFX0ZPUk1BVFMsXHJcbiAgICAgIHVzZUNsYXNzOiBDdXN0b21EYXRlRm9ybWF0XHJcbiAgICB9LFxyXG4gIF0sXHJcblxyXG5cclxuICBpbXBvcnRzOiBbXHJcbiAgICBNYXRGb3JtRmllbGQsXHJcbiAgICBNYXREYXRlcGlja2VyVG9nZ2xlLFxyXG4gICAgTWF0RGF0ZXBpY2tlcixcclxuICAgIE1hdERhdGVwaWNrZXJJbnB1dCxcclxuICAgIE5nQ2xhc3MsXHJcbiAgICBOZ0lmLFxyXG4gICAgSW5mb0l0ZW1Db21wb25lbnQsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGF0ZVBpY2tlckNvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcclxuICBkYXRlID0gbmV3IEZvcm1Db250cm9sKCk7XHJcbiAgQElucHV0KCkgdG9vbHRpcCE6IHN0cmluZztcclxuICBASW5wdXQoKSBjbGFzc05hbWUhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgY2FsZW5kYXJUeXBlITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHNob3dMYWJlbCA9IHRydWU7XHJcbiAgQElucHV0KCkgeWVhck9ubHk6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgcmVzZXREYXRlID0gZmFsc2U7XHJcbiAgQE91dHB1dCgpIGRhdGVWYWx1ZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgc2hvd0lzbGFtaWMgPSBmYWxzZVxyXG4gIEBJbnB1dCgpIGVycm9yITogc3RyaW5nO1xyXG4gIG1pbkRhdGVWYWx1ZTogYW55XHJcbiAgbWF4RGF0ZVZhbHVlOiBhbnlcclxuICBASW5wdXQoKSBtYXhEYXRlOiBzdHJpbmc7XHJcbiAgQFZpZXdDaGlsZCgnZGVmYXVsdCcpXHJcbiAgcHVibGljIGRhdGVwaWNrZXJPYmohOiBhbnk7XHJcbiAgQElucHV0KCkgbWluRGF0ZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGN1c3RvbU1heERhdGU6IGFueVxyXG4gIEBJbnB1dCgpIGN1c3RvbU1pbkRhdGU6IGFueVxyXG5cclxuICBASW5wdXQoKSBzZXQgZm9ybWF0KF9mb3JtYXQ6IHN0cmluZykge1xyXG4gICAgaWYgKF9mb3JtYXQpIHtcclxuICAgICAgdGhpcy5kYXRlRm9ybWF0LnVwZGF0ZURhdGVGb3JtYXQoe2RhdGVJbnB1dDogX2Zvcm1hdH0sIHtkYXRlSW5wdXQ6IF9mb3JtYXR9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBWaWV3Q2hpbGQoTWF0RGF0ZXBpY2tlcikgZGF0ZXBpY2tlcjogTWF0RGF0ZXBpY2tlcjxhbnk+O1xyXG4gIGZsb2F0TGFiZWw6IGFueSA9ICdhdXRvJztcclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmlzUmVhZE9ubHkgJiYgdGhpcy55ZWFyT25seSkgdGhpcy5hY3RpdmF0ZVllYXJPbmx5TW9kZSgpO1xyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgZ2V0IHNob3VsZFNldERhdGVGb3JtYXRlSW5BcigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG5cclxuICAgIC8vIHRoaXMucmVzZXRQcm9wYWdhdG9yLnN1YnNjcmliZSh0aGlzLCB0aGlzLnJlc2V0RGF0ZURhdGEpO1xyXG4gICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpO1xyXG4gICAgY29uc3QgY3VycmVudFllYXIgPSB0b2RheS5nZXRGdWxsWWVhcigpO1xyXG4gICAgY29uc3QgY3VycmVudE1vbnRoID0gdG9kYXkuZ2V0TW9udGgoKTtcclxuICAgIGNvbnN0IGN1cnJlbnREYXkgPSB0b2RheS5nZXREYXRlKCk7XHJcbiAgICBpZiAodGhpcy5taW5EYXRlKSB7XHJcbiAgICAgIGlmICh0aGlzLm1pbkRhdGUgPT0gJ3RvZGF5Jykge1xyXG4gICAgICAgIHRoaXMubWluRGF0ZVZhbHVlID0gbmV3IERhdGUoY3VycmVudFllYXIsIGN1cnJlbnRNb250aCwgY3VycmVudERheSlcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLm1heERhdGUpIHtcclxuICAgICAgaWYgKHRoaXMubWF4RGF0ZSA9PSAndG9kYXknKSB7XHJcbiAgICAgICAgdGhpcy5tYXhEYXRlVmFsdWUgPSBuZXcgRGF0ZShjdXJyZW50WWVhciwgY3VycmVudE1vbnRoLCBjdXJyZW50RGF5KVxyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMubWF4RGF0ZSA9PSAnb25lWWVhcicpIHtcclxuICAgICAgICB0aGlzLm1heERhdGVWYWx1ZSA9IG5ldyBEYXRlKGN1cnJlbnRZZWFyICsgMSwgY3VycmVudE1vbnRoLCBjdXJyZW50RGF5IC0gMSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodGhpcy5jdXN0b21NYXhEYXRlKSB7XHJcbiAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh0aGlzLmN1c3RvbU1heERhdGUpXHJcbiAgICAgIHRoaXMubWF4RGF0ZVZhbHVlID0gbmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCksIGRhdGUuZ2V0RGF0ZSgpKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5maWVsZCkge1xyXG4gICAgICB0aGlzLmRhdGUuc2V0VmFsdWUodGhpcy5maWVsZCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5yZXF1aXJlZCkgdGhpcy5kYXRlLmFkZFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZClcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGlmICh0aGlzLnJlc2V0RGF0ZSAmJiB0aGlzLmZpZWxkID09IG51bGwpIHtcclxuICAgICAgdGhpcy5maWVsZCA9ICcnO1xyXG4gICAgICB0aGlzLmRhdGUuc2V0VmFsdWUodGhpcy5maWVsZClcclxuICAgICAgdGhpcy5lbWl0ZWRWYWx1ZS5lbWl0KHRoaXMuZmllbGQpO1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXMpIHtcclxuICAgICAgaWYgKHRoaXMuY3VzdG9tTWF4RGF0ZSkge1xyXG4gICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh0aGlzLmN1c3RvbU1heERhdGUpO1xyXG4gICAgICAgIHRoaXMubWF4RGF0ZVZhbHVlID0gbmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCksIGRhdGUuZ2V0RGF0ZSgpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXMgJiYgIXRoaXMuaXNSZWFkT25seSkgeyAvLyBhZGQgbWluIGRhdGUgdmFsdWUgZm9yIDIgZGF0ZXMgdmFsaWRhdGlvbnNcclxuICAgICAgaWYgKHRoaXMuY3VzdG9tTWluRGF0ZSkge1xyXG4gICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh0aGlzLmN1c3RvbU1pbkRhdGUpO1xyXG4gICAgICAgIHRoaXMubWluRGF0ZVZhbHVlID0gbmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCksIGRhdGUuZ2V0RGF0ZSgpICsgMSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlc2V0RGF0ZURhdGEoKSB7XHJcbiAgICBpZiAoIXRoaXMuaXNSZWFkT25seSkge1xyXG4gICAgICB0aGlzLmZpZWxkID0gJyc7XHJcbiAgICAgIHRoaXMuZGF0ZS5zZXRWYWx1ZSh0aGlzLmZpZWxkKVxyXG4gICAgICB0aGlzLmVtaXRlZFZhbHVlLmVtaXQodGhpcy5maWVsZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmb2N1c1BpY2tlcihwaWNrZXIpIHtcclxuICAgIHBpY2tlci5vcGVuKCk7XHJcbiAgfVxyXG5cclxuICBvbkZvY3VzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kYXRlcGlja2VyT2JqLnNob3coKTtcclxuICB9XHJcblxyXG4gIGRhdGVDaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgIGlmIChldmVudD8udmFsdWUpIHtcclxuICAgICAgICBsZXQgaW5wdXRWYWx1ZVxyXG4gICAgICAgIGNvbnN0IGV2ZW50RGF0ZSA9IG1vbWVudChldmVudC52YWx1ZSk7XHJcbiAgICAgICAgY29uc3QgbWluRGF0ZSA9IG1vbWVudCh0aGlzLm1pbkRhdGVWYWx1ZSk7XHJcbiAgICAgICAgY29uc3QgbWF4RGF0ZSA9IG1vbWVudCh0aGlzLm1heERhdGVWYWx1ZSk7XHJcbiAgICAgICAgaWYgKGV2ZW50RGF0ZSA8IG1pbkRhdGUgJiYgdGhpcy5taW5EYXRlVmFsdWUpIHtcclxuICAgICAgICAgIHRoaXMuZmllbGQgPSAnJ1xyXG4gICAgICAgICAgdGhpcy5kYXRlcGlja2VyT2JqLnZhbHVlID0gJydcclxuICAgICAgICAgIGlucHV0VmFsdWUgPSAnJ1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnREYXRlID4gbWF4RGF0ZSAmJiB0aGlzLm1heERhdGVWYWx1ZSkge1xyXG4gICAgICAgICAgdGhpcy5maWVsZCA9ICcnXHJcbiAgICAgICAgICB0aGlzLmRhdGVwaWNrZXJPYmoudmFsdWUgPSAnJ1xyXG4gICAgICAgICAgaW5wdXRWYWx1ZSA9ICcnXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlucHV0VmFsdWUgPSBtb21lbnQoZXZlbnQudmFsdWUpLmxvY2FsZSgnZW4tVVMnKS5mb3JtYXQoXCJZWVlZLU1NLUREVEhIOm1tOnNzLlNTU1pcIik7XHJcbiAgICAgICAgICB0aGlzLmVtaXRlZFZhbHVlLmVtaXQoaW5wdXRWYWx1ZSlcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5maWVsZCA9IGlucHV0VmFsdWVcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNlY3Rpb24uYm9keS5kZXRhaWxzW3RoaXMubmFtZV0gPSAnJ1xyXG5cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xlYXJEYXRlVmFsdWUoZXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMucmVzZXREYXRlRGF0YSgpO1xyXG4gICAgZXZlbnQ/LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBldmVudD8uc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgfVxyXG5cclxuICByZW1vdmVEYXRlKCkge1xyXG4gICAgdGhpcy5maWVsZCA9ICcnXHJcbiAgICAvLyB0aGlzLmNvbnRyb2xsZXIuc2V0VmFsdWUoJycpXHJcbiAgfVxyXG5cclxuICB0b2dnbGVJc2xhbWljQ2FsKCkge1xyXG4gICAgdGhpcy5zaG93SXNsYW1pYyA9ICF0aGlzLnNob3dJc2xhbWljXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFjdGl2YXRlWWVhck9ubHlNb2RlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kYXRlRm9ybWF0LnVwZGF0ZURhdGVGb3JtYXQoWUVBUl9PTkxZX0ZPUk1BVC5wYXJzZSwgWUVBUl9PTkxZX0ZPUk1BVC5kaXNwbGF5KTtcclxuICAgIGlmICh0aGlzLmZpZWxkKSB7XHJcbiAgICAgIHRoaXMuZGF0ZS5zZXRWYWx1ZShtb21lbnQodGhpcy5maWVsZCkuZm9ybWF0KCd5eXl5JykpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5kYXRlcGlja2VyLnN0YXJ0VmlldyA9ICdtdWx0aS15ZWFyJztcclxuICAgIHRoaXMuZGF0ZXBpY2tlci55ZWFyU2VsZWN0ZWQuc3Vic2NyaWJlKGUgPT4ge1xyXG4gICAgICB0aGlzLmRhdGUuc2V0VmFsdWUobW9tZW50KGUpLmZvcm1hdCgneXl5eScpKTtcclxuICAgICAgdGhpcy5lbWl0ZWRWYWx1ZS5lbWl0KG1vbWVudChlKS5mb3JtYXQoJ3l5eXknKSlcclxuICAgICAgdGhpcy5kYXRlcGlja2VyLmNsb3NlKCk7XHJcbiAgICB9KVxyXG4gICAgdGhpcy5kYXRlcGlja2VyLm9wZW5lZFN0cmVhbS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJ3llYXItb25seScpO1xyXG4gICAgfSlcclxuICAgIHRoaXMuZGF0ZXBpY2tlci5jbG9zZWRTdHJlYW0uc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCd5ZWFyLW9ubHknKTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxufVxyXG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzUmVhZE9ubHlcIj5cclxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG1iLTFcIiAqbmdJZj1cImhhc0xhYmVsXCI+XHJcbiAgICA8c3BhbiBjbGFzcz1cImZvcm0tbGFiZWwgbWItMFwiPnt7bGFiZWxUZXh0V3JpdGVNb2RlfX08L3NwYW4+XHJcbiAgICA8c3BhbiAqbmdJZj1cIiFyZXF1aXJlZFwiIGNsYXNzPVwiZnMtMTEgZmMtZGFyay1ncmF5XCI+IHt7aTE4bi50cmFuc2xhdGUoJ29wdGlvbmFsJyl9fSA8L3NwYW4+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cImp1c3RpZnktY29udGVudC1iZXR3ZWVuIG1iLTFcIj5cclxuICAgIDxtYXQtZm9ybS1maWVsZCBbbmdDbGFzc109XCJ7J2lucHV0LWRpc2FibGVkJyA6IGRpc2FibGVkIH1cIiBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsXCI+XHJcbiAgICAgIDxsYWJlbCBjbGFzcz1cIm1hdC1mb3JtLWNvbnRlbnRcIj5cclxuICAgICAgICA8aW5wdXQgbWF0SW5wdXQgKGRhdGVJbnB1dCk9XCJkYXRlQ2hhbmdlKCRldmVudClcIiBbcGxhY2Vob2xkZXJdPVwiaGFzTGFiZWwgPyAoaTE4bi50cmFuc2xhdGUoJ3NlbGVjdCcpICsgJyAnICsgbGFiZWxUZXh0V3JpdGVNb2RlKSA6ICcnXCIgKGZvY3VzKT1cImZvY3VzUGlja2VyKGRwKVwiIFttaW5dPVwibWluRGF0ZVZhbHVlXCJcclxuICAgICAgICAgIFttYXhdPVwibWF4RGF0ZVZhbHVlXCIgcmVhZG9ubHkgW21hdERhdGVwaWNrZXJdPVwiZHBcIiBbZm9ybUNvbnRyb2xdPVwiZGF0ZVwiPlxyXG4gICAgICA8L2xhYmVsPlxyXG4gICAgICA8ZHMtaWNvbiAqbmdJZj1cImRhdGU/LnZhbHVlXCIgbWF0U3VmZml4IGljb249XCJjbG9zZVwiIGNsYXNzPVwiZmMtb255eCBmcy0xMCBteC0yIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cImNsZWFyRGF0ZVZhbHVlKCRldmVudClcIj48L2RzLWljb24+XHJcbiAgICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgbWF0U3VmZml4IFtmb3JdPVwiZHBcIj5cclxuICAgICAgICA8ZHMtaWNvbiBpY29uPVwiY2FsZW5kYXItb1wiIGNsYXNzPVwiZmMtYmxhY2sgZnMtMThcIiBtYXREYXRlcGlja2VyVG9nZ2xlSWNvbj48L2RzLWljb24+XHJcbiAgICAgIDwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxyXG4gICAgICA8bWF0LWRhdGVwaWNrZXIgI2RwPlxyXG4gICAgICA8L21hdC1kYXRlcGlja2VyPlxyXG4gICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZXJyb3JNZXNzYWdlXCI+e3tlcnJvck1lc3NhZ2V9fTwvbWF0LWVycm9yPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICA8L2Rpdj5cclxuXHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzUmVhZE9ubHkgJiYgZmllbGRcIj5cclxuICA8YXBwLWluZm8taXRlbSBjbGFzcz1cImluZm8taXRlbSB3LTEwMFwiIHR5cGU9XCJkYXRlXCIgW2luc2lkZVRhYmxlXT1cImluc2lkZVRhYmxlXCIgW2RhdGVUeXBlXT1cImNhbGVuZGFyVHlwZVwiIFtsYWJlbF09XCJsYWJlbFRleHRSZWFkTW9kZVwiXHJcbiAgICBbdmFsdWVdPVwiZmllbGRcIiBbaGFzTGFiZWxdPVwiaGFzTGFiZWxcIj5cclxuICA8L2FwcC1pbmZvLWl0ZW0+XHJcbjwvbmctY29udGFpbmVyPlxyXG4iXX0=
244
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzL2Zvcm0tZmllbGQvZGF0ZS1waWNrZXIvZGF0ZS1waWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzL2Zvcm0tZmllbGQvZGF0ZS1waWNrZXIvZGF0ZS1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sNENBQTRDLENBQUM7QUFDekUsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQWdDLHNCQUFzQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3RJLE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDdEYsT0FBTyxFQUFDLCtCQUErQixFQUFFLGlCQUFpQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDcEcsT0FBTyxFQUFDLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ3BHLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDMUQsT0FBTyxFQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVB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LFNBQVM7c0JBQWxCLE1BQU07Z0JBRUUsS0FBSztzQkFBYixLQUFLO2dCQUdHLE9BQU87c0JBQWYsS0FBSztnQkFFQyxhQUFhO3NCQURuQixTQUFTO3VCQUFDLFNBQVM7Z0JBRVgsT0FBTztzQkFBZixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFFTyxNQUFNO3NCQUFsQixLQUFLO2dCQU1vQixVQUFVO3NCQUFuQyxTQUFTO3VCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Zvcm1Db250cm9sLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0b3JzfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7QmFzZUNvbXBvbmVudH0gZnJvbSAnLi4vYmFzZS1jb21wb25lbnQvYmFzZS1jb21wb25lbnQuY29tcG9uZW50JztcclxuaW1wb3J0IHtDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgVmlld0NoaWxkLCBTaW1wbGVDaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtNQVRfREFURV9GT1JNQVRTLCBEYXRlQWRhcHRlciwgTUFUX0RBVEVfTE9DQUxFfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcclxuaW1wb3J0IHtNQVRfTU9NRU5UX0RBVEVfQURBUFRFUl9PUFRJT05TLCBNb21lbnREYXRlQWRhcHRlcn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwtbW9tZW50LWFkYXB0ZXInO1xyXG5pbXBvcnQge01hdERhdGVwaWNrZXIsIE1hdERhdGVwaWNrZXJJbnB1dCwgTWF0RGF0ZXBpY2tlclRvZ2dsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XHJcbmltcG9ydCB7Q3VzdG9tRGF0ZUZvcm1hdH0gZnJvbSAnLi9kYXRlLWZvcm1hdCc7XHJcbmltcG9ydCB7TWF0Rm9ybUZpZWxkfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZFwiO1xyXG5pbXBvcnQge05nQ2xhc3MsIE5nSWZ9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHtJbmZvSXRlbUNvbXBvbmVudH0gZnJvbSBcIi4uL2luZm8taXRlbS9pbmZvLWl0ZW0uY29tcG9uZW50XCI7XHJcbmltcG9ydCAqIGFzIG1vbWVudCBmcm9tICdtb21lbnQnXHJcblxyXG5cclxuY29uc3QgWUVBUl9PTkxZX0ZPUk1BVCA9IHtcclxuICBwYXJzZToge1xyXG4gICAgZGF0ZUlucHV0OiAnWVlZWScsXHJcbiAgfSxcclxuICBkaXNwbGF5OiB7XHJcbiAgICBkYXRlSW5wdXQ6ICdZWVlZJyxcclxuICAgIG1vbnRoWWVhckxhYmVsOiAnWVlZWScsXHJcbiAgICBkYXRlQTExeUxhYmVsOiAnTEwnLFxyXG4gICAgbW9udGhZZWFyQTExeUxhYmVsOiAnWVlZWScsXHJcbiAgfSxcclxufTtcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1kYXRlcGlja2VyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2RhdGUtcGlja2VyLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IERhdGVBZGFwdGVyLFxyXG4gICAgICB1c2VDbGFzczogTW9tZW50RGF0ZUFkYXB0ZXIsXHJcbiAgICAgIGRlcHM6IFtNQVRfREFURV9MT0NBTEUsIE1BVF9NT01FTlRfREFURV9BREFQVEVSX09QVElPTlNdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTUFUX0RBVEVfRk9STUFUUyxcclxuICAgICAgdXNlQ2xhc3M6IEN1c3RvbURhdGVGb3JtYXRcclxuICAgIH0sXHJcbiAgXSxcclxuXHJcblxyXG4gIGltcG9ydHM6IFtcclxuICAgIE1hdEZvcm1GaWVsZCxcclxuICAgIE1hdERhdGVwaWNrZXJUb2dnbGUsXHJcbiAgICBNYXREYXRlcGlja2VyLFxyXG4gICAgTWF0RGF0ZXBpY2tlcklucHV0LFxyXG4gICAgTmdDbGFzcyxcclxuICAgIE5nSWYsXHJcbiAgICBJbmZvSXRlbUNvbXBvbmVudCxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGVcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEYXRlUGlja2VyQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xyXG4gIGRhdGUgPSBuZXcgRm9ybUNvbnRyb2woKTtcclxuICBASW5wdXQoKSB0b29sdGlwITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGNsYXNzTmFtZSE6IHN0cmluZztcclxuICBASW5wdXQoKSBjYWxlbmRhclR5cGUhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgc2hvd0xhYmVsID0gdHJ1ZTtcclxuICBASW5wdXQoKSB5ZWFyT25seTogYm9vbGVhbjtcclxuICBASW5wdXQoKSByZXNldERhdGUgPSBmYWxzZTtcclxuICBAT3V0cHV0KCkgZGF0ZVZhbHVlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBzaG93SXNsYW1pYyA9IGZhbHNlXHJcbiAgQElucHV0KCkgZXJyb3IhOiBzdHJpbmc7XHJcbiAgbWluRGF0ZVZhbHVlOiBhbnlcclxuICBtYXhEYXRlVmFsdWU6IGFueVxyXG4gIEBJbnB1dCgpIG1heERhdGU6IHN0cmluZztcclxuICBAVmlld0NoaWxkKCdkZWZhdWx0JylcclxuICBwdWJsaWMgZGF0ZXBpY2tlck9iaiE6IGFueTtcclxuICBASW5wdXQoKSBtaW5EYXRlOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgY3VzdG9tTWF4RGF0ZTogYW55XHJcbiAgQElucHV0KCkgY3VzdG9tTWluRGF0ZTogYW55XHJcblxyXG4gIEBJbnB1dCgpIHNldCBmb3JtYXQoX2Zvcm1hdDogc3RyaW5nKSB7XHJcbiAgICBpZiAoX2Zvcm1hdCkge1xyXG4gICAgICB0aGlzLmRhdGVGb3JtYXQudXBkYXRlRGF0ZUZvcm1hdCh7ZGF0ZUlucHV0OiBfZm9ybWF0fSwge2RhdGVJbnB1dDogX2Zvcm1hdH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQFZpZXdDaGlsZChNYXREYXRlcGlja2VyKSBkYXRlcGlja2VyOiBNYXREYXRlcGlja2VyPGFueT47XHJcbiAgZmxvYXRMYWJlbDogYW55ID0gJ2F1dG8nO1xyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNSZWFkT25seSAmJiB0aGlzLnllYXJPbmx5KSB0aGlzLmFjdGl2YXRlWWVhck9ubHlNb2RlKCk7XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBnZXQgc2hvdWxkU2V0RGF0ZUZvcm1hdGVJbkFyKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcblxyXG4gICAgLy8gdGhpcy5yZXNldFByb3BhZ2F0b3Iuc3Vic2NyaWJlKHRoaXMsIHRoaXMucmVzZXREYXRlRGF0YSk7XHJcbiAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XHJcbiAgICBjb25zdCBjdXJyZW50WWVhciA9IHRvZGF5LmdldEZ1bGxZZWFyKCk7XHJcbiAgICBjb25zdCBjdXJyZW50TW9udGggPSB0b2RheS5nZXRNb250aCgpO1xyXG4gICAgY29uc3QgY3VycmVudERheSA9IHRvZGF5LmdldERhdGUoKTtcclxuICAgIGlmICh0aGlzLm1pbkRhdGUpIHtcclxuICAgICAgaWYgKHRoaXMubWluRGF0ZSA9PSAndG9kYXknKSB7XHJcbiAgICAgICAgdGhpcy5taW5EYXRlVmFsdWUgPSBuZXcgRGF0ZShjdXJyZW50WWVhciwgY3VycmVudE1vbnRoLCBjdXJyZW50RGF5KVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMubWF4RGF0ZSkge1xyXG4gICAgICBpZiAodGhpcy5tYXhEYXRlID09ICd0b2RheScpIHtcclxuICAgICAgICB0aGlzLm1heERhdGVWYWx1ZSA9IG5ldyBEYXRlKGN1cnJlbnRZZWFyLCBjdXJyZW50TW9udGgsIGN1cnJlbnREYXkpXHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5tYXhEYXRlID09ICdvbmVZZWFyJykge1xyXG4gICAgICAgIHRoaXMubWF4RGF0ZVZhbHVlID0gbmV3IERhdGUoY3VycmVudFllYXIgKyAxLCBjdXJyZW50TW9udGgsIGN1cnJlbnREYXkgLSAxKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICh0aGlzLmN1c3RvbU1heERhdGUpIHtcclxuICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHRoaXMuY3VzdG9tTWF4RGF0ZSlcclxuICAgICAgdGhpcy5tYXhEYXRlVmFsdWUgPSBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSwgZGF0ZS5nZXREYXRlKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmZpZWxkKSB7XHJcbiAgICAgIHRoaXMuZGF0ZS5zZXRWYWx1ZSh0aGlzLmZpZWxkKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnJlcXVpcmVkKSB0aGlzLmRhdGUuYWRkVmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKVxyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgaWYgKHRoaXMucmVzZXREYXRlICYmIHRoaXMuZmllbGQgPT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmZpZWxkID0gJyc7XHJcbiAgICAgIHRoaXMuZGF0ZS5zZXRWYWx1ZSh0aGlzLmZpZWxkKVxyXG4gICAgICB0aGlzLmVtaXRlZFZhbHVlLmVtaXQodGhpcy5maWVsZCk7XHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlcykge1xyXG4gICAgICBpZiAodGhpcy5jdXN0b21NYXhEYXRlKSB7XHJcbiAgICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHRoaXMuY3VzdG9tTWF4RGF0ZSk7XHJcbiAgICAgICAgdGhpcy5tYXhEYXRlVmFsdWUgPSBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSwgZGF0ZS5nZXREYXRlKCkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlcyAmJiAhdGhpcy5pc1JlYWRPbmx5KSB7IC8vIGFkZCBtaW4gZGF0ZSB2YWx1ZSBmb3IgMiBkYXRlcyB2YWxpZGF0aW9uc1xyXG4gICAgICBpZiAodGhpcy5jdXN0b21NaW5EYXRlKSB7XHJcbiAgICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHRoaXMuY3VzdG9tTWluRGF0ZSk7XHJcbiAgICAgICAgdGhpcy5taW5EYXRlVmFsdWUgPSBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSwgZGF0ZS5nZXREYXRlKCkgKyAxKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzZXREYXRlRGF0YSgpIHtcclxuICAgIGlmICghdGhpcy5pc1JlYWRPbmx5KSB7XHJcbiAgICAgIHRoaXMuZmllbGQgPSAnJztcclxuICAgICAgdGhpcy5kYXRlLnNldFZhbHVlKHRoaXMuZmllbGQpXHJcbiAgICAgIHRoaXMuZW1pdGVkVmFsdWUuZW1pdCh0aGlzLmZpZWxkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGZvY3VzUGlja2VyKHBpY2tlcikge1xyXG4gICAgcGlja2VyLm9wZW4oKTtcclxuICB9XHJcblxyXG4gIG9uRm9jdXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRhdGVwaWNrZXJPYmouc2hvdygpO1xyXG4gIH1cclxuXHJcbiAgZGF0ZUNoYW5nZShldmVudDogYW55KSB7XHJcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgaWYgKGV2ZW50Py52YWx1ZSkge1xyXG4gICAgICAgIGxldCBpbnB1dFZhbHVlXHJcbiAgICAgICAgY29uc3QgZXZlbnREYXRlID0gbW9tZW50KGV2ZW50LnZhbHVlKTtcclxuICAgICAgICBjb25zdCBtaW5EYXRlID0gbW9tZW50KHRoaXMubWluRGF0ZVZhbHVlKTtcclxuICAgICAgICBjb25zdCBtYXhEYXRlID0gbW9tZW50KHRoaXMubWF4RGF0ZVZhbHVlKTtcclxuICAgICAgICBpZiAoZXZlbnREYXRlIDwgbWluRGF0ZSAmJiB0aGlzLm1pbkRhdGVWYWx1ZSkge1xyXG4gICAgICAgICAgdGhpcy5maWVsZCA9ICcnXHJcbiAgICAgICAgICB0aGlzLmRhdGVwaWNrZXJPYmoudmFsdWUgPSAnJ1xyXG4gICAgICAgICAgaW5wdXRWYWx1ZSA9ICcnXHJcbiAgICAgICAgfSBlbHNlIGlmIChldmVudERhdGUgPiBtYXhEYXRlICYmIHRoaXMubWF4RGF0ZVZhbHVlKSB7XHJcbiAgICAgICAgICB0aGlzLmZpZWxkID0gJydcclxuICAgICAgICAgIHRoaXMuZGF0ZXBpY2tlck9iai52YWx1ZSA9ICcnXHJcbiAgICAgICAgICBpbnB1dFZhbHVlID0gJydcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaW5wdXRWYWx1ZSA9IG1vbWVudChldmVudC52YWx1ZSkubG9jYWxlKCdlbi1VUycpLmZvcm1hdChcIllZWVktTU0tRERUSEg6bW06c3MuU1NTWlwiKTtcclxuICAgICAgICAgIHRoaXMuZW1pdGVkVmFsdWUuZW1pdChpbnB1dFZhbHVlKVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmZpZWxkID0gaW5wdXRWYWx1ZVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2VjdGlvbi5ib2R5LmRldGFpbHNbdGhpcy5uYW1lXSA9ICcnXHJcblxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjbGVhckRhdGVWYWx1ZShldmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZXNldERhdGVEYXRhKCk7XHJcbiAgICBldmVudD8ucHJldmVudERlZmF1bHQoKTtcclxuICAgIGV2ZW50Py5zdG9wUHJvcGFnYXRpb24oKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZURhdGUoKSB7XHJcbiAgICB0aGlzLmZpZWxkID0gJydcclxuICAgIC8vIHRoaXMuY29udHJvbGxlci5zZXRWYWx1ZSgnJylcclxuICB9XHJcblxyXG4gIHRvZ2dsZUlzbGFtaWNDYWwoKSB7XHJcbiAgICB0aGlzLnNob3dJc2xhbWljID0gIXRoaXMuc2hvd0lzbGFtaWNcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWN0aXZhdGVZZWFyT25seU1vZGUoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRhdGVGb3JtYXQudXBkYXRlRGF0ZUZvcm1hdChZRUFSX09OTFlfRk9STUFULnBhcnNlLCBZRUFSX09OTFlfRk9STUFULmRpc3BsYXkpO1xyXG4gICAgaWYgKHRoaXMuZmllbGQpIHtcclxuICAgICAgdGhpcy5kYXRlLnNldFZhbHVlKG1vbWVudCh0aGlzLmZpZWxkKS5mb3JtYXQoJ3l5eXknKSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmRhdGVwaWNrZXIuc3RhcnRWaWV3ID0gJ211bHRpLXllYXInO1xyXG4gICAgdGhpcy5kYXRlcGlja2VyLnllYXJTZWxlY3RlZC5zdWJzY3JpYmUoZSA9PiB7XHJcbiAgICAgIHRoaXMuZGF0ZS5zZXRWYWx1ZShtb21lbnQoZSkuZm9ybWF0KCd5eXl5JykpO1xyXG4gICAgICB0aGlzLmVtaXRlZFZhbHVlLmVtaXQobW9tZW50KGUpLmZvcm1hdCgneXl5eScpKVxyXG4gICAgICB0aGlzLmRhdGVwaWNrZXIuY2xvc2UoKTtcclxuICAgIH0pXHJcbiAgICB0aGlzLmRhdGVwaWNrZXIub3BlbmVkU3RyZWFtLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgneWVhci1vbmx5Jyk7XHJcbiAgICB9KVxyXG4gICAgdGhpcy5kYXRlcGlja2VyLmNsb3NlZFN0cmVhbS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoJ3llYXItb25seScpO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG59XHJcbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNSZWFkT25seVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbWItMVwiICpuZ0lmPVwiaGFzTGFiZWxcIj5cclxuICAgIDxzcGFuIGNsYXNzPVwiZm9ybS1sYWJlbCBtYi0wXCI+e3tsYWJlbFRleHRXcml0ZU1vZGV9fTwvc3Bhbj5cclxuICAgIDxzcGFuICpuZ0lmPVwiIXJlcXVpcmVkXCIgY2xhc3M9XCJmcy0xMSBmYy1kYXJrLWdyYXlcIj4ge3tpMThuLnRyYW5zbGF0ZSgnb3B0aW9uYWwnKX19IDwvc3Bhbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwianVzdGlmeS1jb250ZW50LWJldHdlZW4gbWItMVwiPlxyXG4gICAgPG1hdC1mb3JtLWZpZWxkIFtuZ0NsYXNzXT1cInsnaW5wdXQtZGlzYWJsZWQnIDogZGlzYWJsZWQgfVwiIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWxcIj5cclxuICAgICAgPGxhYmVsIGNsYXNzPVwibWF0LWZvcm0tY29udGVudFwiPlxyXG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCAoZGF0ZUlucHV0KT1cImRhdGVDaGFuZ2UoJGV2ZW50KVwiIFtwbGFjZWhvbGRlcl09XCJoYXNMYWJlbCA/IChpMThuLnRyYW5zbGF0ZSgnc2VsZWN0JykgKyAnICcgKyBsYWJlbFRleHRXcml0ZU1vZGUpIDogJydcIiAoZm9jdXMpPVwiZm9jdXNQaWNrZXIoZHApXCIgW21pbl09XCJtaW5EYXRlVmFsdWVcIlxyXG4gICAgICAgICAgW21heF09XCJtYXhEYXRlVmFsdWVcIiByZWFkb25seSBbbWF0RGF0ZXBpY2tlcl09XCJkcFwiIFtmb3JtQ29udHJvbF09XCJkYXRlXCI+XHJcbiAgICAgIDwvbGFiZWw+XHJcbiAgICAgIDxkcy1pY29uICpuZ0lmPVwiZGF0ZT8udmFsdWVcIiBtYXRTdWZmaXggaWNvbj1cImNsb3NlXCIgY2xhc3M9XCJmYy1vbnl4IGZzLTEwIG14LTIgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiY2xlYXJEYXRlVmFsdWUoJGV2ZW50KVwiPjwvZHMtaWNvbj5cclxuICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSBtYXRTdWZmaXggW2Zvcl09XCJkcFwiPlxyXG4gICAgICAgIDxkcy1pY29uIGljb249XCJjYWxlbmRhci1vXCIgY2xhc3M9XCJmYy1ibGFjayBmcy0xOFwiIG1hdERhdGVwaWNrZXJUb2dnbGVJY29uPjwvZHMtaWNvbj5cclxuICAgICAgPC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XHJcbiAgICAgIDxtYXQtZGF0ZXBpY2tlciAjZHA+XHJcbiAgICAgIDwvbWF0LWRhdGVwaWNrZXI+XHJcbiAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJlcnJvck1lc3NhZ2VcIj57e2Vycm9yTWVzc2FnZX19PC9tYXQtZXJyb3I+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gIDwvZGl2PlxyXG5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG48bmctY29udGFpbmVyICpuZ0lmPVwiaXNSZWFkT25seSAmJiBmaWVsZFwiPlxyXG4gIDxhcHAtaW5mby1pdGVtIGNsYXNzPVwiaW5mby1pdGVtIHctMTAwXCIgdHlwZT1cImRhdGVcIiBbaW5zaWRlVGFibGVdPVwiaW5zaWRlVGFibGVcIiBbZGF0ZVR5cGVdPVwiY2FsZW5kYXJUeXBlXCIgW2xhYmVsXT1cImxhYmVsVGV4dFJlYWRNb2RlXCJcclxuICAgIFt2YWx1ZV09XCJmaWVsZFwiIFtoYXNMYWJlbF09XCJoYXNMYWJlbFwiPlxyXG4gIDwvYXBwLWluZm8taXRlbT5cclxuPC9uZy1jb250YWluZXI+XHJcbiJdfQ==
@@ -331,6 +331,25 @@ export class CoreService {
331
331
  loggedInUserId() {
332
332
  return this.userData['loggedInUserEmail'];
333
333
  }
334
+ getShortName(name) {
335
+ if (name) {
336
+ let nameTokens = name.split(' ');
337
+ if (nameTokens.length == 1) {
338
+ return [nameTokens[0]];
339
+ }
340
+ else {
341
+ if (nameTokens[nameTokens.length - 2].toLowerCase() == 'al') {
342
+ return [nameTokens[0], nameTokens[nameTokens.length - 2], nameTokens[nameTokens.length - 1]].join(' ');
343
+ }
344
+ else {
345
+ return [nameTokens[0], nameTokens[nameTokens.length - 1]].join(' ');
346
+ }
347
+ }
348
+ }
349
+ else {
350
+ return null;
351
+ }
352
+ }
334
353
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: CoreService, deps: [{ token: i1.HttpClient }, { token: MY_LIB_CONFIG_TOKEN }], target: i0.ɵɵFactoryTarget.Injectable });
335
354
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: CoreService, providedIn: "any" });
336
355
  }
@@ -343,4 +362,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
343
362
  type: Inject,
344
363
  args: [MY_LIB_CONFIG_TOKEN]
345
364
  }] }] });
346
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS5zZXJ2aWNlLnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9jb3JlLnNlcnZpY2UudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFhLFdBQVcsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzdELE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRWpELE9BQU8sRUFBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxtQkFBbUIsRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ3RILE9BQU8sS0FBSyxTQUFTLE1BQU0sY0FBYyxDQUFBO0FBQ3pDLE9BQU8sRUFBQyxVQUFVLEVBQUUsVUFBVSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzVDLE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBS25DLE1BQU0sT0FBTyxXQUFXO0lBVUY7SUFDNkI7SUFWakQsTUFBTSxHQUFXLEVBQUUsQ0FBQTtJQUNYLFNBQVMsQ0FBUztJQUNsQixZQUFZLENBQVM7SUFDWixhQUFhLENBQVM7SUFDaEMsUUFBUSxDQUFTO0lBQ1AsU0FBUyxDQUFLO0lBQ3hCLGdCQUFnQixDQUFPO0lBRzlCLFlBQW9CLElBQWdCLEVBQ2EsTUFBbUI7UUFEaEQsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNhLFdBQU0sR0FBTixNQUFNLENBQWE7UUFDbEUsTUFBTSxRQUFRLEdBQUksTUFBYyxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFFLE1BQWMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDaEcsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLG1CQUFtQixHQUFHLFFBQVEs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USxDQUM1QixFQUFFLEVBQ0YsRUFBRSxFQUNGLEVBQUUsRUFDRixFQUFFLENBQ0gsQ0FBQztZQUNGLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUN4QyxNQUFNLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzNDLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdEQsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsNEZBQTRGO1FBQzVGLHdEQUF3RDtRQUN4RCxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO1FBQ3pFLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxjQUFjO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQzVDLENBQUM7dUdBdllVLFdBQVcsNENBV0YsbUJBQW1COzJHQVg1QixXQUFXLGNBRlYsS0FBSzs7MkZBRU4sV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsS0FBSztpQkFDbEI7OzBCQVljLE1BQU07MkJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtIdHRwQ2xpZW50LCBIdHRwSGVhZGVyc30gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgdHlwZSB7TXlMaWJDb25maWd9IGZyb20gXCIuLi9pbnRlcmZhY2VzL3NoYXJlZC5pbnRlcmZhY2VcIjtcclxuaW1wb3J0IHtGb3JtLCBIZWFkZXIsIE1lc3NhZ2VzLCBNWV9MSUJfQ09ORklHX1RPS0VOLCBQcm9maWxlSW5mb0Ryb3AsIFNlY3Rpb24sIFNlY3Rpb25IZWFkZXJ9IGZyb20gXCIuLi8uLi9wdWJsaWMtYXBpXCI7XHJcbmltcG9ydCAqIGFzIGNvbnN0YW50cyBmcm9tICcuLi9jb25zdGFudHMnXHJcbmltcG9ydCB7Y2F0Y2hFcnJvciwgdGhyb3dFcnJvcn0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHttYXB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46IFwiYW55XCJcclxufSlcclxuZXhwb3J0IGNsYXNzIENvcmVTZXJ2aWNlIHtcclxuICBhcGlVcmw6IHN0cmluZyA9ICcnXHJcbiAgcHJpdmF0ZSBhdXRoVG9rZW46IHN0cmluZztcclxuICBwcml2YXRlIHJlZnJlc2hUb2tlbjogc3RyaW5nO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgcHJvamVjdENvbmZpZzogc3RyaW5nO1xyXG4gIHB1YmxpYyB1c2VyRGF0YTogc3RyaW5nO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgbG9jYWxVc2VyOiB7fTtcclxuICBwdWJsaWMgbG9nZ2VkSW5Vc2VyRGF0YTogeyAgfTtcclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuICAgICAgICAgICAgICBASW5qZWN0KE1ZX0xJQl9DT05GSUdfVE9LRU4pIHByaXZhdGUgY29uZmlnOiBNeUxpYkNvbmZpZykge1xyXG4gICAgY29uc3QgbGFuZ3VhZ2UgPSAod2luZG93IGFzIGFueSk/LndtQ29uZmlnPy5sYW5ndWFnZSA/ICh3aW5kb3cgYXMgYW55KS53bUNvbmZpZy5sYW5ndWFnZSA6ICdlbic7XHJcbiAgICB0aGlzLmFwaVVybCA9IHRoaXMuY29uZmlnLnByb3h5U2VydmljZUJhc2VVcmwgKyBsYW5ndWFnZSArIHRoaXMuY29uZmlnLnByb3h5RnVsbEFkZHJlc3MgKyB0aGlzLmNvbmZpZy5wcm94eVNlcnZpY2VFeGVjdXRlO1xyXG4gICAgY29uc29sZS5sb2coJ0NvbmZpZzogJywgdGhpcy5jb25maWcpOyAvLyBmb3IgdGVzdGluZyBwdXJwb3NlcyBvbmx5XHJcbiAgICB0aGlzLmxvY2FsVXNlciA9IHtcclxuICAgICAgXCJmb3JtUHJlZml4XCI6IFwiQ0VQXCIsXHJcbiAgICAgIFwiZm9ybUlkXCI6IFwiQ0VQNTU5NTQzMlwiLFxyXG4gICAgICBcImluYm94VXJpXCI6IFwiXFwvZ3JvdXBcXC9odWJcXC9pbmJveFwiLFxyXG4gICAgICBcImJhc2VVcmxcIjogXCJcXC9ncm91cFxcL2ktZ2F0ZVxcL3dtLWJwbVxcL2Zvcm1zXFwvLVxcL3Byb3h5XCIsXHJcbiAgICAgIFwic2hvd1ByaW50XCI6IHRydWUsXHJcbiAgICAgIFwibGFuZ3VhZ2VcIjogXCJlblwiLFxyXG4gICAgICBcImlzTW9iaWxlXCI6IHRydWUsXHJcbiAgICAgIFwib3V0bG9va1wiOiBmYWxzZSxcclxuICAgICAgXCJsb2dnZWRJblVzZXJFbWFpbFwiOiBcImlicmFoaW1tYWEuY0BzdGMuY29tLnNhXCJcclxuICAgIH1cclxuICAgIHRoaXMucHJvamVjdENvbmZpZyA9ICh0aGlzLmNvbmZpZy5wcm9kdWN0aW9uKSA/ICh3aW5kb3cgYXMgYW55KVsnd21Db25maWcnXSA6IGJ0b2EoSlNPTi5zdHJpbmdpZnkodGhpcy5sb2NhbFVzZXIpKTtcclxuICAgIHRoaXMudXNlckRhdGEgPSBKU09OLnBhcnNlKGF0b2IodGhpcy5wcm9qZWN0Q29uZmlnKSk7XHJcbiAgfVxyXG5cclxuICBnZXRMb2dnZWRJblVzZXJEYXRhKCkge1xyXG4gICAgbGV0IGxvZ2dlZEluRW1haWwgPSB0aGlzLmxvZ2dlZEluVXNlcklkKClcclxuICAgIHRoaXMuZW1wbG95ZWVQcm9maWxlKGxvZ2dlZEluRW1haWwpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmxvZ2dlZEluVXNlckRhdGEgPSByZXNwb25zZT8uW1wiVXNlcnNcIl0/LlswXVxyXG4gICAgICBjb25zb2xlLmxvZygnZ2V0TG9nZ2VkSW5Vc2VyRGF0YScsIHJlc3BvbnNlKVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGxvYWRGb3JtKCkge1xyXG4gICAgY29uc3QgYXV0aFVybCA9IHRoaXMuYnVpbGRBdXRoVXJsKCk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChhdXRoVXJsLCB7b2JzZXJ2ZTogJ3Jlc3BvbnNlJ30pLnRvUHJvbWlzZSgpXHJcbiAgICAgIC50aGVuKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHRva2VuSW5mb3JtYXRpb24gPSByZXMuYm9keTtcclxuICAgICAgICB0aGlzLmF1dGhUb2tlbiA9IHRva2VuSW5mb3JtYXRpb24udG9rZW47XHJcbiAgICAgICAgdGhpcy5nZXRMb2dnZWRJblVzZXJEYXRhKClcclxuICAgICAgICB0aGlzLnJlZnJlc2hUb2tlbiA9IHRva2VuSW5mb3JtYXRpb24ucmVmcmVzaFRva2VuO1xyXG4gICAgICAgIGNvbnN0IGJvZHkgPSB0aGlzLmJ1aWxkQm9keSgpO1xyXG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmdldFJlcXVlc3RPcHRpb25zKCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FsbFBvc3QoYm9keSwgb3B0aW9ucyk7XHJcbiAgICAgIH0pXHJcbiAgICAgIC5jYXRjaCgoaHR0cEVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihodHRwRXJyb3IpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYnVpbGRBdXRoVXJsKCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBiYXNlVXJsID0gdGhpcy5jb25maWcucHJveHlTZXJ2aWNlQmFzZVVybDtcclxuICAgIGNvbnN0IGxhbmd1YWdlID0gKHdpbmRvdyBhcyBhbnkpPy53bUNvbmZpZz8ubGFuZ3VhZ2UgPyAod2luZG93IGFzIGFueSkud21Db25maWcubGFuZ3VhZ2UgOiAnZW4nO1xyXG4gICAgY29uc3QgZnVsbEFkZHJlc3MgPSB0aGlzLmNvbmZpZy5wcm94eUZ1bGxBZGRyZXNzO1xyXG4gICAgY29uc3QgYXV0aFBhcnQgPSB0aGlzLmNvbmZpZy5wcm94eVNlcnZpY2VBdXRob3JpemF0aW9uO1xyXG4gICAgcmV0dXJuIGAke2Jhc2VVcmx9JHtsYW5ndWFnZX0ke2Z1bGxBZGRyZXNzfSR7YXV0aFBhcnR9P3RzPSR7KG5ldyBEYXRlKCkpLnZhbHVlT2YoKX1gO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBidWlsZEJvZHkoKTogb2JqZWN0IHtcclxuICAgIGNvbnN0IGJhc2VCb2R5ID0ge1xyXG4gICAgICBtZXRob2Q6IGNvbnN0YW50cy5IVFRQX01FVEhPRF9HRVQsXHJcbiAgICAgIGRlc3RpbmF0aW9uOiBjb25zdGFudHMuVEFSR0VUX1NFUlZFUl9XTSxcclxuICAgICAgc2VydmljZU5hbWU6IGNvbnN0YW50cy5TRVJWSUNFX05BTUVfV01fRk9STSxcclxuICAgICAgZm9ybU5hbWU6IHRoaXMuY29uZmlnLmZvcm1OYW1lLFxyXG4gICAgICBmb3JtSWQ6IFwiXCIsXHJcbiAgICAgIHF1ZXJ5UGFyYW1ldGVyczogbnVsbFxyXG4gICAgfTtcclxuICAgIGlmICghdGhpcy5jb25maWcuZm9ybUlkKSB7XHJcbiAgICAgIGRlbGV0ZSBiYXNlQm9keS5mb3JtSWQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBiYXNlQm9keS5mb3JtSWQgPSB0aGlzLmNvbmZpZy5mb3JtSWQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYmFzZUJvZHk7XHJcbiAgfVxyXG5cclxuICBlbXBsb3llZVByb2ZpbGUoZW1wbG95ZWVFbWFpbDogYW55KSB7XHJcbiAgICBsZXQgYm9keSA9IHtcclxuICAgICAgbWV0aG9kOiBcIkdFVFwiLFxyXG4gICAgICBmb3JtTmFtZTogXCJBQUlcIixcclxuICAgICAgZGVzdGluYXRpb246IFwiRFBcIixcclxuICAgICAgc2VydmljZU5hbWU6IFwiaWdhdGUudXNlcnMuc2VhcmNoLnYzXCIsXHJcbiAgICAgIHBhcmFtZXRlcnM6IHtcclxuICAgICAgICBxOiBlbXBsb3llZUVtYWlsXHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5hcGlVcmwsIGJvZHksIHtcclxuICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgICBhdXRoVG9rZW46IHRoaXMuYXV0aFRva2VuLFxyXG4gICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXCJcclxuICAgICAgfSksXHJcbiAgICAgIG9ic2VydmU6IFwiYm9keVwiXHJcbiAgICB9KS5waXBlKFxyXG4gICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICByZXR1cm4gcmVzcG9uc2VcclxuICAgICAgfSlcclxuICAgICAgLCBjYXRjaEVycm9yKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycilcclxuICAgICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRSZXF1ZXN0T3B0aW9ucygpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICAgYXV0aFRva2VuOiB0aGlzLmF1dGhUb2tlbixcclxuICAgICAgICAnQ29udGVudC1UeXBlJzogY29uc3RhbnRzLkhFQURFUl9DT05URU5UX1RZUEVfRk9STVxyXG4gICAgICB9KSxcclxuICAgICAgb2JzZXJ2ZTogJ2JvZHknXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNhbGxQb3N0KGJvZHksIG9wdGlvbnMpIHtcclxuICAgIGNvbnN0IGxhbmd1YWdlID0gKHdpbmRvdyBhcyBhbnkpPy53bUNvbmZpZz8ubGFuZ3VhZ2UgPyAod2luZG93IGFzIGFueSkud21Db25maWcubGFuZ3VhZ2UgOiBcImVuXCI7XHJcbiAgICBsZXQgYXBpVXJsID0gdGhpcy5jb25maWcucHJveHlTZXJ2aWNlQmFzZVVybCArIGxhbmd1YWdlICsgdGhpcy5jb25maWcucHJveHlGdWxsQWRkcmVzcyArIHRoaXMuY29uZmlnLnByb3h5U2VydmljZUV4ZWN1dGU7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYXBpVXJsLCBlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoYm9keSkpLCBvcHRpb25zKS50b1Byb21pc2UoKVxyXG4gICAgICAudGhlbihcclxuICAgICAgICAocmVzcG9uc2VPYmplY3Q6IGFueSkgPT4ge1xyXG4gICAgICAgICAgLy8gbGV0IHBheWxvYWQgPSByZXNwb25zZU9iamVjdC5ib2R5O1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuc3VjY2Vzc1dtKHJlc3BvbnNlT2JqZWN0KVxyXG4gICAgICAgIH0sXHJcbiAgICAgICkuY2F0Y2goXHJcbiAgICAgICAgKGh0dHBFcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihodHRwRXJyb3IpXHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgc3VjY2Vzc1dtKC4uLmFyZ3MpIHtcclxuICAgIGxldCBbcGF5bG9hZF0gPSBhcmdzO1xyXG4gICAgLy8gbGV0IHdhc1NlbmRCYWNrID0gZmFsc2U7XHJcbiAgICAvKiBDb252ZXJ0IGludG8gRm9ybSBPYmplY3QgKi9cclxuICAgIGxldCByZXN1bHQgPSBuZXcgRm9ybShcclxuICAgICAgY29uc3RhbnRzLk5PX1ZBTFVFLFxyXG4gICAgICBjb25zdGFudHMuTk9fVkFMVUUsXHJcbiAgICAgIGNvbnN0YW50cy5OT19WQUxVRSxcclxuICAgICAgY29uc3RhbnRzLk5PX1ZBTFVFLFxyXG4gICAgICBjb25zdGFudHMuTk9fVkFMVUUsXHJcbiAgICAgIGNvbnN0YW50cy5OT19WQUxVRSxcclxuICAgICAgY29uc3RhbnRzLk5PX1ZBTFVFXHJcbiAgICApO1xyXG4gICAgLyogR2VuZXJhdGUgSGVhZGVyIE9iamVjdCAqL1xyXG4gICAgbGV0IHBheWxvYWRGb3JtRGV0YWlscyA9IHBheWxvYWQuZGF0YS5mb3JtO1xyXG4gICAgbGV0IGlzUmVhZE9ubHkgPSAocGF5bG9hZEZvcm1EZXRhaWxzLnJlYWRPbmx5LnRvVXBwZXJDYXNlKCkgPT09IGNvbnN0YW50cy5UUlVFX1NUUklORyA/IGNvbnN0YW50cy5UUlVFX0JPT0wgOiAocGF5bG9hZEZvcm1EZXRhaWxzLnJlYWRPbmx5LnRvVXBwZXJDYXNlKCkgPT09IGNvbnN0YW50cy5GQUxTRV9TVFJJTkcgPyBjb25zdGFudHMuRkFMU0VfQk9PTCA6IGNvbnN0YW50cy5OT19WQUxVRSkpXHJcbiAgICByZXN1bHQuaGVhZGVyID0gbmV3IEhlYWRlcihcclxuICAgICAgcGF5bG9hZC5kYXRhWydyZXF1ZXN0ZXInXS5mdWxsTmFtZSxcclxuICAgICAgY29uc3RhbnRzLklHQVRFX1NUQVRJQ19BU1NFVF9QUk9GSUxFX1BIT1RPX1VSTCArIHBheWxvYWQuZGF0YVsncmVxdWVzdGVyJ10uZW1wbG95ZWVFbWFpbCxcclxuICAgICAgKHBheWxvYWRGb3JtRGV0YWlscy5mb3JtSWQgPyBwYXlsb2FkRm9ybURldGFpbHMuZm9ybUlkIDogY29uc3RhbnRzLkRPTlRfU0hPVyksXHJcbiAgICAgIChwYXlsb2FkRm9ybURldGFpbHMuY3JlYXRpb25EYXRlID8gcGF5bG9hZEZvcm1EZXRhaWxzLmNyZWF0aW9uRGF0ZSA6IGNvbnN0YW50cy5ET05UX1NIT1cpLFxyXG4gICAgICBwYXlsb2FkRm9ybURldGFpbHNbJ2Zvcm1TdGF0dXMnXSxcclxuICAgICAgcGF5bG9hZEZvcm1EZXRhaWxzLmRldGFpbHNcclxuICAgICk7XHJcbiAgICAvKiBHZW5lcmF0ZSBQcm9maWxlIEluZm9ybWF0aW9uIE9iamVjdCAqL1xyXG4gICAgbGV0IHBheWxvYWRQcm9maWxlSW5mbyA9IHBheWxvYWQuZGF0YVsncmVxdWVzdGVyJ107XHJcbiAgICByZXN1bHQucHJvZmlsZUluZm9Ecm9wID0gbmV3IFByb2ZpbGVJbmZvRHJvcChcclxuICAgICAgKHBheWxvYWRQcm9maWxlSW5mby5vbkJlaGFsZkF1dGhvcml6ZWQgPyBKU09OLnBhcnNlKHBheWxvYWRQcm9maWxlSW5mby5vbkJlaGFsZkF1dGhvcml6ZWQpIDogbnVsbCksXHJcbiAgICAgIHBheWxvYWRQcm9maWxlSW5mb1snZW1wbG95ZWVJZCddLFxyXG4gICAgICBwYXlsb2FkUHJvZmlsZUluZm8uZW1wbG95ZWVFbWFpbCxcclxuICAgICAgcGF5bG9hZFByb2ZpbGVJbmZvLmZ1bGxOYW1lLFxyXG4gICAgICBwYXlsb2FkUHJvZmlsZUluZm8uZ2VuZXJhbERlcGFydG1lbnROYW1lLFxyXG4gICAgICBwYXlsb2FkUHJvZmlsZUluZm8uam9iUG9zaXRpb24sXHJcbiAgICAgIHBheWxvYWRQcm9maWxlSW5mby5zZWN0b3JOYW1lLFxyXG4gICAgICBwYXlsb2FkUHJvZmlsZUluZm8uZGVwYXJ0bWVudE5hbWUsXHJcbiAgICAgIHBheWxvYWRQcm9maWxlSW5mby5nZW5lcmFsRGVwYXJ0bWVudENvZGUsXHJcbiAgICAgIHBheWxvYWRQcm9maWxlSW5mb1snaHVtYW5SZXNvdXJjZUxvY2F0aW9uJ10sXHJcbiAgICAgIHBheWxvYWRQcm9maWxlSW5mby5uYXRpb25hbGl0eSxcclxuICAgICAgcGF5bG9hZFByb2ZpbGVJbmZvLmJ1c2luZXNzUGhvbmUsXHJcbiAgICAgIHBheWxvYWRQcm9maWxlSW5mby5kaXJlY3RNYW5hZ2VyTmFtZSxcclxuICAgICAgcGF5bG9hZFByb2ZpbGVJbmZvLnNlbmlvclNlY3Rvck5hbWVcclxuICAgICk7XHJcbiAgICAvKiBHZW5lcmF0ZSBTZWN0aW9ucyBPYmplY3QgKi9cclxuICAgIHJlc3VsdC5zZWN0aW9ucyA9IFtdO1xyXG4gICAgLyogUHVzaCBhcyBmaXJzdCBvYmplY3QgdGhlIHNlY3Rpb24gZm9yIHRoZSByZXF1ZXN0IGRldGFpbHMgKi9cclxuICAgIGxldCByZXF1ZXN0RGV0YWlsc0hhc0NvbW1lbnQgPSBmYWxzZTtcclxuICAgIGlmIChwYXlsb2FkLmRhdGEucmVxdWVzdC5kZXRhaWxzLmNvbW1lbnQpIHtcclxuICAgICAgcmVxdWVzdERldGFpbHNIYXNDb21tZW50ID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJlc3VsdC5zZWN0aW9ucy5wdXNoKFxyXG4gICAgICBuZXcgU2VjdGlvbihcclxuICAgICAgICBjb25zdGFudHMuU0VDVElPTl9JRF9SRVFVRVNUX0RFVEFJTFMsXHJcbiAgICAgICAgbmV3IFNlY3Rpb25IZWFkZXIoXHJcbiAgICAgICAgICBjb25zdGFudHMuRE9OVF9TSE9XLFxyXG4gICAgICAgICAgY29uc3RhbnRzLkRPTlRfU0hPVyxcclxuICAgICAgICAgIGNvbnN0YW50cy5ET05UX1NIT1csXHJcbiAgICAgICAgICBjb25zdGFudHMuRE9OVF9TSE9XLFxyXG4gICAgICAgICAgY29uc3RhbnRzLkRPTlRfU0hPVyxcclxuICAgICAgICAgIGNvbnN0YW50cy5ET05UX1NIT1csXHJcbiAgICAgICAgICBjb25zdGFudHMuRE9OVF9TSE9XLFxyXG4gICAgICAgICAgcmVxdWVzdERldGFpbHNIYXNDb21tZW50LFxyXG4gICAgICAgICAgKHBheWxvYWQuZGF0YVsnd29ya2Zsb3dTdGVwcyddID8gY29uc3RhbnRzLlJFQURfT05MWSA6IGlzUmVhZE9ubHkpXHJcbiAgICAgICAgKSxcclxuICAgICAgICBwYXlsb2FkLmRhdGEucmVxdWVzdFxyXG4gICAgICApXHJcbiAgICApO1xyXG5cclxuICAgIC8qICAgaWYgKHJlc3VsdC5oZWFkZXIuZm9ybUlkKSB7XHJcbiAgICAgICAgIHJlc3VsdC5jb21tZW50c0Ryb3AgPSAoIXJlc3VsdC5jb21tZW50c0Ryb3AgPyBbXSA6IHJlc3VsdC5jb21tZW50c0Ryb3ApO1xyXG4gICAgICAgICB0aGlzLmRpc3BhdGNoKGNvbnN0YW50cy5TVEFURV9NQUNISU5FX0FDVElPTl9MT0FEX0hJU1RPUlksIHJlc3VsdC5oZWFkZXIuZm9ybUlkKS50aGVuKChyZXNwb25zZU9iamVjdDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgaWYgKHJlc3BvbnNlT2JqZWN0KSB7XHJcbiAgICAgICAgICAgICByZXNwb25zZU9iamVjdC5pdGVtcy5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgaWYgKGl0ZW0uc2VxdWVuY2VOdW1iZXIgIT09ICcwJyAmJiBpdGVtLnByb2Nlc3NlZEJ5KSB7XHJcbiAgICAgICAgICAgICAgICAgY29uc3QgbmFtZSA9IGl0ZW0ucHJvY2Vzc2VkQnkuZmlyc3ROYW1lICsgJyAnICsgaXRlbS5wcm9jZXNzZWRCeS5zZWNvbmRNaWRkbGVOYW1lICsgJyAnICsgaXRlbS5wcm9jZXNzZWRCeS5mYW1pbHlOYW1lO1xyXG4gICAgICAgICAgICAgICAgIHJlc3VsdC5jb21tZW50c0Ryb3AucHVzaChuZXcgQ29tbWVudHNEcm9wKFxyXG4gICAgICAgICAgICAgICAgICAgY29uc3RhbnRzLklHQVRFX1NUQVRJQ19BU1NFVF9QUk9GSUxFX1BIT1RPX1VSTCArIGl0ZW0ucHJvY2Vzc2VkQnkuZW1haWwsXHJcbiAgICAgICAgICAgICAgICAgICBuYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgaXRlbS5jb21tZW50cyxcclxuICAgICAgICAgICAgICAgICAgIGl0ZW0ubW9kaWZpZWREYXRlLFxyXG4gICAgICAgICAgICAgICAgICAgaXRlbS5hdHRhY2htZW50cyxcclxuICAgICAgICAgICAgICAgICAgIGl0ZW0ucHJvY2Vzc2VkQnkuam9iXHJcbiAgICAgICAgICAgICAgICAgKSk7XHJcbiAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgIH1cclxuICAgICAgICAgfSk7XHJcbiAgICAgICB9XHJcbiAgICAgICBpZiAocmVzdWx0LmhlYWRlci5mb3JtSWQgJiYgL15EWUwvLnRlc3QocmVzdWx0LmhlYWRlci5mb3JtSWQpKSB7XHJcbiAgICAgICAgIHRoaXMuc3RhdGUgPSBjb25zdGFudHMuU1RBVEVfTUFDSElORV9TVEFUVVNfSURMRTtcclxuICAgICAgICAgcmVzdWx0LmNvbmZpZGVudGlhbENvbW1lbnRzID0gW107XHJcbiAgICAgICAgIHRoaXMuZGlzcGF0Y2goJ2xvYWRDb25maWRlbnRpYWxDb21tZW50cycsIHJlc3VsdC5oZWFkZXIuZm9ybUlkKS50aGVuKChyZXNwb25zZU9iamVjdDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgaWYgKHJlc3BvbnNlT2JqZWN0ICYmIHJlc3BvbnNlT2JqZWN0Lml0ZW1zICYmIHJlc3BvbnNlT2JqZWN0Lml0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgIHJlc3BvbnNlT2JqZWN0Lml0ZW1zLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICByZXN1bHQuY29uZmlkZW50aWFsQ29tbWVudHMucHVzaChuZXcgQ29tbWVudHNEcm9wKFxyXG4gICAgICAgICAgICAgICAgIGNvbnN0YW50cy5JR0FURV9TVEFUSUNfQVNTRVRfUFJPRklMRV9QSE9UT19VUkwgKyBpdGVtLmVtYWlsLFxyXG4gICAgICAgICAgICAgICAgIGl0ZW0ubmFtZSxcclxuICAgICAgICAgICAgICAgICBpdGVtLmNvbW1lbnQsXHJcbiAgICAgICAgICAgICAgICAgaXRlbS5tb2RpZmllZERhdGUsXHJcbiAgICAgICAgICAgICAgICAgaXRlbS5hdHRhY2htZW50LFxyXG4gICAgICAgICAgICAgICAgIGl0ZW0ucG9zaXRpb25cclxuICAgICAgICAgICAgICAgKSk7XHJcbiAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgIH1cclxuICAgICAgICAgfSk7XHJcbiAgICAgICB9XHJcblxyXG4gICAgICAgY29uc3QgaW5ib3hUeXBlID0gdGhpcy5nZXRJbmJveFR5cGUocmVzdWx0KTtcclxuICAgICAgIGlmIChyZXN1bHQuaGVhZGVyLmZvcm1JZCAmJiAoIXRoaXMuaXNPcGVuT25JbmJveCgpKSkge1xyXG4gICAgICAgICB0aGlzLnN0YXRlID0gY29uc3RhbnRzLlNUQVRFX01BQ0hJTkVfU1RBVFVTX0lETEU7XHJcbiAgICAgICAgIHRoaXMuZGlzcGF0Y2goY29uc3RhbnRzLlNUQVRFX01BQ0hJTkVfQUNUSU9OX0dFVF9JTkJPWF9JVEVNLCByZXN1bHQuaGVhZGVyLmZvcm1JZCwgaW5ib3hUeXBlKS50aGVuKChyZXNwb25zZU9iamVjdCkgPT4ge1xyXG4gICAgICAgICAgIGlmIChyZXNwb25zZU9iamVjdCkge1xyXG4gICAgICAgICAgICAgY29uc3QgaXRlbSA9IHJlc3BvbnNlT2JqZWN0Lml0ZW07XHJcbiAgICAgICAgICAgICByZXN1bHQuaW5ib3hJdGVtID0gbmV3IEluYm94SXRlbShcclxuICAgICAgICAgICAgICAgaXRlbS5mbGFnZ2luZy5mbGFnUHJpb3JpdHksXHJcbiAgICAgICAgICAgICAgIGl0ZW0uZmxhZ2dpbmcuaXNGbGFnZ2VkLFxyXG4gICAgICAgICAgICAgICBpdGVtLmZlZWRiYWNrLmNhblJlcXVlc3RGZWVkYmFjayxcclxuICAgICAgICAgICAgICAgaXRlbS5mZWVkYmFjay5oYXNGZWVkYmFjayxcclxuICAgICAgICAgICAgICAgaXRlbS5mZWVkYmFjay5pc1BlbmRpbmcsXHJcbiAgICAgICAgICAgICAgIGl0ZW0uZmVlZGJhY2suaXNSZXF1ZXN0ZWQsXHJcbiAgICAgICAgICAgICAgIGl0ZW0uZmVlZGJhY2suaXNSZXNwb25kZWRcclxuICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgfVxyXG4gICAgICAgICB9KTtcclxuICAgICAgIH1cclxuXHJcbiAgICAgICBsZXQgcGF5bG9hZFdvcmtmbG93U3RlcHMgPSBwYXlsb2FkLmRhdGEud29ya2Zsb3dTdGVwcztcclxuICAgICAgIGlmIChwYXlsb2FkV29ya2Zsb3dTdGVwcyAmJiBwYXlsb2FkV29ya2Zsb3dTdGVwcy5jb25zdHJ1Y3RvciA9PT0gQXJyYXkgJiYgcGF5bG9hZFdvcmtmbG93U3RlcHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICBwYXlsb2FkV29ya2Zsb3dTdGVwcy5mb3JFYWNoKChzdGVwLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgIGxldCBjdXJyZW50SXNSZXF1ZXN0ZXJTZW5kQmFjayA9IEpTT04uc3RyaW5naWZ5KHN0ZXAuZGV0YWlscykgPT09IEpTT04uc3RyaW5naWZ5KHt9KTtcclxuICAgICAgICAgICBsZXQgaGFzQ29tbWVudHMgPSAoIWN1cnJlbnRJc1JlcXVlc3RlclNlbmRCYWNrICYmIChzdGVwLmRldGFpbHMuY29tbWVudCB8fCBzdGVwLmNvbW1lbnQpID8gY29uc3RhbnRzLkhBU19DT01NRU5UUyA6IGNvbnN0YW50cy5OT19DT01NRU5UUyk7XHJcbiAgICAgICAgICAgbGV0IGN1cnJlbnRBY3RvciA9IChzdGVwLmFjdG9yLmVtYWlsID09PSBzdGVwLmFjdG9yLnJlY2lwaWVudC5lbWFpbCA/IHN0ZXAuYWN0b3IucmVjaXBpZW50IDogKHN0ZXAuYWN0b3IuZGVsZWdhdGUgPyBzdGVwLmFjdG9yLmRlbGVnYXRlIDogbnVsbCkpXHJcbiAgICAgICAgICAgaWYgKGhhc0NvbW1lbnRzKSB7XHJcbiAgICAgICAgICAgICByZXN1bHQuY29tbWVudHNEcm9wID0gKCFyZXN1bHQuY29tbWVudHNEcm9wID8gW10gOiByZXN1bHQuY29tbWVudHNEcm9wKTtcclxuICAgICAgICAgICAgIGlmIChzdGVwLmRldGFpbHMuYXR0YWNobWVudCAmJiBzdGVwLmRldGFpbHMuYXR0YWNobWVudC5hdHRhY2htZW50SWQgJiYgdGhpcy5jb25maWcucHJvZHVjdGlvbikge1xyXG4gICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gY29uc3RhbnRzLlNUQVRFX01BQ0hJTkVfU1RBVFVTX0lETEU7XHJcbiAgICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2goY29uc3RhbnRzLlNUQVRFX01BQ0hJTkVfQUNUSU9OX0xPQURfRklMRSwgc3RlcC5kZXRhaWxzLmF0dGFjaG1lbnQuYXR0YWNobWVudElkKS50aGVuKChyZXNwb25zZU9iamVjdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgIGxldCBmaWxlSW5mb3JtYXRpb24gPSByZXNwb25zZU9iamVjdC5ib2R5O1xyXG4gICAgICAgICAgICAgICAgIGlmIChjdXJyZW50QWN0b3IpIHtcclxuICAgICAgICAgICAgICAgICAgIC8hKnRoaXMuZGlzcGF0Y2goY29uc3RhbnRzLlNUQVRFX01BQ0hJTkVfQUNUSU9OX0VNUExPWUVFX1BST0ZJTEUsIGN1cnJlbnRBY3Rvci5lbWFpbCkudGhlbigocHJvZmlsZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICByZXN1bHQuY29tbWVudHNEcm9wLnB1c2gobmV3IENvbW1lbnRzRHJvcChcclxuICAgICAgICAgICAgICAgICAgICAgICBjb25zdGFudHMuSUdBVEVfU1RBVElDX0FTU0VUX1BST0ZJTEVfUEhPVE9fVVJMICsgY3VycmVudEFjdG9yLmVtYWlsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRBY3Rvci5uYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgIChzdGVwLmRldGFpbHMuY29tbWVudCA/IHN0ZXAuZGV0YWlscy5jb21tZW50IDogKHN0ZXAuY29tbWVudCA/IHN0ZXAuY29tbWVudCA6IG51bGwpKSxcclxuICAgICAgICAgICAgICAgICAgICAgICBzdGVwLmRhdGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgZmlsZUluZm9ybWF0aW9uLmZpbGVOYW1lICsgXCJ8ZGF0YTpcIiArIGZpbGVJbmZvcm1hdGlvbi5taW1lVHlwZSArIFwiO2Jhc2U2NCxcIiArIGZpbGVJbmZvcm1hdGlvbi5maWxlQ29udGVudHMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZS5qb2IubmFtZVxyXG4gICAgICAgICAgICAgICAgICAgICApKVxyXG4gICAgICAgICAgICAgICAgICAgfSkqIS9cclxuICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gY29uc3RhbnRzLlNUQVRFX01BQ0hJTkVfU1RBVFVTX0ZFVENISU5HO1xyXG4gICAgICAgICAgICAgfSBlbHNlIGlmIChzdGVwLmRldGFpbHMuYXR0YWNobWVudElkKSB7XHJcbiAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBjb25zdGFudHMuU1RBVEVfTUFDSElORV9TVEFUVVNfSURMRTtcclxuICAgICAgICAgICAgICAgdGhpcy5kaXNwYXRjaChjb25zdGFudHMuU1RBVEVfTUFDSElORV9BQ1RJT05fTE9BRF9GSUxFLCBzdGVwLmRldGFpbHMuYXR0Y2htZW50SWQpLnRoZW4oKHJlc3BvbnNlT2JqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgbGV0IGZpbGVJbmZvcm1hdGlvbiA9IHJlc3BvbnNlT2JqZWN0LmJvZHk7XHJcbiAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRBY3Rvcikge1xyXG4gICAgICAgICAgICAgICAgICAgLyEqdGhpcy5kaXNwYXRjaChjb25zdGFudHMuU1RBVEVfTUFDSElORV9BQ1RJT05fRU1QTE9ZRUVfUFJPRklMRSwgY3VycmVudEFjdG9yLmVtYWlsKS50aGVuKChwcm9maWxlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5jb21tZW50c0Ryb3AucHVzaChuZXcgQ29tbWVudHNEcm9wKFxyXG4gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0YW50cy5JR0FURV9TVEFUSUNfQVNTRVRfUFJPRklMRV9QSE9UT19VUkwgKyBjdXJyZW50QWN0b3IuZW1haWwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudEFjdG9yLm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgKHN0ZXAuZGV0YWlscy5jb21tZW50ID8gc3RlcC5kZXRhaWxzLmNvbW1lbnQgOiAoc3RlcC5jb21tZW50ID8gc3RlcC5jb21tZW50IDogbnVsbCkpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgIHN0ZXAuZGF0ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICBmaWxlSW5mb3JtYXRpb24uZmlsZU5hbWUgKyBcInxkYXRhOlwiICsgZmlsZUluZm9ybWF0aW9uLm1pbWVUeXBlICsgXCI7YmFzZTY0LFwiICsgZmlsZUluZm9ybWF0aW9uLmZpbGVDb250ZW50cyxcclxuICAgICAgICAgICAgICAgICAgICAgICBwcm9maWxlLmpvYi5uYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgICkpXHJcbiAgICAgICAgICAgICAgICAgICB9KSohL1xyXG4gICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBjb25zdGFudHMuU1RBVEVfTUFDSElORV9TVEFUVVNfRkVUQ0hJTkc7XHJcbiAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICBpZiAoY3VycmVudEFjdG9yKSB7XHJcbiAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IGNvbnN0YW50cy5TVEFURV9NQUNISU5FX1NUQVRVU19JRExFO1xyXG4gICAgICAgICAgICAgICAgIC8hKnRoaXMuZGlzcGF0Y2goY29uc3RhbnRzLlNUQVRFX01BQ0hJTkVfQUNUSU9OX0VNUExPWUVFX1BST0ZJTEUsIGN1cnJlbnRBY3Rvci5lbWFpbCkudGhlbigocHJvZmlsZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgcmVzdWx0LmNvbW1lbnRzRHJvcC5wdXNoKG5ldyBDb21tZW50c0Ryb3AoXHJcbiAgICAgICAgICAgICAgICAgICAgIGNvbnN0YW50cy5JR0FURV9TVEFUSUNfQVNTRVRfUFJPRklMRV9QSE9UT19VUkwgKyBjdXJyZW50QWN0b3IuZW1haWwsXHJcbiAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRBY3Rvci5uYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAoc3RlcC5kZXRhaWxzLmNvbW1lbnQgPyBzdGVwLmRldGFpbHMuY29tbWVudCA6IChzdGVwLmNvbW1lbnQgPyBzdGVwLmNvbW1lbnQgOiBudWxsKSksXHJcbiAgICAgICAgICAgICAgICAgICAgIHN0ZXAuZGF0ZSxcclxuICAgICAgICAgICAgICAgICAgICAgbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZS5qb2IubmFtZVxyXG4gICAgICAgICAgICAgICAgICAgKSlcclxuICAgICAgICAgICAgICAgICB9KSohL1xyXG4gICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBjb25zdGFudHMuU1RBVEVfTUFDSElORV9TVEFUVVNfRkVUQ0hJTkc7XHJcbiAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICBpZiAod2FzU2VuZEJhY2sgJiYgc3RlcC5hY3Rvci5yZWNpcGllbnQucm9sZSA9PT0gJ1JFUVVFU1RFUicpIHtcclxuICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwid2FzU2VuZEJhY2sgJiYgUkVRVUVTVEVSXCIpXHJcbiAgICAgICAgICAgICByZXN1bHQuc2VjdGlvbnMgPSBbbmV3IFNlY3Rpb24oXHJcbiAgICAgICAgICAgICAgIGNvbnN0YW50cy5TRUNUSU9OX0lEX1JFUVVFU1RfREVUQUlMUyxcclxuICAgICAgICAgICAgICAgbmV3IFNlY3Rpb25IZWFkZXIoXHJcbiAgICAgICAgICAgICAgICAgY29uc3RhbnRzLkRPTlRfU0hPVyxcclxuICAgICAgICAgICAgICAgICBjb25zdGFudHMuRE9OVF9TSE9XLFxyXG4gICAgICAgICAgICAgICAgIGNvbnN0YW50cy5ET05UX1NIT1csXHJcbiAgICAgICAgICAgICAgICAgY29uc3RhbnRzLkRPTlRfU0hPVyxcclxuICAgICAgICAgICAgICAgICBjb25zdGFudHMuRE9OVF9TSE9XLFxyXG4gICAgICAgICAgICAgICAgIGNvbnN0YW50cy5ET05UX1NIT1csXHJcbiAgICAgICAgICAgICAgICAgY29uc3RhbnRzLkRPTlRfU0hPVyxcclxuICAgICAgICAgICAgICAgICByZXF1ZXN0RGV0YWlsc0hhc0NvbW1lbnQsXHJcbiAgICAgICAgICAgICAgICAgKHBheWxvYWQuZGF0YS53b3JrZmxvd1N0ZXBzID8gY29uc3RhbnRzLlJFQURfT05MWSA6IGlzUmVhZE9ubHkpXHJcbiAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgIHBheWxvYWQuZGF0YS5yZXF1ZXN0XHJcbiAgICAgICAgICAgICApXVxyXG4gICAgICAgICAgIH0gZWxzZSBpZiAod2FzU2VuZEJhY2spIHtcclxuICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiUG9wXCIpXHJcbiAgICAgICAgICAgICBpZiAocmVzdWx0LnNlY3Rpb25zLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgICAgICAgcmVzdWx0LnNlY3Rpb25zLnBvcCgpO1xyXG4gICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgd2FzU2VuZEJhY2sgPSBmYWxzZTtcclxuICAgICAgICAgICB9XHJcbiAgICAgICAgICAgaWYgKHN0ZXAuZGV0YWlscy5kZWNpc2lvbiAmJiBzdGVwLmRldGFpbHMuZGVjaXNpb24ua2V5ID09PSBjb25zdGFudHMuRk9STV9TVEFUVVNfU0VORF9CQUNLKSB7XHJcbiAgICAgICAgICAgICB3YXNTZW5kQmFjayA9IHRydWU7XHJcbiAgICAgICAgICAgfSBlbHNlIGlmIChKU09OLnN0cmluZ2lmeShzdGVwLmRldGFpbHMpICE9PSBKU09OLnN0cmluZ2lmeSh7fSkpIHtcclxuICAgICAgICAgICAgIHJlc3VsdC5zZWN0aW9ucy5wdXNoKFxyXG4gICAgICAgICAgICAgICBuZXcgU2VjdGlvbihcclxuICAgICAgICAgICAgICAgICBzdGVwLmFjdG9yLnJlY2lwaWVudC5yb2xlLnRvTG93ZXJDYXNlKCkgKyBjb25zdGFudHMuU0VDVElPTl9JRF9BUFBST1ZBTF9QQVJUSUFMX05BTUUsXHJcbiAgICAgICAgICAgICAgICAgbmV3IFNlY3Rpb25IZWFkZXIoXHJcbiAgICAgICAgICAgICAgICAgICAoY3VycmVudEFjdG9yID8gdGhpcy5nZXRTaG9ydE5hbWUoY3VycmVudEFjdG9yLm5hbWUpIDogbnVsbCksXHJcbiAgICAgICAgICAgICAgICAgICBzdGVwLmRhdGUsXHJcbiAgICAgICAgICAgICAgICAgICB0aGlzLmdldFNob3J0TmFtZShzdGVwLmFjdG9yLnJlY2lwaWVudC5uYW1lKSxcclxuICAgICAgICAgICAgICAgICAgIGNvbnN0YW50cy5JR0FURV9TVEFUSUNfQVNTRVRfUFJPRklMRV9QSE9UT19VUkwgKyBzdGVwLmFjdG9yLnJlY2lwaWVudC5lbWFpbCxcclxuICAgICAgICAgICAgICAgICAgIChzdGVwLmFjdG9yLmRlbGVnYXRlICYmIHN0ZXAuYWN0b3IuZGVsZWdhdGUubmFtZSA/IHRoaXMuZ2V0U2hvcnROYW1lKHN0ZXAuYWN0b3IuZGVsZWdhdGUubmFtZSkgOiBudWxsKSxcclxuICAgICAgICAgICAgICAgICAgIChzdGVwLmFjdG9yLmRlbGVnYXRlICYmIHN0ZXAuYWN0b3IuZGVsZWdhdGUuZW1haWwgPyBjb25zdGFudHMuSUdBVEVfU1RBVElDX0FTU0VUX1BST0ZJTEVfUEhPVE9fVVJMICsgc3RlcC5hY3Rvci5kZWxlZ2F0ZS5lbWFpbCA6IG51bGwpLFxyXG4gICAgICAgICAgICAgICAgICAgc3RlcC5hY3Rvci5zdGF0dXMsXHJcbiAgICAgICAgICAgICAgICAgICBoYXNDb21tZW50cyxcclxuICAgICAgICAgICAgICAgICAgIChpbmRleCA8IHBheWxvYWRXb3JrZmxvd1N0ZXBzLmxlbmd0aCAtIDEgPyBjb25zdGFudHMuUkVBRF9PTkxZIDogaXNSZWFkT25seSlcclxuICAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgIHtkZXRhaWxzOiBzdGVwLmRldGFpbHMsIHByb2Nlc3NpbmdEYXRlOiBzdGVwLmRhdGV9XHJcbiAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICB0aGlzLmN1cnJlbnRTdWJtaXR0ZXIgPSB7YWN0b3I6IHN0ZXAuYWN0b3IsIHJlY2lwaWVudDogc3RlcC5yZWNpcGllbnQsIGRlbGVnYXRlOiBzdGVwLmFjdG9yLmRlbGVnYXRlfTtcclxuICAgICAgICAgICB9XHJcbiAgICAgICAgIH0pO1xyXG4gICAgICAgfVxyXG4gICAqL1xyXG4gICAgLyogQ3JlYXRlIExvdiBTZWN0aW9ucyAqL1xyXG4gICAgcmVzdWx0LmxvdnMgPSAocGF5bG9hZC5tZXRhICYmIHBheWxvYWQubWV0YS5sb3ZzID8gcGF5bG9hZC5tZXRhLmxvdnMgOiBudWxsKTtcclxuXHJcbiAgICBpZiAocGF5bG9hZC5tZXRhICYmIHBheWxvYWQubWV0YS5tZXNzYWdlcykge1xyXG4gICAgICByZXN1bHQubWVzc2FnZXMgPSBuZXcgTWVzc2FnZXMoXHJcbiAgICAgICAge30sXHJcbiAgICAgICAgW10sXHJcbiAgICAgICAgW10sXHJcbiAgICAgICAgW11cclxuICAgICAgKTtcclxuICAgICAgcGF5bG9hZC5tZXRhLm1lc3NhZ2VzLmZvckVhY2goKG1lc3NhZ2UpID0+IHtcclxuICAgICAgICByZXN1bHQubWVzc2FnZXMub3JpZ2luYWxNc2dzLnB1c2gobWVzc2FnZSk7XHJcbiAgICAgICAgcmVzdWx0Lm1lc3NhZ2VzW21lc3NhZ2UudHlwZV0ucHVzaChtZXNzYWdlLm1lc3NhZ2UpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyByZXN1bHQubWVzc2FnZXMgPSAocGF5bG9hZC5tZXRhICYmIHBheWxvYWQubWV0YS5tZXNzYWdlcyA/IHBheWxvYWQubWV0YS5tZXNzYWdlcyA6IG51bGwpO1xyXG4gICAgLyogRml4IGxhc3Qgc2VjdGlvbiB0byBiZSB0aGUgUk8vV00gZnJvbSB0aGUgdmFyaWFibGUgKi9cclxuICAgIHJlc3VsdC5zZWN0aW9uc1tyZXN1bHQuc2VjdGlvbnMubGVuZ3RoIC0gMV0uaGVhZGVyLnJlYWRPbmx5ID0gaXNSZWFkT25seTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbG9nZ2VkSW5Vc2VySWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy51c2VyRGF0YVsnbG9nZ2VkSW5Vc2VyRW1haWwnXTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
365
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS5zZXJ2aWNlLnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9jb3JlLnNlcnZpY2UudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFhLFdBQVcsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzdELE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRWpELE9BQU8sRUFBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxtQkFBbUIsRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ3RILE9BQU8sS0FBSyxTQUFTLE1BQU0sY0FBYyxDQUFBO0FBQ3pDLE9BQU8sRUFBQyxVQUFVLEVBQUUsVUFBVSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzVDLE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBS25DLE1BQU0sT0FBTyxXQUFXO0lBVUY7SUFDNkI7SUFWakQsTUFBTSxHQUFXLEVBQUUsQ0FBQTtJQUNYLFNBQVMsQ0FBUztJQUNsQixZQUFZLENBQVM7SUFDWixhQUFhLENBQVM7SUFDaEMsUUFBUSxDQUFTO0lBQ1AsU0FBUyxDQUFLO0lBQ3hCLGdCQUFnQixDQUFPO0lBRzlCLFlBQW9CLElBQWdCLEVBQ2EsTUFBbUI7UUFEaEQsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNhLFdBQU0sR0FBTixNQUFNLENBQWE7UUFDbEUsTUFBTSxRQUFRLEdBQUksTUFBYyxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFFLE1BQWMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDaEcsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLG1CQUFtQixHQUFHLFFBQVEs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QUFDLENBQUMsRUFBRSxVQUFVLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDekcsQ0FBQztxQkFBTSxDQUFDO29CQUNOLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3RFLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDO3VHQXhaVSxXQUFXLDRDQVdGLG1CQUFtQjsyR0FYNUIsV0FBVyxjQUZWLEtBQUs7OzJGQUVOLFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLEtBQUs7aUJBQ2xCOzswQkFZYyxNQUFNOzJCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SHR0cENsaWVudCwgSHR0cEhlYWRlcnN9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZX0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHR5cGUge015TGliQ29uZmlnfSBmcm9tIFwiLi4vaW50ZXJmYWNlcy9zaGFyZWQuaW50ZXJmYWNlXCI7XHJcbmltcG9ydCB7Rm9ybSwgSGVhZGVyLCBNZXNzYWdlcywgTVlfTElCX0NPTkZJR19UT0tFTiwgUHJvZmlsZUluZm9Ecm9wLCBTZWN0aW9uLCBTZWN0aW9uSGVhZGVyfSBmcm9tIFwiLi4vLi4vcHVibGljLWFwaVwiO1xyXG5pbXBvcnQgKiBhcyBjb25zdGFudHMgZnJvbSAnLi4vY29uc3RhbnRzJ1xyXG5pbXBvcnQge2NhdGNoRXJyb3IsIHRocm93RXJyb3J9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7bWFwfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiBcImFueVwiXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3JlU2VydmljZSB7XHJcbiAgYXBpVXJsOiBzdHJpbmcgPSAnJ1xyXG4gIHByaXZhdGUgYXV0aFRva2VuOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSByZWZyZXNoVG9rZW46IHN0cmluZztcclxuICBwcml2YXRlIHJlYWRvbmx5IHByb2plY3RDb25maWc6IHN0cmluZztcclxuICBwdWJsaWMgdXNlckRhdGE6IHN0cmluZztcclxuICBwcml2YXRlIHJlYWRvbmx5IGxvY2FsVXNlcjoge307XHJcbiAgcHVibGljIGxvZ2dlZEluVXNlckRhdGE6IHsgIH07XHJcblxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICAgICAgICAgICAgQEluamVjdChNWV9MSUJfQ09ORklHX1RPS0VOKSBwcml2YXRlIGNvbmZpZzogTXlMaWJDb25maWcpIHtcclxuICAgIGNvbnN0IGxhbmd1YWdlID0gKHdpbmRvdyBhcyBhbnkpPy53bUNvbmZpZz8ubGFuZ3VhZ2UgPyAod2luZG93IGFzIGFueSkud21Db25maWcubGFuZ3VhZ2UgOiAnZW4nO1xyXG4gICAgdGhpcy5hcGlVcmwgPSB0aGlzLmNvbmZpZy5wcm94eVNlcnZpY2VCYXNlVXJsICsgbGFuZ3VhZ2UgKyB0aGlzLmNvbmZpZy5wcm94eUZ1bGxBZGRyZXNzICsgdGhpcy5jb25maWcucHJveHlTZXJ2aWNlRXhlY3V0ZTtcclxuICAgIGNvbnNvbGUubG9nKCdDb25maWc6ICcsIHRoaXMuY29uZmlnKTsgLy8gZm9yIHRlc3RpbmcgcHVycG9zZXMgb25seVxyXG4gICAgdGhpcy5sb2NhbFVzZXIgPSB7XHJcbiAgICAgIFwiZm9ybVByZWZpeFwiOiBcIkNFUFwiLFxyXG4gICAgICBcImZvcm1JZFwiOiBcIkNFUDU1OTU0MzJcIixcclxuICAgICAgXCJpbmJveFVyaVwiOiBcIlxcL2dyb3VwXFwvaHViXFwvaW5ib3hcIixcclxuICAgICAgXCJiYXNlVXJsXCI6IFwiXFwvZ3JvdXBcXC9pLWdhdGVcXC93bS1icG1cXC9mb3Jtc1xcLy1cXC9wcm94eVwiLFxyXG4gICAgICBcInNob3dQcmludFwiOiB0cnVlLFxyXG4gICAgICBcImxhbmd1YWdlXCI6IFwiZW5cIixcclxuICAgICAgXCJpc01vYmlsZVwiOiB0cnVlLFxyXG4gICAgICBcIm91dGxvb2tcIjogZmFsc2UsXHJcbiAgICAgIFwibG9nZ2VkSW5Vc2VyRW1haWxcIjogXCJpYnJhaGltbWFhLmNAc3RjLmNvbS5zYVwiXHJcbiAgICB9XHJcbiAgICB0aGlzLnByb2plY3RDb25maWcgPSAodGhpcy5jb25maWcucHJvZHVjdGlvbikgPyAod2luZG93IGFzIGFueSlbJ3dtQ29uZmlnJ10gOiBidG9hKEpTT04uc3RyaW5naWZ5KHRoaXMubG9jYWxVc2VyKSk7XHJcbiAgICB0aGlzLnVzZXJEYXRhID0gSlNPTi5wYXJzZShhdG9iKHRoaXMucHJvamVjdENvbmZpZykpO1xyXG4gIH1cclxuXHJcbiAgZ2V0TG9nZ2VkSW5Vc2VyRGF0YSgpIHtcclxuICAgIGxldCBsb2dnZWRJbkVtYWlsID0gdGhpcy5sb2dnZWRJblVzZXJJZCgpXHJcbiAgICB0aGlzLmVtcGxveWVlUHJvZmlsZShsb2dnZWRJbkVtYWlsKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5sb2dnZWRJblVzZXJEYXRhID0gcmVzcG9uc2U/LltcIlVzZXJzXCJdPy5bMF1cclxuICAgICAgY29uc29sZS5sb2coJ2dldExvZ2dlZEluVXNlckRhdGEnLCByZXNwb25zZSlcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBsb2FkRm9ybSgpIHtcclxuICAgIGNvbnN0IGF1dGhVcmwgPSB0aGlzLmJ1aWxkQXV0aFVybCgpO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYXV0aFVybCwge29ic2VydmU6ICdyZXNwb25zZSd9KS50b1Byb21pc2UoKVxyXG4gICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCB0b2tlbkluZm9ybWF0aW9uID0gcmVzLmJvZHk7XHJcbiAgICAgICAgdGhpcy5hdXRoVG9rZW4gPSB0b2tlbkluZm9ybWF0aW9uLnRva2VuO1xyXG4gICAgICAgIHRoaXMuZ2V0TG9nZ2VkSW5Vc2VyRGF0YSgpXHJcbiAgICAgICAgdGhpcy5yZWZyZXNoVG9rZW4gPSB0b2tlbkluZm9ybWF0aW9uLnJlZnJlc2hUb2tlbjtcclxuICAgICAgICBjb25zdCBib2R5ID0gdGhpcy5idWlsZEJvZHkoKTtcclxuICAgICAgICBjb25zdCBvcHRpb25zID0gdGhpcy5nZXRSZXF1ZXN0T3B0aW9ucygpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNhbGxQb3N0KGJvZHksIG9wdGlvbnMpO1xyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2goKGh0dHBFcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoaHR0cEVycm9yKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJ1aWxkQXV0aFVybCgpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgYmFzZVVybCA9IHRoaXMuY29uZmlnLnByb3h5U2VydmljZUJhc2VVcmw7XHJcbiAgICBjb25zdCBsYW5ndWFnZSA9ICh3aW5kb3cgYXMgYW55KT8ud21Db25maWc/Lmxhbmd1YWdlID8gKHdpbmRvdyBhcyBhbnkpLndtQ29uZmlnLmxhbmd1YWdlIDogJ2VuJztcclxuICAgIGNvbnN0IGZ1bGxBZGRyZXNzID0gdGhpcy5jb25maWcucHJveHlGdWxsQWRkcmVzcztcclxuICAgIGNvbnN0IGF1dGhQYXJ0ID0gdGhpcy5jb25maWcucHJveHlTZXJ2aWNlQXV0aG9yaXphdGlvbjtcclxuICAgIHJldHVybiBgJHtiYXNlVXJsfSR7bGFuZ3VhZ2V9JHtmdWxsQWRkcmVzc30ke2F1dGhQYXJ0fT90cz0keyhuZXcgRGF0ZSgpKS52YWx1ZU9mKCl9YDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYnVpbGRCb2R5KCk6IG9iamVjdCB7XHJcbiAgICBjb25zdCBiYXNlQm9keSA9IHtcclxuICAgICAgbWV0aG9kOiBjb25zdGFudHMuSFRUUF9NRVRIT0RfR0VULFxyXG4gICAgICBkZXN0aW5hdGlvbjogY29uc3RhbnRzLlRBUkdFVF9TRVJWRVJfV00sXHJcbiAgICAgIHNlcnZpY2VOYW1lOiBjb25zdGFudHMuU0VSVklDRV9OQU1FX1dNX0ZPUk0sXHJcbiAgICAgIGZvcm1OYW1lOiB0aGlzLmNvbmZpZy5mb3JtTmFtZSxcclxuICAgICAgZm9ybUlkOiBcIlwiLFxyXG4gICAgICBxdWVyeVBhcmFtZXRlcnM6IG51bGxcclxuICAgIH07XHJcbiAgICBpZiAoIXRoaXMuY29uZmlnLmZvcm1JZCkge1xyXG4gICAgICBkZWxldGUgYmFzZUJvZHkuZm9ybUlkO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgYmFzZUJvZHkuZm9ybUlkID0gdGhpcy5jb25maWcuZm9ybUlkO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGJhc2VCb2R5O1xyXG4gIH1cclxuXHJcbiAgZW1wbG95ZWVQcm9maWxlKGVtcGxveWVlRW1haWw6IGFueSkge1xyXG4gICAgbGV0IGJvZHkgPSB7XHJcbiAgICAgIG1ldGhvZDogXCJHRVRcIixcclxuICAgICAgZm9ybU5hbWU6IFwiQUFJXCIsXHJcbiAgICAgIGRlc3RpbmF0aW9uOiBcIkRQXCIsXHJcbiAgICAgIHNlcnZpY2VOYW1lOiBcImlnYXRlLnVzZXJzLnNlYXJjaC52M1wiLFxyXG4gICAgICBwYXJhbWV0ZXJzOiB7XHJcbiAgICAgICAgcTogZW1wbG95ZWVFbWFpbFxyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuYXBpVXJsLCBib2R5LCB7XHJcbiAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICAgYXV0aFRva2VuOiB0aGlzLmF1dGhUb2tlbixcclxuICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZFwiXHJcbiAgICAgIH0pLFxyXG4gICAgICBvYnNlcnZlOiBcImJvZHlcIlxyXG4gICAgfSkucGlwZShcclxuICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlXHJcbiAgICAgIH0pXHJcbiAgICAgICwgY2F0Y2hFcnJvcigoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnIpXHJcbiAgICAgIH0pKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0UmVxdWVzdE9wdGlvbnMoKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICAgIGF1dGhUb2tlbjogdGhpcy5hdXRoVG9rZW4sXHJcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6IGNvbnN0YW50cy5IRUFERVJfQ09OVEVOVF9UWVBFX0ZPUk1cclxuICAgICAgfSksXHJcbiAgICAgIG9ic2VydmU6ICdib2R5J1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjYWxsUG9zdChib2R5LCBvcHRpb25zKSB7XHJcbiAgICBjb25zdCBsYW5ndWFnZSA9ICh3aW5kb3cgYXMgYW55KT8ud21Db25maWc/Lmxhbmd1YWdlID8gKHdpbmRvdyBhcyBhbnkpLndtQ29uZmlnLmxhbmd1YWdlIDogXCJlblwiO1xyXG4gICAgbGV0IGFwaVVybCA9IHRoaXMuY29uZmlnLnByb3h5U2VydmljZUJhc2VVcmwgKyBsYW5ndWFnZSArIHRoaXMuY29uZmlnLnByb3h5RnVsbEFkZHJlc3MgKyB0aGlzLmNvbmZpZy5wcm94eVNlcnZpY2VFeGVjdXRlO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGFwaVVybCwgZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KGJvZHkpKSwgb3B0aW9ucykudG9Qcm9taXNlKClcclxuICAgICAgLnRoZW4oXHJcbiAgICAgICAgKHJlc3BvbnNlT2JqZWN0OiBhbnkpID0+IHtcclxuICAgICAgICAgIC8vIGxldCBwYXlsb2FkID0gcmVzcG9uc2VPYmplY3QuYm9keTtcclxuICAgICAgICAgIHJldHVybiB0aGlzLnN1Y2Nlc3NXbShyZXNwb25zZU9iamVjdClcclxuICAgICAgICB9LFxyXG4gICAgICApLmNhdGNoKFxyXG4gICAgICAgIChodHRwRXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoaHR0cEVycm9yKVxyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIHN1Y2Nlc3NXbSguLi5hcmdzKSB7XHJcbiAgICBsZXQgW3BheWxvYWRdID0gYXJncztcclxuICAgIC8vIGxldCB3YXNTZW5kQmFjayA9IGZhbHNlO1xyXG4gICAgLyogQ29udmVydCBpbnRvIEZvcm0gT2JqZWN0ICovXHJcbiAgICBsZXQgcmVzdWx0ID0gbmV3IEZvcm0oXHJcbiAgICAgIGNvbnN0YW50cy5OT19WQUxVRSxcclxuICAgICAgY29uc3RhbnRzLk5PX1ZBTFVFLFxyXG4gICAgICBjb25zdGFudHMuTk9fVkFMVUUsXHJcbiAgICAgIGNvbnN0YW50cy5OT19WQUxVRSxcclxuICAgICAgY29uc3RhbnRzLk5PX1ZBTFVFLFxyXG4gICAgICBjb25zdGFudHMuTk9fVkFMVUUsXHJcbiAgICAgIGNvbnN0YW50cy5OT19WQUxVRVxyXG4gICAgKTtcclxuICAgIC8qIEdlbmVyYXRlIEhlYWRlciBPYmplY3QgKi9cclxuICAgIGxldCBwYXlsb2FkRm9ybURldGFpbHMgPSBwYXlsb2FkLmRhdGEuZm9ybTtcclxuICAgIGxldCBpc1JlYWRPbmx5ID0gKHBheWxvYWRGb3JtRGV0YWlscy5yZWFkT25seS50b1VwcGVyQ2FzZSgpID09PSBjb25zdGFudHMuVFJVRV9TVFJJTkcgPyBjb25zdGFudHMuVFJVRV9CT09MIDogKHBheWxvYWRGb3JtRGV0YWlscy5yZWFkT25seS50b1VwcGVyQ2FzZSgpID09PSBjb25zdGFudHMuRkFMU0VfU1RSSU5HID8gY29uc3RhbnRzLkZBTFNFX0JPT0wgOiBjb25zdGFudHMuTk9fVkFMVUUpKVxyXG4gICAgcmVzdWx0LmhlYWRlciA9IG5ldyBIZWFkZXIoXHJcbiAgICAgIHBheWxvYWQuZGF0YVsncmVxdWVzdGVyJ10uZnVsbE5hbWUsXHJcbiAgICAgIGNvbnN0YW50cy5JR0FURV9TVEFUSUNfQVNTRVRfUFJPRklMRV9QSE9UT19VUkwgKyBwYXlsb2FkLmRhdGFbJ3JlcXVlc3RlciddLmVtcGxveWVlRW1haWwsXHJcbiAgICAgIChwYXlsb2FkRm9ybURldGFpbHMuZm9ybUlkID8gcGF5bG9hZEZvcm1EZXRhaWxzLmZvcm1JZCA6IGNvbnN0YW50cy5ET05UX1NIT1cpLFxyXG4gICAgICAocGF5bG9hZEZvcm1EZXRhaWxzLmNyZWF0aW9uRGF0ZSA/IHBheWxvYWRGb3JtRGV0YWlscy5jcmVhdGlvbkRhdGUgOiBjb25zdGFudHMuRE9OVF9TSE9XKSxcclxuICAgICAgcGF5bG9hZEZvcm1EZXRhaWxzWydmb3JtU3RhdHVzJ10sXHJcbiAgICAgIHBheWxvYWRGb3JtRGV0YWlscy5kZXRhaWxzXHJcbiAgICApO1xyXG4gICAgLyogR2VuZXJhdGUgUHJvZmlsZSBJbmZvcm1hdGlvbiBPYmplY3QgKi9cclxuICAgIGxldCBwYXlsb2FkUHJvZmlsZUluZm8gPSBwYXlsb2FkLmRhdGFbJ3JlcXVlc3RlciddO1xyXG4gICAgcmVzdWx0LnByb2ZpbGVJbmZvRHJvcCA9IG5ldyBQcm9maWxlSW5mb0Ryb3AoXHJcbiAgICAgIChwYXlsb2FkUHJvZmlsZUluZm8ub25CZWhhbGZBdXRob3JpemVkID8gSlNPTi5wYXJzZShwYXlsb2FkUHJvZmlsZUluZm8ub25CZWhhbGZBdXRob3JpemVkKSA6IG51bGwpLFxyXG4gICAgICBwYXlsb2FkUHJvZmlsZUluZm9bJ2VtcGxveWVlSWQnXSxcclxuICAgICAgcGF5bG9hZFByb2ZpbGVJbmZvLmVtcGxveWVlRW1haWwsXHJcbiAgICAgIHBheWxvYWRQcm9maWxlSW5mby5mdWxsTmFtZSxcclxuICAgICAgcGF5bG9hZFByb2ZpbGVJbmZvLmdlbmVyYWxEZXBhcnRtZW50TmFtZSxcclxuICAgICAgcGF5bG9hZFByb2ZpbGVJbmZvLmpvYlBvc2l0aW9uLFxyXG4gICAgICBwYXlsb2FkUHJvZmlsZUluZm8uc2VjdG9yTmFtZSxcclxuICAgICAgcGF5bG9hZFByb2ZpbGVJbmZvLmRlcGFydG1lbnROYW1lLFxyXG4gICAgICBwYXlsb2FkUHJvZmlsZUluZm8uZ2VuZXJhbERlcGFydG1lbnRDb2RlLFxyXG4gICAgICBwYXlsb2FkUHJvZmlsZUluZm9bJ2h1bWFuUmVzb3VyY2VMb2NhdGlvbiddLFxyXG4gICAgICBwYXlsb2FkUHJvZmlsZUluZm8ubmF0aW9uYWxpdHksXHJcbiAgICAgIHBheWxvYWRQcm9maWxlSW5mby5idXNpbmVzc1Bob25lLFxyXG4gICAgICBwYXlsb2FkUHJvZmlsZUluZm8uZGlyZWN0TWFuYWdlck5hbWUsXHJcbiAgICAgIHBheWxvYWRQcm9maWxlSW5mby5zZW5pb3JTZWN0b3JOYW1lXHJcbiAgICApO1xyXG4gICAgLyogR2VuZXJhdGUgU2VjdGlvbnMgT2JqZWN0ICovXHJcbiAgICByZXN1bHQuc2VjdGlvbnMgPSBbXTtcclxuICAgIC8qIFB1c2ggYXMgZmlyc3Qgb2JqZWN0IHRoZSBzZWN0aW9uIGZvciB0aGUgcmVxdWVzdCBkZXRhaWxzICovXHJcbiAgICBsZXQgcmVxdWVzdERldGFpbHNIYXNDb21tZW50ID0gZmFsc2U7XHJcbiAgICBpZiAocGF5bG9hZC5kYXRhLnJlcXVlc3QuZGV0YWlscy5jb21tZW50KSB7XHJcbiAgICAgIHJlcXVlc3REZXRhaWxzSGFzQ29tbWVudCA9IHRydWU7XHJcbiAgICB9XHJcbiAgICByZXN1bHQuc2VjdGlvbnMucHVzaChcclxuICAgICAgbmV3IFNlY3Rpb24oXHJcbiAgICAgICAgY29uc3RhbnRzLlNFQ1RJT05fSURfUkVRVUVTVF9ERVRBSUxTLFxyXG4gICAgICAgIG5ldyBTZWN0aW9uSGVhZGVyKFxyXG4gICAgICAgICAgY29uc3RhbnRzLkRPTlRfU0hPVyxcclxuICAgICAgICAgIGNvbnN0YW50cy5ET05UX1NIT1csXHJcbiAgICAgICAgICBjb25zdGFudHMuRE9OVF9TSE9XLFxyXG4gICAgICAgICAgY29uc3RhbnRzLkRPTlRfU0hPVyxcclxuICAgICAgICAgIGNvbnN0YW50cy5ET05UX1NIT1csXHJcbiAgICAgICAgICBjb25zdGFudHMuRE9OVF9TSE9XLFxyXG4gICAgICAgICAgY29uc3RhbnRzLkRPTlRfU0hPVyxcclxuICAgICAgICAgIHJlcXVlc3REZXRhaWxzSGFzQ29tbWVudCxcclxuICAgICAgICAgIChwYXlsb2FkLmRhdGFbJ3dvcmtmbG93U3RlcHMnXSA/IGNvbnN0YW50cy5SRUFEX09OTFkgOiBpc1JlYWRPbmx5KVxyXG4gICAgICAgICksXHJcbiAgICAgICAgcGF5bG9hZC5kYXRhLnJlcXVlc3RcclxuICAgICAgKVxyXG4gICAgKTtcclxuXHJcbiAgICAvKiAgIGlmIChyZXN1bHQuaGVhZGVyLmZvcm1JZCkge1xyXG4gICAgICAgICByZXN1bHQuY29tbWVudHNEcm9wID0gKCFyZXN1bHQuY29tbWVudHNEcm9wID8gW10gOiByZXN1bHQuY29tbWVudHNEcm9wKTtcclxuICAgICAgICAgdGhpcy5kaXNwYXRjaChjb25zdGFudHMuU1RBVEVfTUFDSElORV9BQ1RJT05fTE9BRF9ISVNUT1JZLCByZXN1bHQuaGVhZGVyLmZvcm1JZCkudGhlbigocmVzcG9uc2VPYmplY3Q6IGFueSkgPT4ge1xyXG4gICAgICAgICAgIGlmIChyZXNwb25zZU9iamVjdCkge1xyXG4gICAgICAgICAgICAgcmVzcG9uc2VPYmplY3QuaXRlbXMuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgIGlmIChpdGVtLnNlcXVlbmNlTnVtYmVyICE9PSAnMCcgJiYgaXRlbS5wcm9jZXNzZWRCeSkge1xyXG4gICAgICAgICAgICAgICAgIGNvbnN0IG5hbWUgPSBpdGVtLnByb2Nlc3NlZEJ5LmZpcnN0TmFtZSArICcgJyArIGl0ZW0ucHJvY2Vzc2VkQnkuc2Vjb25kTWlkZGxlTmFtZSArICcgJyArIGl0ZW0ucHJvY2Vzc2VkQnkuZmFtaWx5TmFtZTtcclxuICAgICAgICAgICAgICAgICByZXN1bHQuY29tbWVudHNEcm9wLnB1c2gobmV3IENvbW1lbnRzRHJvcChcclxuICAgICAgICAgICAgICAgICAgIGNvbnN0YW50cy5JR0FURV9TVEFUSUNfQVNTRVRfUFJPRklMRV9QSE9UT19VUkwgKyBpdGVtLnByb2Nlc3NlZEJ5LmVtYWlsLFxyXG4gICAgICAgICAgICAgICAgICAgbmFtZSxcclxuICAgICAgICAgICAgICAgICAgIGl0ZW0uY29tbWVudHMsXHJcbiAgICAgICAgICAgICAgICAgICBpdGVtLm1vZGlmaWVkRGF0ZSxcclxuICAgICAgICAgICAgICAgICAgIGl0ZW0uYXR0YWNobWVudHMsXHJcbiAgICAgICAgICAgICAgICAgICBpdGVtLnByb2Nlc3NlZEJ5LmpvYlxyXG4gICAgICAgICAgICAgICAgICkpO1xyXG4gICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICB9XHJcbiAgICAgICAgIH0pO1xyXG4gICAgICAgfVxyXG4gICAgICAgaWYgKHJlc3VsdC5oZWFkZXIuZm9ybUlkICYmIC9eRFlMLy50ZXN0KHJlc3VsdC5oZWFkZXIuZm9ybUlkKSkge1xyXG4gICAgICAgICB0aGlzLnN0YXRlID0gY29uc3RhbnRzLlNUQVRFX01BQ0hJTkVfU1RBVFVTX0lETEU7XHJcbiAgICAgICAgIHJlc3VsdC5jb25maWRlbnRpYWxDb21tZW50cyA9IFtdO1xyXG4gICAgICAgICB0aGlzLmRpc3BhdGNoKCdsb2FkQ29uZmlkZW50aWFsQ29tbWVudHMnLCByZXN1bHQuaGVhZGVyLmZvcm1JZCkudGhlbigocmVzcG9uc2VPYmplY3Q6IGFueSkgPT4ge1xyXG4gICAgICAgICAgIGlmIChyZXNwb25zZU9iamVjdCAmJiByZXNwb25zZU9iamVjdC5pdGVtcyAmJiByZXNwb25zZU9iamVjdC5pdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICByZXNwb25zZU9iamVjdC5pdGVtcy5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgcmVzdWx0LmNvbmZpZGVudGlhbENvbW1lbnRzLnB1c2gobmV3IENvbW1lbnRzRHJvcChcclxuICAgICAgICAgICAgICAgICBjb25zdGFudHMuSUdBVEVfU1RBVElDX0FTU0VUX1BST0ZJTEVfUEhPVE9fVVJMICsgaXRlbS5lbWFpbCxcclxuICAgICAgICAgICAgICAgICBpdGVtLm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgaXRlbS5jb21tZW50LFxyXG4gICAgICAgICAgICAgICAgIGl0ZW0ubW9kaWZpZWREYXRlLFxyXG4gICAgICAgICAgICAgICAgIGl0ZW0uYXR0YWNobWVudCxcclxuICAgICAgICAgICAgICAgICBpdGVtLnBvc2l0aW9uXHJcbiAgICAgICAgICAgICAgICkpO1xyXG4gICAgICAgICAgICAgfSlcclxuICAgICAgICAgICB9XHJcbiAgICAgICAgIH0pO1xyXG4gICAgICAgfVxyXG5cclxuICAgICAgIGNvbnN0IGluYm94VHlwZSA9IHRoaXMuZ2V0SW5ib3hUeXBlKHJlc3VsdCk7XHJcbiAgICAgICBpZiAocmVzdWx0LmhlYWRlci5mb3JtSWQgJiYgKCF0aGlzLmlzT3Blbk9uSW5ib3goKSkpIHtcclxuICAgICAgICAgdGhpcy5zdGF0ZSA9IGNvbnN0YW50cy5TVEFURV9NQUNISU5FX1NUQVRVU19JRExFO1xyXG4gICAgICAgICB0aGlzLmRpc3BhdGNoKGNvbnN0YW50cy5TVEFURV9NQUNISU5FX0FDVElPTl9HRVRfSU5CT1hfSVRFTSwgcmVzdWx0LmhlYWRlci5mb3JtSWQsIGluYm94VHlwZSkudGhlbigocmVzcG9uc2VPYmplY3QpID0+IHtcclxuICAgICAgICAgICBpZiAocmVzcG9uc2VPYmplY3QpIHtcclxuICAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSByZXNwb25zZU9iamVjdC5pdGVtO1xyXG4gICAgICAgICAgICAgcmVzdWx0LmluYm94SXRlbSA9IG5ldyBJbmJveEl0ZW0oXHJcbiAgICAgICAgICAgICAgIGl0ZW0uZmxhZ2dpbmcuZmxhZ1ByaW9yaXR5LFxyXG4gICAgICAgICAgICAgICBpdGVtLmZsYWdnaW5nLmlzRmxhZ2dlZCxcclxuICAgICAgICAgICAgICAgaXRlbS5mZWVkYmFjay5jYW5SZXF1ZXN0RmVlZGJhY2ssXHJcbiAgICAgICAgICAgICAgIGl0ZW0uZmVlZGJhY2suaGFzRmVlZGJhY2ssXHJcbiAgICAgICAgICAgICAgIGl0ZW0uZmVlZGJhY2suaXNQZW5kaW5nLFxyXG4gICAgICAgICAgICAgICBpdGVtLmZlZWRiYWNrLmlzUmVxdWVzdGVkLFxyXG4gICAgICAgICAgICAgICBpdGVtLmZlZWRiYWNrLmlzUmVzcG9uZGVkXHJcbiAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgIH1cclxuICAgICAgICAgfSk7XHJcbiAgICAgICB9XHJcblxyXG4gICAgICAgbGV0IHBheWxvYWRXb3JrZmxvd1N0ZXBzID0gcGF5bG9hZC5kYXRhLndvcmtmbG93U3RlcHM7XHJcbiAgICAgICBpZiAocGF5bG9hZFdvcmtmbG93U3RlcHMgJiYgcGF5bG9hZFdvcmtmbG93U3RlcHMuY29uc3RydWN0b3IgPT09IEFycmF5ICYmIHBheWxvYWRXb3JrZmxvd1N0ZXBzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgcGF5bG9hZFdvcmtmbG93U3RlcHMuZm9yRWFjaCgoc3RlcCwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICBsZXQgY3VycmVudElzUmVxdWVzdGVyU2VuZEJhY2sgPSBKU09OLnN0cmluZ2lmeShzdGVwLmRldGFpbHMpID09PSBKU09OLnN0cmluZ2lmeSh7fSk7XHJcbiAgICAgICAgICAgbGV0IGhhc0NvbW1lbnRzID0gKCFjdXJyZW50SXNSZXF1ZXN0ZXJTZW5kQmFjayAmJiAoc3RlcC5kZXRhaWxzLmNvbW1lbnQgfHwgc3RlcC5jb21tZW50KSA/IGNvbnN0YW50cy5IQVNfQ09NTUVOVFMgOiBjb25zdGFudHMuTk9fQ09NTUVOVFMpO1xyXG4gICAgICAgICAgIGxldCBjdXJyZW50QWN0b3IgPSAoc3RlcC5hY3Rvci5lbWFpbCA9PT0gc3RlcC5hY3Rvci5yZWNpcGllbnQuZW1haWwgPyBzdGVwLmFjdG9yLnJlY2lwaWVudCA6IChzdGVwLmFjdG9yLmRlbGVnYXRlID8gc3RlcC5hY3Rvci5kZWxlZ2F0ZSA6IG51bGwpKVxyXG4gICAgICAgICAgIGlmIChoYXNDb21tZW50cykge1xyXG4gICAgICAgICAgICAgcmVzdWx0LmNvbW1lbnRzRHJvcCA9ICghcmVzdWx0LmNvbW1lbnRzRHJvcCA/IFtdIDogcmVzdWx0LmNvbW1lbnRzRHJvcCk7XHJcbiAgICAgICAgICAgICBpZiAoc3RlcC5kZXRhaWxzLmF0dGFjaG1lbnQgJiYgc3RlcC5kZXRhaWxzLmF0dGFjaG1lbnQuYXR0YWNobWVudElkICYmIHRoaXMuY29uZmlnLnByb2R1Y3Rpb24pIHtcclxuICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IGNvbnN0YW50cy5TVEFURV9NQUNISU5FX1NUQVRVU19JRExFO1xyXG4gICAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoKGNvbnN0YW50cy5TVEFURV9NQUNISU5FX0FDVElPTl9MT0FEX0ZJTEUsIHN0ZXAuZGV0YWlscy5hdHRhY2htZW50LmF0dGFjaG1lbnRJZCkudGhlbigocmVzcG9uc2VPYmplY3QpID0+IHtcclxuICAgICAgICAgICAgICAgICBsZXQgZmlsZUluZm9ybWF0aW9uID0gcmVzcG9uc2VPYmplY3QuYm9keTtcclxuICAgICAgICAgICAgICAgICBpZiAoY3VycmVudEFjdG9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAvISp0aGlzLmRpc3BhdGNoKGNvbnN0YW50cy5TVEFURV9NQUNISU5FX0FDVElPTl9FTVBMT1lFRV9QUk9GSUxFLCBjdXJyZW50QWN0b3IuZW1haWwpLnRoZW4oKHByb2ZpbGUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmNvbW1lbnRzRHJvcC5wdXNoKG5ldyBDb21tZW50c0Ryb3AoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgY29uc3RhbnRzLklHQVRFX1NUQVRJQ19BU1NFVF9QUk9GSUxFX1BIT1RPX1VSTCArIGN1cnJlbnRBY3Rvci5lbWFpbCxcclxuICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50QWN0b3IubmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAoc3RlcC5kZXRhaWxzLmNvbW1lbnQgPyBzdGVwLmRldGFpbHMuY29tbWVudCA6IChzdGVwLmNvbW1lbnQgPyBzdGVwLmNvbW1lbnQgOiBudWxsKSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgc3RlcC5kYXRlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgIGZpbGVJbmZvcm1hdGlvbi5maWxlTmFtZSArIFwifGRhdGE6XCIgKyBmaWxlSW5mb3JtYXRpb24ubWltZVR5cGUgKyBcIjtiYXNlNjQsXCIgKyBmaWxlSW5mb3JtYXRpb24uZmlsZUNvbnRlbnRzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGUuam9iLm5hbWVcclxuICAgICAgICAgICAgICAgICAgICAgKSlcclxuICAgICAgICAgICAgICAgICAgIH0pKiEvXHJcbiAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IGNvbnN0YW50cy5TVEFURV9NQUNISU5FX1NUQVRVU19GRVRDSElORztcclxuICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RlcC5kZXRhaWxzLmF0dGFjaG1lbnRJZCkge1xyXG4gICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gY29uc3RhbnRzLlNUQVRFX01BQ0hJTkVfU1RBVFVTX0lETEU7XHJcbiAgICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2goY29uc3RhbnRzLlNUQVRFX01BQ0hJTkVfQUNUSU9OX0xPQURfRklMRSwgc3RlcC5kZXRhaWxzLmF0dGNobWVudElkKS50aGVuKChyZXNwb25zZU9iamVjdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgIGxldCBmaWxlSW5mb3JtYXRpb24gPSByZXNwb25zZU9iamVjdC5ib2R5O1xyXG4gICAgICAgICAgICAgICAgIGlmIChjdXJyZW50QWN0b3IpIHtcclxuICAgICAgICAgICAgICAgICAgIC8hKnRoaXMuZGlzcGF0Y2goY29uc3RhbnRzLlNUQVRFX01BQ0hJTkVfQUNUSU9OX0VNUExPWUVFX1BST0ZJTEUsIGN1cnJlbnRBY3Rvci5lbWFpbCkudGhlbigocHJvZmlsZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICByZXN1bHQuY29tbWVudHNEcm9wLnB1c2gobmV3IENvbW1lbnRzRHJvcChcclxuICAgICAgICAgICAgICAgICAgICAgICBjb25zdGFudHMuSUdBVEVfU1RBVElDX0FTU0VUX1BST0ZJTEVfUEhPVE9fVVJMICsgY3VycmVudEFjdG9yLmVtYWlsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRBY3Rvci5uYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgIChzdGVwLmRldGFpbHMuY29tbWVudCA/IHN0ZXAuZGV0YWlscy5jb21tZW50IDogKHN0ZXAuY29tbWVudCA/IHN0ZXAuY29tbWVudCA6IG51bGwpKSxcclxuICAgICAgICAgICAgICAgICAgICAgICBzdGVwLmRhdGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgZmlsZUluZm9ybWF0aW9uLmZpbGVOYW1lICsgXCJ8ZGF0YTpcIiArIGZpbGVJbmZvcm1hdGlvbi5taW1lVHlwZSArIFwiO2Jhc2U2NCxcIiArIGZpbGVJbmZvcm1hdGlvbi5maWxlQ29udGVudHMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZS5qb2IubmFtZVxyXG4gICAgICAgICAgICAgICAgICAgICApKVxyXG4gICAgICAgICAgICAgICAgICAgfSkqIS9cclxuICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gY29uc3RhbnRzLlNUQVRFX01BQ0hJTkVfU1RBVFVTX0ZFVENISU5HO1xyXG4gICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRBY3Rvcikge1xyXG4gICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBjb25zdGFudHMuU1RBVEVfTUFDSElORV9TVEFUVVNfSURMRTtcclxuICAgICAgICAgICAgICAgICAvISp0aGlzLmRpc3BhdGNoKGNvbnN0YW50cy5TVEFURV9NQUNISU5FX0FDVElPTl9FTVBMT1lFRV9QUk9GSUxFLCBjdXJyZW50QWN0b3IuZW1haWwpLnRoZW4oKHByb2ZpbGUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgIHJlc3VsdC5jb21tZW50c0Ryb3AucHVzaChuZXcgQ29tbWVudHNEcm9wKFxyXG4gICAgICAgICAgICAgICAgICAgICBjb25zdGFudHMuSUdBVEVfU1RBVElDX0FTU0VUX1BST0ZJTEVfUEhPVE9fVVJMICsgY3VycmVudEFjdG9yLmVtYWlsLFxyXG4gICAgICAgICAgICAgICAgICAgICBjdXJyZW50QWN0b3IubmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgKHN0ZXAuZGV0YWlscy5jb21tZW50ID8gc3RlcC5kZXRhaWxzLmNvbW1lbnQgOiAoc3RlcC5jb21tZW50ID8gc3RlcC5jb21tZW50IDogbnVsbCkpLFxyXG4gICAgICAgICAgICAgICAgICAgICBzdGVwLmRhdGUsXHJcbiAgICAgICAgICAgICAgICAgICAgIG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGUuam9iLm5hbWVcclxuICAgICAgICAgICAgICAgICAgICkpXHJcbiAgICAgICAgICAgICAgICAgfSkqIS9cclxuICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gY29uc3RhbnRzLlNUQVRFX01BQ0hJTkVfU1RBVFVTX0ZFVENISU5HO1xyXG4gICAgICAgICAgICAgfVxyXG4gICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgaWYgKHdhc1NlbmRCYWNrICYmIHN0ZXAuYWN0b3IucmVjaXBpZW50LnJvbGUgPT09ICdSRVFVRVNURVInKSB7XHJcbiAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIndhc1NlbmRCYWNrICYmIFJFUVVFU1RFUlwiKVxyXG4gICAgICAgICAgICAgcmVzdWx0LnNlY3Rpb25zID0gW25ldyBTZWN0aW9uKFxyXG4gICAgICAgICAgICAgICBjb25zdGFudHMuU0VDVElPTl9JRF9SRVFVRVNUX0RFVEFJTFMsXHJcbiAgICAgICAgICAgICAgIG5ldyBTZWN0aW9uSGVhZGVyKFxyXG4gICAgICAgICAgICAgICAgIGNvbnN0YW50cy5ET05UX1NIT1csXHJcbiAgICAgICAgICAgICAgICAgY29uc3RhbnRzLkRPTlRfU0hPVyxcclxuICAgICAgICAgICAgICAgICBjb25zdGFudHMuRE9OVF9TSE9XLFxyXG4gICAgICAgICAgICAgICAgIGNvbnN0YW50cy5ET05UX1NIT1csXHJcbiAgICAgICAgICAgICAgICAgY29uc3RhbnRzLkRPTlRfU0hPVyxcclxuICAgICAgICAgICAgICAgICBjb25zdGFudHMuRE9OVF9TSE9XLFxyXG4gICAgICAgICAgICAgICAgIGNvbnN0YW50cy5ET05UX1NIT1csXHJcbiAgICAgICAgICAgICAgICAgcmVxdWVzdERldGFpbHNIYXNDb21tZW50LFxyXG4gICAgICAgICAgICAgICAgIChwYXlsb2FkLmRhdGEud29ya2Zsb3dTdGVwcyA/IGNvbnN0YW50cy5SRUFEX09OTFkgOiBpc1JlYWRPbmx5KVxyXG4gICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICBwYXlsb2FkLmRhdGEucmVxdWVzdFxyXG4gICAgICAgICAgICAgKV1cclxuICAgICAgICAgICB9IGVsc2UgaWYgKHdhc1NlbmRCYWNrKSB7XHJcbiAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIlBvcFwiKVxyXG4gICAgICAgICAgICAgaWYgKHJlc3VsdC5zZWN0aW9ucy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgICAgIHJlc3VsdC5zZWN0aW9ucy5wb3AoKTtcclxuICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgIHdhc1NlbmRCYWNrID0gZmFsc2U7XHJcbiAgICAgICAgICAgfVxyXG4gICAgICAgICAgIGlmIChzdGVwLmRldGFpbHMuZGVjaXNpb24gJiYgc3RlcC5kZXRhaWxzLmRlY2lzaW9uLmtleSA9PT0gY29uc3RhbnRzLkZPUk1fU1RBVFVTX1NFTkRfQkFDSykge1xyXG4gICAgICAgICAgICAgd2FzU2VuZEJhY2sgPSB0cnVlO1xyXG4gICAgICAgICAgIH0gZWxzZSBpZiAoSlNPTi5zdHJpbmdpZnkoc3RlcC5kZXRhaWxzKSAhPT0gSlNPTi5zdHJpbmdpZnkoe30pKSB7XHJcbiAgICAgICAgICAgICByZXN1bHQuc2VjdGlvbnMucHVzaChcclxuICAgICAgICAgICAgICAgbmV3IFNlY3Rpb24oXHJcbiAgICAgICAgICAgICAgICAgc3RlcC5hY3Rvci5yZWNpcGllbnQucm9sZS50b0xvd2VyQ2FzZSgpICsgY29uc3RhbnRzLlNFQ1RJT05fSURfQVBQUk9WQUxfUEFSVElBTF9OQU1FLFxyXG4gICAgICAgICAgICAgICAgIG5ldyBTZWN0aW9uSGVhZGVyKFxyXG4gICAgICAgICAgICAgICAgICAgKGN1cnJlbnRBY3RvciA/IHRoaXMuZ2V0U2hvcnROYW1lKGN1cnJlbnRBY3Rvci5uYW1lKSA6IG51bGwpLFxyXG4gICAgICAgICAgICAgICAgICAgc3RlcC5kYXRlLFxyXG4gICAgICAgICAgICAgICAgICAgdGhpcy5nZXRTaG9ydE5hbWUoc3RlcC5hY3Rvci5yZWNpcGllbnQubmFtZSksXHJcbiAgICAgICAgICAgICAgICAgICBjb25zdGFudHMuSUdBVEVfU1RBVElDX0FTU0VUX1BST0ZJTEVfUEhPVE9fVVJMICsgc3RlcC5hY3Rvci5yZWNpcGllbnQuZW1haWwsXHJcbiAgICAgICAgICAgICAgICAgICAoc3RlcC5hY3Rvci5kZWxlZ2F0ZSAmJiBzdGVwLmFjdG9yLmRlbGVnYXRlLm5hbWUgPyB0aGlzLmdldFNob3J0TmFtZShzdGVwLmFjdG9yLmRlbGVnYXRlLm5hbWUpIDogbnVsbCksXHJcbiAgICAgICAgICAgICAgICAgICAoc3RlcC5hY3Rvci5kZWxlZ2F0ZSAmJiBzdGVwLmFjdG9yLmRlbGVnYXRlLmVtYWlsID8gY29uc3RhbnRzLklHQVRFX1NUQVRJQ19BU1NFVF9QUk9GSUxFX1BIT1RPX1VSTCArIHN0ZXAuYWN0b3IuZGVsZWdhdGUuZW1haWwgOiBudWxsKSxcclxuICAgICAgICAgICAgICAgICAgIHN0ZXAuYWN0b3Iuc3RhdHVzLFxyXG4gICAgICAgICAgICAgICAgICAgaGFzQ29tbWVudHMsXHJcbiAgICAgICAgICAgICAgICAgICAoaW5kZXggPCBwYXlsb2FkV29ya2Zsb3dTdGVwcy5sZW5ndGggLSAxID8gY29uc3RhbnRzLlJFQURfT05MWSA6IGlzUmVhZE9ubHkpXHJcbiAgICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgICB7ZGV0YWlsczogc3RlcC5kZXRhaWxzLCBwcm9jZXNzaW5nRGF0ZTogc3RlcC5kYXRlfVxyXG4gICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgdGhpcy5jdXJyZW50U3VibWl0dGVyID0ge2FjdG9yOiBzdGVwLmFjdG9yLCByZWNpcGllbnQ6IHN0ZXAucmVjaXBpZW50LCBkZWxlZ2F0ZTogc3RlcC5hY3Rvci5kZWxlZ2F0ZX07XHJcbiAgICAgICAgICAgfVxyXG4gICAgICAgICB9KTtcclxuICAgICAgIH1cclxuICAgKi9cclxuICAgIC8qIENyZWF0ZSBMb3YgU2VjdGlvbnMgKi9cclxuICAgIHJlc3VsdC5sb3ZzID0gKHBheWxvYWQubWV0YSAmJiBwYXlsb2FkLm1ldGEubG92cyA/IHBheWxvYWQubWV0YS5sb3ZzIDogbnVsbCk7XHJcblxyXG4gICAgaWYgKHBheWxvYWQubWV0YSAmJiBwYXlsb2FkLm1ldGEubWVzc2FnZXMpIHtcclxuICAgICAgcmVzdWx0Lm1lc3NhZ2VzID0gbmV3IE1lc3NhZ2VzKFxyXG4gICAgICAgIHt9LFxyXG4gICAgICAgIFtdLFxyXG4gICAgICAgIFtdLFxyXG4gICAgICAgIFtdXHJcbiAgICAgICk7XHJcbiAgICAgIHBheWxvYWQubWV0YS5tZXNzYWdlcy5mb3JFYWNoKChtZXNzYWdlKSA9PiB7XHJcbiAgICAgICAgcmVzdWx0Lm1lc3NhZ2VzLm9yaWdpbmFsTXNncy5wdXNoKG1lc3NhZ2UpO1xyXG4gICAgICAgIHJlc3VsdC5tZXNzYWdlc1ttZXNzYWdlLnR5cGVdLnB1c2gobWVzc2FnZS5tZXNzYWdlKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gcmVzdWx0Lm1lc3NhZ2VzID0gKHBheWxvYWQubWV0YSAmJiBwYXlsb2FkLm1ldGEubWVzc2FnZXMgPyBwYXlsb2FkLm1ldGEubWVzc2FnZXMgOiBudWxsKTtcclxuICAgIC8qIEZpeCBsYXN0IHNlY3Rpb24gdG8gYmUgdGhlIFJPL1dNIGZyb20gdGhlIHZhcmlhYmxlICovXHJcbiAgICByZXN1bHQuc2VjdGlvbnNbcmVzdWx0LnNlY3Rpb25zLmxlbmd0aCAtIDFdLmhlYWRlci5yZWFkT25seSA9IGlzUmVhZE9ubHk7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGxvZ2dlZEluVXNlcklkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudXNlckRhdGFbJ2xvZ2dlZEluVXNlckVtYWlsJ107XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0U2hvcnROYW1lKG5hbWU6IHN0cmluZykge1xyXG4gICAgaWYgKG5hbWUpIHtcclxuICAgICAgbGV0IG5hbWVUb2tlbnMgPSBuYW1lLnNwbGl0KCcgJyk7XHJcbiAgICAgIGlmIChuYW1lVG9rZW5zLmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgICAgcmV0dXJuIFtuYW1lVG9rZW5zWzBdXVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChuYW1lVG9rZW5zW25hbWVUb2tlbnMubGVuZ3RoIC0gMl0udG9Mb3dlckNhc2UoKSA9PSAnYWwnKSB7XHJcbiAgICAgICAgICByZXR1cm4gW25hbWVUb2tlbnNbMF0sIG5hbWVUb2tlbnNbbmFtZVRva2Vucy5sZW5ndGggLSAyXSwgbmFtZVRva2Vuc1tuYW1lVG9rZW5zLmxlbmd0aCAtIDFdXS5qb2luKCcgJyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiBbbmFtZVRva2Vuc1swXSwgbmFtZVRva2Vuc1tuYW1lVG9rZW5zLmxlbmd0aCAtIDFdXS5qb2luKCcgJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19