ecabs-components 1.0.44 → 1.0.46
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/ecabs-date-time-picker/ecabs-date-time-picker.component.mjs +2 -2
- package/esm2022/lib/ecabs-dialog-message/ecabs-dialog-message.component.mjs +8 -9
- package/esm2022/lib/ecabs-select/ecabs-select.component.mjs +3 -3
- package/fesm2022/ecabs-components.mjs +35 -37
- package/fesm2022/ecabs-components.mjs.map +1 -1
- package/lib/ecabs-dialog-message/ecabs-dialog-message.component.d.ts +1 -1
- package/package.json +1 -1
|
@@ -180,7 +180,7 @@ export class EcabsDateTimePickerComponent extends ElementBaseComponent {
|
|
|
180
180
|
multi: true,
|
|
181
181
|
},
|
|
182
182
|
DecimalPipe,
|
|
183
|
-
], usesInheritance: true, ngImport: i0, template: "<app-element-wrapper [data]=\"getData()\">\r\n <div class=\"form-field__input--wrapper w-full\">\r\n <input\r\n class=\"fake-input\"\r\n [id]=\"_date\"\r\n [(ngModel)]=\"_date\"\r\n [placeholder]=\"placeholder\"\r\n [disabled]=\"disabled\"\r\n [matDatepicker]=\"picker\"\r\n [min]=\"minDate\"\r\n [max]=\"maxDate\"\r\n (blur)=\"onTouch()\"\r\n />\r\n <mat-datepicker #picker [calendarHeaderComponent]=\"header\" [touchUi]=\"touchUi\" class=\"datepicker-ui\">\r\n <mat-datepicker-actions>\r\n <div class=\"actions\">\r\n <div class=\"time--inputs\">\r\n <input\r\n class=\"form-field__input time\"\r\n appDigitsOnly\r\n appNumberBorder\r\n [digitsOnly]=\"true\"\r\n [id]=\"hours\"\r\n [value]=\"_hours\"\r\n [maxValue]=\"maxValueHours\"\r\n [(ngModel)]=\"hours\"\r\n />\r\n <span class=\"font-bold\">:</span>\r\n <input\r\n class=\"form-field__input time\"\r\n [id]=\"minutes\"\r\n [(ngModel)]=\"minutes\"\r\n appDigitsOnly\r\n appNumberBorder\r\n [digitsOnly]=\"true\"\r\n [maxValue]=\"maxValueMinutesSeconds\"\r\n />\r\n\r\n <ng-container *ngIf=\"!hideSeconds\">\r\n <span class=\"font-bold\">:</span>\r\n <input\r\n class=\"form-field__input time\"\r\n [id]=\"seconds\"\r\n [(ngModel)]=\"seconds\"\r\n appDigitsOnly\r\n appNumberBorder\r\n [digitsOnly]=\"true\"\r\n [maxValue]=\"maxValueMinutesSeconds\"\r\n />\r\n </ng-container>\r\n </div>\r\n\r\n <ecabs-date-picker-actions [applyLabel]=\"applyLabel\"\r\n [cancelLabel]=\"cancelLabel\"\r\n (apply)=\"onApply()\">\r\n </ecabs-date-picker-actions>\r\n </div>\r\n </mat-datepicker-actions>\r\n </mat-datepicker>\r\n <input\r\n class=\"form-field__input w-full date-input\"\r\n [id]=\"name\"\r\n [(ngModel)]=\"pickerValue\"\r\n [placeholder]=\"placeholder\"\r\n [disabled]=\"disabled\"\r\n appMaskDate\r\n [isDateTimeMask]=\"true\"\r\n [considerSeconds]=\"!hideSeconds\"\r\n (blur)=\"onTouch()\"\r\n />\r\n <button type=\"button\" mat-icon-button class=\"datepicker-toggle\" (click)=\"picker.open()\">\r\n <mat-icon>calendar_today</mat-icon>\r\n </button>\r\n </div>\r\n</app-element-wrapper>\r\n", styles: [".time--inputs:before,.time--inputs:after{position:absolute;content:\"\"}:host ::ng-deep .form-field{margin-right:-1.25rem;margin-left:-.125rem}.datepicker-toggle{transform:translate(-1.25rem);background-color:inherit;left:-.125rem}.time{width:3.375rem}.fake-input{visibility:hidden;width:0;padding:0;margin:0}.date-input{margin:0rem -1.25rem 0rem
|
|
183
|
+
], usesInheritance: true, ngImport: i0, template: "<app-element-wrapper [data]=\"getData()\">\r\n <div class=\"form-field__input--wrapper w-full\">\r\n <input\r\n class=\"fake-input\"\r\n [id]=\"_date\"\r\n [(ngModel)]=\"_date\"\r\n [placeholder]=\"placeholder\"\r\n [disabled]=\"disabled\"\r\n [matDatepicker]=\"picker\"\r\n [min]=\"minDate\"\r\n [max]=\"maxDate\"\r\n (blur)=\"onTouch()\"\r\n />\r\n <mat-datepicker #picker [calendarHeaderComponent]=\"header\" [touchUi]=\"touchUi\" class=\"datepicker-ui\">\r\n <mat-datepicker-actions>\r\n <div class=\"actions\">\r\n <div class=\"time--inputs\">\r\n <input\r\n class=\"form-field__input time\"\r\n appDigitsOnly\r\n appNumberBorder\r\n [digitsOnly]=\"true\"\r\n [id]=\"hours\"\r\n [value]=\"_hours\"\r\n [maxValue]=\"maxValueHours\"\r\n [(ngModel)]=\"hours\"\r\n />\r\n <span class=\"font-bold\">:</span>\r\n <input\r\n class=\"form-field__input time\"\r\n [id]=\"minutes\"\r\n [(ngModel)]=\"minutes\"\r\n appDigitsOnly\r\n appNumberBorder\r\n [digitsOnly]=\"true\"\r\n [maxValue]=\"maxValueMinutesSeconds\"\r\n />\r\n\r\n <ng-container *ngIf=\"!hideSeconds\">\r\n <span class=\"font-bold\">:</span>\r\n <input\r\n class=\"form-field__input time\"\r\n [id]=\"seconds\"\r\n [(ngModel)]=\"seconds\"\r\n appDigitsOnly\r\n appNumberBorder\r\n [digitsOnly]=\"true\"\r\n [maxValue]=\"maxValueMinutesSeconds\"\r\n />\r\n </ng-container>\r\n </div>\r\n\r\n <ecabs-date-picker-actions [applyLabel]=\"applyLabel\"\r\n [cancelLabel]=\"cancelLabel\"\r\n (apply)=\"onApply()\">\r\n </ecabs-date-picker-actions>\r\n </div>\r\n </mat-datepicker-actions>\r\n </mat-datepicker>\r\n <input\r\n class=\"form-field__input w-full date-input\"\r\n [id]=\"name\"\r\n [(ngModel)]=\"pickerValue\"\r\n [placeholder]=\"placeholder\"\r\n [disabled]=\"disabled\"\r\n appMaskDate\r\n [isDateTimeMask]=\"true\"\r\n [considerSeconds]=\"!hideSeconds\"\r\n (blur)=\"onTouch()\"\r\n />\r\n <button type=\"button\" mat-icon-button class=\"datepicker-toggle\" (click)=\"picker.open()\">\r\n <mat-icon>calendar_today</mat-icon>\r\n </button>\r\n </div>\r\n</app-element-wrapper>\r\n", styles: [".time--inputs:before,.time--inputs:after{position:absolute;content:\"\"}:host ::ng-deep .form-field{margin-right:-1.25rem;margin-left:-.125rem}.datepicker-toggle{transform:translate(-1.25rem);background-color:inherit;left:-.125rem}.time{width:3.375rem}.fake-input{visibility:hidden;width:0;padding:0;margin:0}.date-input{margin:0rem -1.25rem 0rem .125rem}.time--inputs{position:relative;display:flex;gap:.5rem;justify-content:center;align-items:center;margin-top:2.4rem;margin-bottom:2.4rem}.time--inputs:before,.time--inputs:after{height:1px;right:0;left:0;background-color:var(--color-gray-300)}.time--inputs:before{top:-1.6rem}.time--inputs:after{bottom:-1.6rem}.font-bold{font-weight:700}.actions{display:flex;flex-direction:column;width:100%!important;row-gap:1rem}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.ElementWrapperComponent, selector: "app-element-wrapper", inputs: ["data", "showCloseIcon", "focusedFlag", "showPassword", "control"], outputs: ["showHidePassword", "clear", "increase", "decrease"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i4.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i4.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i4.MatDatepickerActions, selector: "mat-datepicker-actions, mat-date-range-picker-actions" }, { kind: "component", type: i5.MatLegacyButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i7.DigitsOnlyDirective, selector: "[appDigitsOnly]", inputs: ["digitsOnly", "allowHyphen", "decimal", "decimalSeparator", "unit"] }, { kind: "directive", type: i8.NumberBorderDirective, selector: "[appNumberBorder]", inputs: ["maxValue", "minValue"] }, { kind: "directive", type: i9.MaskDateDirective, selector: "[appMaskDate]", inputs: ["isDateTimeMask", "considerSeconds"] }, { kind: "component", type: i10.EcabsDatePickerActionsComponent, selector: "ecabs-date-picker-actions", inputs: ["cancelLabel", "applyLabel"], outputs: ["apply"] }] });
|
|
184
184
|
}
|
|
185
185
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EcabsDateTimePickerComponent, decorators: [{
|
|
186
186
|
type: Component,
|
|
@@ -191,7 +191,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
191
191
|
multi: true,
|
|
192
192
|
},
|
|
193
193
|
DecimalPipe,
|
|
194
|
-
], template: "<app-element-wrapper [data]=\"getData()\">\r\n <div class=\"form-field__input--wrapper w-full\">\r\n <input\r\n class=\"fake-input\"\r\n [id]=\"_date\"\r\n [(ngModel)]=\"_date\"\r\n [placeholder]=\"placeholder\"\r\n [disabled]=\"disabled\"\r\n [matDatepicker]=\"picker\"\r\n [min]=\"minDate\"\r\n [max]=\"maxDate\"\r\n (blur)=\"onTouch()\"\r\n />\r\n <mat-datepicker #picker [calendarHeaderComponent]=\"header\" [touchUi]=\"touchUi\" class=\"datepicker-ui\">\r\n <mat-datepicker-actions>\r\n <div class=\"actions\">\r\n <div class=\"time--inputs\">\r\n <input\r\n class=\"form-field__input time\"\r\n appDigitsOnly\r\n appNumberBorder\r\n [digitsOnly]=\"true\"\r\n [id]=\"hours\"\r\n [value]=\"_hours\"\r\n [maxValue]=\"maxValueHours\"\r\n [(ngModel)]=\"hours\"\r\n />\r\n <span class=\"font-bold\">:</span>\r\n <input\r\n class=\"form-field__input time\"\r\n [id]=\"minutes\"\r\n [(ngModel)]=\"minutes\"\r\n appDigitsOnly\r\n appNumberBorder\r\n [digitsOnly]=\"true\"\r\n [maxValue]=\"maxValueMinutesSeconds\"\r\n />\r\n\r\n <ng-container *ngIf=\"!hideSeconds\">\r\n <span class=\"font-bold\">:</span>\r\n <input\r\n class=\"form-field__input time\"\r\n [id]=\"seconds\"\r\n [(ngModel)]=\"seconds\"\r\n appDigitsOnly\r\n appNumberBorder\r\n [digitsOnly]=\"true\"\r\n [maxValue]=\"maxValueMinutesSeconds\"\r\n />\r\n </ng-container>\r\n </div>\r\n\r\n <ecabs-date-picker-actions [applyLabel]=\"applyLabel\"\r\n [cancelLabel]=\"cancelLabel\"\r\n (apply)=\"onApply()\">\r\n </ecabs-date-picker-actions>\r\n </div>\r\n </mat-datepicker-actions>\r\n </mat-datepicker>\r\n <input\r\n class=\"form-field__input w-full date-input\"\r\n [id]=\"name\"\r\n [(ngModel)]=\"pickerValue\"\r\n [placeholder]=\"placeholder\"\r\n [disabled]=\"disabled\"\r\n appMaskDate\r\n [isDateTimeMask]=\"true\"\r\n [considerSeconds]=\"!hideSeconds\"\r\n (blur)=\"onTouch()\"\r\n />\r\n <button type=\"button\" mat-icon-button class=\"datepicker-toggle\" (click)=\"picker.open()\">\r\n <mat-icon>calendar_today</mat-icon>\r\n </button>\r\n </div>\r\n</app-element-wrapper>\r\n", styles: [".time--inputs:before,.time--inputs:after{position:absolute;content:\"\"}:host ::ng-deep .form-field{margin-right:-1.25rem;margin-left:-.125rem}.datepicker-toggle{transform:translate(-1.25rem);background-color:inherit;left:-.125rem}.time{width:3.375rem}.fake-input{visibility:hidden;width:0;padding:0;margin:0}.date-input{margin:0rem -1.25rem 0rem
|
|
194
|
+
], template: "<app-element-wrapper [data]=\"getData()\">\r\n <div class=\"form-field__input--wrapper w-full\">\r\n <input\r\n class=\"fake-input\"\r\n [id]=\"_date\"\r\n [(ngModel)]=\"_date\"\r\n [placeholder]=\"placeholder\"\r\n [disabled]=\"disabled\"\r\n [matDatepicker]=\"picker\"\r\n [min]=\"minDate\"\r\n [max]=\"maxDate\"\r\n (blur)=\"onTouch()\"\r\n />\r\n <mat-datepicker #picker [calendarHeaderComponent]=\"header\" [touchUi]=\"touchUi\" class=\"datepicker-ui\">\r\n <mat-datepicker-actions>\r\n <div class=\"actions\">\r\n <div class=\"time--inputs\">\r\n <input\r\n class=\"form-field__input time\"\r\n appDigitsOnly\r\n appNumberBorder\r\n [digitsOnly]=\"true\"\r\n [id]=\"hours\"\r\n [value]=\"_hours\"\r\n [maxValue]=\"maxValueHours\"\r\n [(ngModel)]=\"hours\"\r\n />\r\n <span class=\"font-bold\">:</span>\r\n <input\r\n class=\"form-field__input time\"\r\n [id]=\"minutes\"\r\n [(ngModel)]=\"minutes\"\r\n appDigitsOnly\r\n appNumberBorder\r\n [digitsOnly]=\"true\"\r\n [maxValue]=\"maxValueMinutesSeconds\"\r\n />\r\n\r\n <ng-container *ngIf=\"!hideSeconds\">\r\n <span class=\"font-bold\">:</span>\r\n <input\r\n class=\"form-field__input time\"\r\n [id]=\"seconds\"\r\n [(ngModel)]=\"seconds\"\r\n appDigitsOnly\r\n appNumberBorder\r\n [digitsOnly]=\"true\"\r\n [maxValue]=\"maxValueMinutesSeconds\"\r\n />\r\n </ng-container>\r\n </div>\r\n\r\n <ecabs-date-picker-actions [applyLabel]=\"applyLabel\"\r\n [cancelLabel]=\"cancelLabel\"\r\n (apply)=\"onApply()\">\r\n </ecabs-date-picker-actions>\r\n </div>\r\n </mat-datepicker-actions>\r\n </mat-datepicker>\r\n <input\r\n class=\"form-field__input w-full date-input\"\r\n [id]=\"name\"\r\n [(ngModel)]=\"pickerValue\"\r\n [placeholder]=\"placeholder\"\r\n [disabled]=\"disabled\"\r\n appMaskDate\r\n [isDateTimeMask]=\"true\"\r\n [considerSeconds]=\"!hideSeconds\"\r\n (blur)=\"onTouch()\"\r\n />\r\n <button type=\"button\" mat-icon-button class=\"datepicker-toggle\" (click)=\"picker.open()\">\r\n <mat-icon>calendar_today</mat-icon>\r\n </button>\r\n </div>\r\n</app-element-wrapper>\r\n", styles: [".time--inputs:before,.time--inputs:after{position:absolute;content:\"\"}:host ::ng-deep .form-field{margin-right:-1.25rem;margin-left:-.125rem}.datepicker-toggle{transform:translate(-1.25rem);background-color:inherit;left:-.125rem}.time{width:3.375rem}.fake-input{visibility:hidden;width:0;padding:0;margin:0}.date-input{margin:0rem -1.25rem 0rem .125rem}.time--inputs{position:relative;display:flex;gap:.5rem;justify-content:center;align-items:center;margin-top:2.4rem;margin-bottom:2.4rem}.time--inputs:before,.time--inputs:after{height:1px;right:0;left:0;background-color:var(--color-gray-300)}.time--inputs:before{top:-1.6rem}.time--inputs:after{bottom:-1.6rem}.font-bold{font-weight:700}.actions{display:flex;flex-direction:column;width:100%!important;row-gap:1rem}\n"] }]
|
|
195
195
|
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.DecimalPipe }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { minDate: [{
|
|
196
196
|
type: Input
|
|
197
197
|
}], maxDate: [{
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import { Component, Inject } from '@angular/core';
|
|
2
|
-
import { MAT_DIALOG_DATA } from '@angular/material/dialog';
|
|
2
|
+
import { MAT_LEGACY_DIALOG_DATA as MAT_DIALOG_DATA, } from '@angular/material/legacy-dialog';
|
|
3
3
|
import { Subject, takeUntil } from 'rxjs';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "@angular/material/dialog";
|
|
5
|
+
import * as i1 from "@angular/material/legacy-dialog";
|
|
6
6
|
import * as i2 from "@angular/common";
|
|
7
|
-
import * as i3 from "
|
|
8
|
-
import * as i4 from "
|
|
9
|
-
import * as i5 from "@angular/material/icon";
|
|
7
|
+
import * as i3 from "../ecabs-buttons/ecabs-buttons.component";
|
|
8
|
+
import * as i4 from "@angular/material/icon";
|
|
10
9
|
export class EcabsDialogMessageComponent {
|
|
11
10
|
dialogRef;
|
|
12
11
|
data;
|
|
@@ -34,14 +33,14 @@ export class EcabsDialogMessageComponent {
|
|
|
34
33
|
this.dialogRef.close(true);
|
|
35
34
|
}
|
|
36
35
|
}
|
|
37
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EcabsDialogMessageComponent, deps: [{ token: i1.
|
|
38
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EcabsDialogMessageComponent, selector: "ecabs-dialog-message", ngImport: i0, template: "<div matDialogTitle *ngIf=\"data?.title || !!data?.isPopover\" class=\"flex flex-column\">\r\n <div *ngIf=\"!!data?.isPopover\" class=\"w-full flex justify-end\">\r\n <mat-icon\r\n (click)=\"dialogRef.close(true)\"\r\n class=\"mat-icon material-icons-outlined float-right icon--close mb-2\"\r\n role=\"button\"\r\n >\r\n close\r\n </mat-icon>\r\n </div>\r\n\r\n <div *ngIf=\"data.title\" class=\"title font-semibold heading--xs\" [ngClass]=\"data?.titleColor || titleColor\">\r\n {{ data.title }}\r\n </div>\r\n</div>\r\n\r\n<div mat-dialog-content>\r\n {{data?.message}}\r\n</div>\r\n\r\n<div class=\"pb-6\">\r\n <div mat-dialog-actions class=\"btn__group flex justify-end w-full\" *ngIf=\"!data?.isPopover\">\r\n <ecabs-buttons [color]=\"data?.color || color\" [full]=\"data?.isButtonBlock\" [loading]=\"data.loading$ | async\" (click)=\"closeDialog()\">\r\n {{ data?.confirmLabel }}\r\n </ecabs-buttons>\r\n </div>\r\n</div>\r\n", styles: [":host .mat-mdc-dialog-title .mat-icon.icon--close,:host ::ng-deep .mat-mdc-dialog-title .mat-icon.icon--close{width:20px;height:20px;line-height:20px;font-size:20px}:host .title.success,:host ::ng-deep .title.success{color:var(--color-success)}:host app-buttons,:host ::ng-deep app-buttons{width:calc(50% - .5rem)}:host button,:host ::ng-deep button{width:100%}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type:
|
|
36
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EcabsDialogMessageComponent, deps: [{ token: i1.MatLegacyDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
|
|
37
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EcabsDialogMessageComponent, selector: "ecabs-dialog-message", ngImport: i0, template: "<div matDialogTitle *ngIf=\"data?.title || !!data?.isPopover\" class=\"flex flex-column\">\r\n <div *ngIf=\"!!data?.isPopover\" class=\"w-full flex justify-end\">\r\n <mat-icon\r\n (click)=\"dialogRef.close(true)\"\r\n class=\"mat-icon material-icons-outlined float-right icon--close mb-2\"\r\n role=\"button\"\r\n >\r\n close\r\n </mat-icon>\r\n </div>\r\n\r\n <div *ngIf=\"data.title\" class=\"title font-semibold heading--xs\" [ngClass]=\"data?.titleColor || titleColor\">\r\n {{ data.title }}\r\n </div>\r\n</div>\r\n\r\n<div mat-dialog-content>\r\n {{data?.message}}\r\n</div>\r\n\r\n<div class=\"pb-6\">\r\n <div mat-dialog-actions class=\"btn__group flex justify-end w-full\" *ngIf=\"!data?.isPopover\">\r\n <ecabs-buttons [color]=\"data?.color || color\" [full]=\"data?.isButtonBlock\" [loading]=\"data.loading$ | async\" (click)=\"closeDialog()\">\r\n {{ data?.confirmLabel }}\r\n </ecabs-buttons>\r\n </div>\r\n</div>\r\n", styles: [":host .mat-mdc-dialog-title .mat-icon.icon--close,:host ::ng-deep .mat-mdc-dialog-title .mat-icon.icon--close{width:20px;height:20px;line-height:20px;font-size:20px}:host .title.success,:host ::ng-deep .title.success{color:var(--color-success)}:host app-buttons,:host ::ng-deep app-buttons{width:calc(50% - .5rem)}:host button,:host ::ng-deep button{width:100%}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.MatLegacyDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatLegacyDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i1.MatLegacyDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "component", type: i3.ButtonsComponent, selector: "ecabs-buttons", inputs: ["label", "disabled", "loading", "size", "type", "raised", "stroked", "full", "color"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] });
|
|
39
38
|
}
|
|
40
39
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EcabsDialogMessageComponent, decorators: [{
|
|
41
40
|
type: Component,
|
|
42
41
|
args: [{ selector: 'ecabs-dialog-message', template: "<div matDialogTitle *ngIf=\"data?.title || !!data?.isPopover\" class=\"flex flex-column\">\r\n <div *ngIf=\"!!data?.isPopover\" class=\"w-full flex justify-end\">\r\n <mat-icon\r\n (click)=\"dialogRef.close(true)\"\r\n class=\"mat-icon material-icons-outlined float-right icon--close mb-2\"\r\n role=\"button\"\r\n >\r\n close\r\n </mat-icon>\r\n </div>\r\n\r\n <div *ngIf=\"data.title\" class=\"title font-semibold heading--xs\" [ngClass]=\"data?.titleColor || titleColor\">\r\n {{ data.title }}\r\n </div>\r\n</div>\r\n\r\n<div mat-dialog-content>\r\n {{data?.message}}\r\n</div>\r\n\r\n<div class=\"pb-6\">\r\n <div mat-dialog-actions class=\"btn__group flex justify-end w-full\" *ngIf=\"!data?.isPopover\">\r\n <ecabs-buttons [color]=\"data?.color || color\" [full]=\"data?.isButtonBlock\" [loading]=\"data.loading$ | async\" (click)=\"closeDialog()\">\r\n {{ data?.confirmLabel }}\r\n </ecabs-buttons>\r\n </div>\r\n</div>\r\n", styles: [":host .mat-mdc-dialog-title .mat-icon.icon--close,:host ::ng-deep .mat-mdc-dialog-title .mat-icon.icon--close{width:20px;height:20px;line-height:20px;font-size:20px}:host .title.success,:host ::ng-deep .title.success{color:var(--color-success)}:host app-buttons,:host ::ng-deep app-buttons{width:calc(50% - .5rem)}:host button,:host ::ng-deep button{width:100%}\n"] }]
|
|
43
|
-
}], ctorParameters: function () { return [{ type: i1.
|
|
42
|
+
}], ctorParameters: function () { return [{ type: i1.MatLegacyDialogRef }, { type: undefined, decorators: [{
|
|
44
43
|
type: Inject,
|
|
45
44
|
args: [MAT_DIALOG_DATA]
|
|
46
45
|
}] }]; } });
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNhYnMtZGlhbG9nLW1lc3NhZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWNhYnMtY29tcG9uZW50cy9zcmMvbGliL2VjYWJzLWRpYWxvZy1tZXNzYWdlL2VjYWJzLWRpYWxvZy1tZXNzYWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VjYWJzLWNvbXBvbmVudHMvc3JjL2xpYi9lY2Ficy1kaWFsb2ctbWVzc2FnZS9lY2Ficy1kaWFsb2ctbWVzc2FnZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQ0wsc0JBQXNCLElBQUksZUFBZSxHQUUxQyxNQUFNLGlDQUFpQyxDQUFDO0FBRXpDLE9BQU8sRUFBYyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7QUFPdEQsTUFBTSxPQUFPLDJCQUEyQjtJQU83QjtJQUMyQjtJQVBwQyxPQUFPLENBQVM7SUFDaEIsS0FBSyxHQUFpQixTQUFTLENBQUM7SUFDaEMsVUFBVSxHQUFHLFNBQVMsQ0FBQztJQUNmLFFBQVEsR0FBaUIsSUFBSSxPQUFPLEVBQU8sQ0FBQztJQUVwRCxZQUNTLFNBQTBELEVBQy9CLElBQXVDO1FBRGxFLGNBQVMsR0FBVCxTQUFTLENBQWlEO1FBQy9CLFNBQUksR0FBSixJQUFJLENBQW1DO0lBQ3ZFLENBQUM7SUFFTCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUUsSUFBSSxDQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsV0FBVztRQUNULElBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUc7WUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFFLFNBQVMsQ0FBRSxJQUFJLENBQUMsUUFBUSxDQUFFLENBQUUsQ0FBQyxTQUFTLENBQUUsQ0FBRSxPQUFPLEVBQUcsRUFBRTtnQkFDOUUsSUFBSyxDQUFDLE9BQU8sRUFBRztvQkFDZCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBRSxJQUFJLENBQUUsQ0FBQztpQkFDOUI7WUFDSCxDQUFDLENBQUUsQ0FBQztTQUNMO2FBQU07WUFDTCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBRSxJQUFJLENBQUUsQ0FBQztTQUM5QjtJQUNILENBQUM7d0dBMUJVLDJCQUEyQixvREFRM0IsZUFBZTs0RkFSZiwyQkFBMkIsNERDYnhDLHc5QkEyQkE7OzRGRGRhLDJCQUEyQjtrQkFMdkMsU0FBUzsrQkFDRSxzQkFBc0I7OzBCQVk3QixNQUFNOzJCQUFFLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgTUFUX0xFR0FDWV9ESUFMT0dfREFUQSBhcyBNQVRfRElBTE9HX0RBVEEsXHJcbiAgTWF0TGVnYWN5RGlhbG9nUmVmIGFzIE1hdERpYWxvZ1JlZixcclxufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktZGlhbG9nJztcclxuaW1wb3J0IHsgVGhlbWVQYWxldHRlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5cclxuQENvbXBvbmVudCgge1xyXG4gIHNlbGVjdG9yOiAnZWNhYnMtZGlhbG9nLW1lc3NhZ2UnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9lY2Ficy1kaWFsb2ctbWVzc2FnZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbICcuL2VjYWJzLWRpYWxvZy1tZXNzYWdlLmNvbXBvbmVudC5zY3NzJyBdLFxyXG59IClcclxuZXhwb3J0IGNsYXNzIEVjYWJzRGlhbG9nTWVzc2FnZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgbWVzc2FnZTogc3RyaW5nO1xyXG4gIGNvbG9yOiBUaGVtZVBhbGV0dGUgPSAncHJpbWFyeSc7XHJcbiAgdGl0bGVDb2xvciA9ICdzdWNjZXNzJztcclxuICBwcml2YXRlIGRlc3Ryb3kkOiBTdWJqZWN0PGFueT4gPSBuZXcgU3ViamVjdDxhbnk+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPEVjYWJzRGlhbG9nTWVzc2FnZUNvbXBvbmVudENvbmZpZz4sXHJcbiAgICBASW5qZWN0KCBNQVRfRElBTE9HX0RBVEEgKSBwdWJsaWMgZGF0YTogRWNhYnNEaWFsb2dNZXNzYWdlQ29tcG9uZW50Q29uZmlnLFxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCB0cnVlICk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICBjbG9zZURpYWxvZygpIHtcclxuICAgIGlmICggdGhpcy5kYXRhLmxvYWRpbmckICkge1xyXG4gICAgICB0aGlzLmRhdGEubG9hZGluZyQ/LnBpcGUoIHRha2VVbnRpbCggdGhpcy5kZXN0cm95JCApICkuc3Vic2NyaWJlKCAoIGxvYWRpbmcgKSA9PiB7XHJcbiAgICAgICAgaWYgKCAhbG9hZGluZyApIHtcclxuICAgICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCB0cnVlICk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9ICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSggdHJ1ZSApO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBFY2Fic0RpYWxvZ01lc3NhZ2VDb21wb25lbnRDb25maWcge1xyXG4gIHRpdGxlPzogc3RyaW5nO1xyXG4gIHRpdGxlQ29sb3I/OiBUaGVtZVBhbGV0dGUgfCAnc3VjY2Vzcyc7XHJcbiAgbWVzc2FnZTogc3RyaW5nO1xyXG4gIGNvbG9yPzogVGhlbWVQYWxldHRlO1xyXG4gIGNvbmZpcm1MYWJlbD86IHN0cmluZztcclxuICBpc1BvcG92ZXI/OiBib29sZWFuO1xyXG4gIGlzQnV0dG9uQmxvY2s/OiBib29sZWFuO1xyXG4gIGxvYWRpbmckPzogT2JzZXJ2YWJsZTxib29sZWFuPjtcclxufVxyXG4iLCI8ZGl2IG1hdERpYWxvZ1RpdGxlICpuZ0lmPVwiZGF0YT8udGl0bGUgfHwgISFkYXRhPy5pc1BvcG92ZXJcIiBjbGFzcz1cImZsZXggZmxleC1jb2x1bW5cIj5cclxuICA8ZGl2ICpuZ0lmPVwiISFkYXRhPy5pc1BvcG92ZXJcIiBjbGFzcz1cInctZnVsbCBmbGV4IGp1c3RpZnktZW5kXCI+XHJcbiAgICA8bWF0LWljb25cclxuICAgICAgKGNsaWNrKT1cImRpYWxvZ1JlZi5jbG9zZSh0cnVlKVwiXHJcbiAgICAgIGNsYXNzPVwibWF0LWljb24gbWF0ZXJpYWwtaWNvbnMtb3V0bGluZWQgZmxvYXQtcmlnaHQgaWNvbi0tY2xvc2UgbWItMlwiXHJcbiAgICAgIHJvbGU9XCJidXR0b25cIlxyXG4gICAgPlxyXG4gICAgICBjbG9zZVxyXG4gICAgPC9tYXQtaWNvbj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiAqbmdJZj1cImRhdGEudGl0bGVcIiBjbGFzcz1cInRpdGxlIGZvbnQtc2VtaWJvbGQgaGVhZGluZy0teHNcIiBbbmdDbGFzc109XCJkYXRhPy50aXRsZUNvbG9yIHx8IHRpdGxlQ29sb3JcIj5cclxuICAgIHt7IGRhdGEudGl0bGUgfX1cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48ZGl2IG1hdC1kaWFsb2ctY29udGVudD5cclxuICB7e2RhdGE/Lm1lc3NhZ2V9fVxyXG48L2Rpdj5cclxuXHJcbjxkaXYgY2xhc3M9XCJwYi02XCI+XHJcbiAgPGRpdiBtYXQtZGlhbG9nLWFjdGlvbnMgY2xhc3M9XCJidG5fX2dyb3VwIGZsZXgganVzdGlmeS1lbmQgdy1mdWxsXCIgKm5nSWY9XCIhZGF0YT8uaXNQb3BvdmVyXCI+XHJcbiAgICA8ZWNhYnMtYnV0dG9ucyBbY29sb3JdPVwiZGF0YT8uY29sb3IgfHwgY29sb3JcIiBbZnVsbF09XCJkYXRhPy5pc0J1dHRvbkJsb2NrXCIgIFtsb2FkaW5nXT1cImRhdGEubG9hZGluZyQgfCBhc3luY1wiIChjbGljayk9XCJjbG9zZURpYWxvZygpXCI+XHJcbiAgICAgIHt7IGRhdGE/LmNvbmZpcm1MYWJlbCB9fVxyXG4gICAgPC9lY2Ficy1idXR0b25zPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|
|
@@ -226,13 +226,13 @@ export class EcabsSelectComponent extends ElementBaseComponent {
|
|
|
226
226
|
const skipSteps = this.value.includes(this.selectAllValue);
|
|
227
227
|
if (!skipSteps) {
|
|
228
228
|
this.value.forEach((value) => {
|
|
229
|
-
const index = this.selectedItems
|
|
229
|
+
const index = this.selectedItems?.findIndex((selectedItem) => selectedItem.value === value);
|
|
230
230
|
if (index !== -1) {
|
|
231
231
|
selectedItems.push(this.selectedItems[index]);
|
|
232
232
|
}
|
|
233
233
|
else {
|
|
234
234
|
// eslint-disable-next-line @typescript-eslint/no-shadow
|
|
235
|
-
const item = this.items
|
|
235
|
+
const item = this.items?.find((item) => item.value === value);
|
|
236
236
|
if (item) {
|
|
237
237
|
selectedItems.push(item);
|
|
238
238
|
}
|
|
@@ -325,4 +325,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
325
325
|
type: ViewChild,
|
|
326
326
|
args: [MatSelectSearchComponent]
|
|
327
327
|
}] } });
|
|
328
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNhYnMtc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VjYWJzLWNvbXBvbmVudHMvc3JjL2xpYi9lY2Ficy1zZWxlY3QvZWNhYnMtc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VjYWJzLWNvbXBvbmVudHMvc3JjL2xpYi9lY2Ficy1zZWxlY3QvZWNhYnMtc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxTQUFTLEVBQ1QsWUFBWSxFQUVaLEtBQUssRUFJTCxNQUFNLEVBRU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pFLE9BQU8sRUFDTCxlQUFlLEVBQ2YsYUFBYSxFQUNiLFlBQVksRUFDWixHQUFHLEVBQ0gsWUFBWSxHQUNiLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxvQkFBb0IsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7Ozs7QUFheEQsTUFBTSxPQUFPLG9CQUNYLFNBQVEsb0JBQW9CO0lBOERUO0lBQ0E7SUE3RFYsS0FBSyxDQUFtQztJQUN4QyxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ2pCLGFBQWEsR0FBWSxLQUFLLENBQUM7SUFDL0Isb0JBQW9CLEdBQUcsS0FBSyxDQUFDO0lBQzdCLHNCQUFzQixHQUFXLFFBQVEsQ0FBQztJQUMxQyxlQUFlLEdBQUcsS0FBSyxDQUFDO0lBQ3hCLGtCQUFrQixHQUFHLEtBQUssQ0FBQztJQUMzQiwrQkFBK0IsR0FBRyxJQUFJLENBQUM7SUFDdkMsY0FBYyxHQUFRLENBQUMsQ0FBQztJQUN4QixtQkFBbUIsR0FBRyxtQkFB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LEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRywrQkFBK0I7c0JBQXZDLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDSSxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBRUcsZUFBZTtzQkFBeEIsTUFBTTtnQkFFcUIsV0FBVztzQkFBdEMsU0FBUzt1QkFBRSxhQUFhO2dCQUV6Qix3QkFBd0I7c0JBRHZCLFNBQVM7dUJBQUUsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5qZWN0b3IsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIFVudHlwZWRGb3JtQ29udHJvbCxcclxuICBOZ0NvbnRyb2wsXHJcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRPcHRpb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcclxuaW1wb3J0IHsgTWF0U2VsZWN0U2VhcmNoQ29tcG9uZW50IH0gZnJvbSAnbmd4LW1hdC1zZWxlY3Qtc2VhcmNoJztcclxuaW1wb3J0IHtcclxuICBCZWhhdmlvclN1YmplY3QsXHJcbiAgY29tYmluZUxhdGVzdCxcclxuICBkZWJvdW5jZVRpbWUsXHJcbiAgbWFwLFxyXG4gIFN1YnNjcmlwdGlvbixcclxufSBmcm9tICdyeGpzJztcclxuaW1wb3J0IEVsZW1lbnRCYXNlQ29tcG9uZW50IGZyb20gJy4uL2Jhc2UvZWxlbWVudC1iYXNlJztcclxuXHJcbkBDb21wb25lbnQoIHtcclxuICBzZWxlY3RvcjogJ2VjYWJzLXNlbGVjdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2VjYWJzLXNlbGVjdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogRWNhYnNTZWxlY3RDb21wb25lbnQsXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICBdLFxyXG59IClcclxuZXhwb3J0IGNsYXNzIEVjYWJzU2VsZWN0Q29tcG9uZW50XHJcbiAgZXh0ZW5kcyBFbGVtZW50QmFzZUNvbXBvbmVudFxyXG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KCkgaXRlbXMhOiB7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBhbnkgfVtdO1xyXG4gIEBJbnB1dCgpIG11bHRpcGxlID0gZmFsc2U7XHJcbiAgQElucHV0KCkgdXNlTm9uZU9wdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHVzZU9ubHlEaXNhYmxlZENsYXNzID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2VhcmNoRmllbGRQbGFjZWhvbGRlcjogc3RyaW5nID0gJ1NlYXJjaCc7XHJcbiAgQElucHV0KCkgdXNlU2VhcmNoT3B0aW9uID0gZmFsc2U7XHJcbiAgQElucHV0KCkgdXNlU2VsZWN0QWxsT3B0aW9uID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2V0QWxsT3B0aW9uQWZ0ZXJDaG9zZW5BbGxJdGVtcyA9IHRydWU7XHJcbiAgQElucHV0KCkgc2VsZWN0QWxsVmFsdWU6IGFueSA9IDA7XHJcbiAgQElucHV0KCkgbm9FbnRyaWVzRm91bmRMYWJlbCA9ICdObyBtYXRjaGluZyBmb3VuZCc7XHJcbiAgQElucHV0KCkgbm9uZUxhYmVsID0gJ05vbmUnO1xyXG4gIEBJbnB1dCgpIGFsbExhYmVsID0gJ0FsbCc7XHJcbiAgQElucHV0KCkgb3RoZXJMYWJlbCA9ICdPdGhlcic7XHJcbiAgQElucHV0KCkgb3RoZXJzTGFiZWwgPSAnT3RoZXJzJztcclxuICBAT3V0cHV0KCkgdXBkYXRlRmlsdGVySXRlbXM6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID1cclxuICAgIG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIEBPdXRwdXQoKSBzZWxlY3Rpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoICdhbGxTZWxlY3RlZCcgKSBhbGxTZWxlY3RlZCE6IE1hdE9wdGlvbjtcclxuICBAVmlld0NoaWxkKCBNYXRTZWxlY3RTZWFyY2hDb21wb25lbnQgKVxyXG4gIG1hdFNlbGVjdFNlYXJjaENvbXBvbmVudCE6IE1hdFNlbGVjdFNlYXJjaENvbXBvbmVudDtcclxuXHJcbiAgdmFsITogYW55O1xyXG4gIGZpbHRlcmVkSXRlbXMkOiBCZWhhdmlvclN1YmplY3Q8eyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogYW55IH1bXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFxyXG4gICAgeyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogYW55IH1bXVxyXG4gID4oIFtdICk7XHJcbiAgaXRlbUZpbHRlckN0cmw6IFVudHlwZWRGb3JtQ29udHJvbCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKTtcclxuICBpc0NsZWFyQWxsID0gZmFsc2U7XHJcbiAgc2hvd0ZpbHRlcmVkQWxsT3B0aW9uID0gdHJ1ZTtcclxuICBzZWxlY3RlZEl0ZW1zOiB7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBhbnkgfVtdID0gW107XHJcbiAgbm90U2VsZWN0ZWRJdGVtczogeyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogYW55IH1bXSA9IFtdO1xyXG4gIHN1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcblxyXG4gIGdldCB2YWx1ZSgpOiBhbnkge1xyXG4gICAgcmV0dXJuIHRoaXMudmFsO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHRyaWdnZXIoKTogc3RyaW5nIHtcclxuICAgIGlmICggdGhpcy5nZXRBbGxTZWxlY3RlZENoZWNrZWQoKSApIHtcclxuICAgICAgcmV0dXJuIHRoaXMuYWxsTGFiZWw7XHJcbiAgICB9XHJcbiAgICBjb25zdCBmaXJzdENob3NlblZhbHVlID0gdGhpcy52YWwgJiYgdGhpcy5tdWx0aXBsZSA/IHRoaXMuZ2V0TGFiZWwoIHRoaXMudmFsWyAwIF0gKSA6IHRoaXMuZ2V0TGFiZWwoIHRoaXMudmFsICk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMubXVsdGlwbGUgJiYgdGhpcy52YWx1ZT8ubGVuZ3RoID4gMVxyXG4gICAgICA/IGAkeyBmaXJzdENob3NlblZhbHVlIH0gKCskeyB0aGlzLnVzZVNlbGVjdEFsbE9wdGlvbiAmJiB0aGlzLmFsbFNlbGVjdGVkPy5zZWxlY3RlZCA/IHRoaXMudmFsdWU/Lmxlbmd0aCAtIDIgOiB0aGlzLnZhbHVlPy5sZW5ndGggLSAxXHJcbiAgICAgIH1cclxuICAgICAgICAgICR7IHRoaXMudmFsdWU/Lmxlbmd0aCA9PT0gMiA/IHRoaXMub3RoZXJMYWJlbCA6IHRoaXMub3RoZXJzTGFiZWwgfSlgXHJcbiAgICAgIDogZmlyc3RDaG9zZW5WYWx1ZTtcclxuICB9XHJcblxyXG4gIHNldCB2YWx1ZSggdmFsICkge1xyXG4gICAgaWYgKCB0aGlzLnZhbCAhPT0gdmFsICkge1xyXG4gICAgICB0aGlzLnZhbCA9IHZhbDtcclxuICAgICAgdGhpcy5zZXRTZWxlY3RlZEl0ZW1zKCk7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UoIHZhbCApO1xyXG4gICAgICB0aGlzLm9uVG91Y2goIHZhbCApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3RvcixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoIGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMgKTogdm9pZCB7XHJcbiAgICBjb25zdCB7IGl0ZW1zIH0gPSBjaGFuZ2VzO1xyXG5cclxuICAgIGlmICggaXRlbXMgJiYgaXRlbXMuY3VycmVudFZhbHVlICkge1xyXG4gICAgICB0aGlzLmZpbHRlckl0ZW1zKCk7XHJcblxyXG4gICAgICBpZiAoIHRoaXMubXVsdGlwbGUgJiYgdGhpcy51c2VTZWxlY3RBbGxPcHRpb24gJiYgdGhpcy5hbGxTZWxlY3RlZD8uc2VsZWN0ZWQgKSB7XHJcbiAgICAgICAgc2V0VGltZW91dCggKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jb250cm9sLnBhdGNoVmFsdWUoIFsgLi4udGhpcy5maWx0ZXJlZEl0ZW1zJC52YWx1ZS5tYXAoICggaXRlbSApID0+IGl0ZW0udmFsdWUgKSwgdGhpcy5zZWxlY3RBbGxWYWx1ZSBdLCB7XHJcbiAgICAgICAgICAgIGVtaXRFdmVudDogZmFsc2UsXHJcbiAgICAgICAgICB9ICk7XHJcbiAgICAgICAgfSwgMTAwICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IG5nQ29udHJvbDogTmdDb250cm9sID0gdGhpcy5pbmplY3Rvci5nZXQoXHJcbiAgICAgIE5nQ29udHJvbCxcclxuICAgICAgbnVsbFxyXG4gICAgKSBhcyBOZ0NvbnRyb2w7XHJcblxyXG4gICAgaWYgKCBuZ0NvbnRyb2wgKSB7XHJcbiAgICAgIHRoaXMuY29udHJvbCA9IG5nQ29udHJvbC5jb250cm9sIGFzIFVudHlwZWRGb3JtQ29udHJvbDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIHRoaXMubWF0U2VsZWN0U2VhcmNoQ29tcG9uZW50ICkge1xyXG4gICAgICB0aGlzLm1hdFNlbGVjdFNlYXJjaENvbXBvbmVudC5fc2hvd05vRW50cmllc0ZvdW5kJCA9IGNvbWJpbmVMYXRlc3QoIFtcclxuICAgICAgICB0aGlzLml0ZW1GaWx0ZXJDdHJsLnZhbHVlQ2hhbmdlcyxcclxuICAgICAgICB0aGlzLmZpbHRlcmVkSXRlbXMkLFxyXG4gICAgICBdICkucGlwZShcclxuICAgICAgICBtYXAoXHJcbiAgICAgICAgICAoIFsgdmFsdWUsIGl0ZW1zIF0gKSA9PlxyXG4gICAgICAgICAgICB0aGlzLm1hdFNlbGVjdFNlYXJjaENvbXBvbmVudC5ub0VudHJpZXNGb3VuZExhYmVsICYmXHJcbiAgICAgICAgICAgIHZhbHVlICYmXHJcbiAgICAgICAgICAgIGl0ZW1zLmxlbmd0aCA9PT0gMFxyXG4gICAgICAgIClcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcclxuICAgICAgdGhpcy5pdGVtRmlsdGVyQ3RybC52YWx1ZUNoYW5nZXNcclxuICAgICAgICAucGlwZSggZGVib3VuY2VUaW1lKCAyMDAgKSApXHJcbiAgICAgICAgLnN1YnNjcmliZSggKCB2YWx1ZTogYW55ICkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5maWx0ZXJJdGVtcygpO1xyXG4gICAgICAgICAgdGhpcy51cGRhdGVGaWx0ZXJJdGVtcy5lbWl0KCB2YWx1ZSApO1xyXG5cclxuICAgICAgICAgIGlmICggdGhpcy5pc0NsZWFyQWxsICkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRyb2wucGF0Y2hWYWx1ZSggW10sIHsgZW1pdEV2ZW50OiBmYWxzZSB9ICk7XHJcbiAgICAgICAgICAgIHRoaXMuaXNDbGVhckFsbCA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cclxuICBvbkNoYW5nZTogYW55ID0gKCkgPT4ge1xyXG4gIH07XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxyXG4gIG9uVG91Y2g6IGFueSA9ICgpID0+IHtcclxuICB9O1xyXG5cclxuICB0b2dnbGVBbGxTZWxlY3Rpb24oKTogdm9pZCB7XHJcbiAgICBpZiAoIHRoaXMuYWxsU2VsZWN0ZWQuc2VsZWN0ZWQgKSB7XHJcbiAgICAgIGlmICggdGhpcy51c2VTZWFyY2hPcHRpb24gKSB7XHJcbiAgICAgICAgdGhpcy5jb250cm9sLnBhdGNoVmFsdWUoIFsgLi4udGhpcy5maWx0ZXJlZEl0ZW1zJC52YWx1ZS5tYXAoICggaXRlbSApID0+IGl0ZW0udmFsdWUgKSwgdGhpcy5zZWxlY3RBbGxWYWx1ZSBdICk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5jb250cm9sLnBhdGNoVmFsdWUoIFsgLi4udGhpcy5pdGVtcy5tYXAoICggaXRlbSApID0+IGl0ZW0udmFsdWUgKSwgdGhpcy5zZWxlY3RBbGxWYWx1ZSBdICk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY29udHJvbC5wYXRjaFZhbHVlKCBbXSApO1xyXG4gICAgICB0aGlzLmlzQ2xlYXJBbGwgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdG9nZ2xlUGVyT25lKCk6IHZvaWQge1xyXG4gICAgc2V0VGltZW91dCggKCkgPT4ge1xyXG4gICAgICBpZiAoIHRoaXMuYWxsU2VsZWN0ZWQgKSB7XHJcbiAgICAgICAgaWYgKCB0aGlzLmFsbFNlbGVjdGVkLnNlbGVjdGVkICkge1xyXG4gICAgICAgICAgdGhpcy5hbGxTZWxlY3RlZC5kZXNlbGVjdCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIHRoaXMuc2V0QWxsT3B0aW9uQWZ0ZXJDaG9zZW5BbGxJdGVtcyAmJiB0aGlzLmNvbnRyb2wudmFsdWUubGVuZ3RoID09PSB0aGlzLml0ZW1zLmxlbmd0aCApIHtcclxuICAgICAgICAgIHRoaXMuYWxsU2VsZWN0ZWQuc2VsZWN0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9ICk7XHJcblxyXG4gICAgdGhpcy5pc0NsZWFyQWxsID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVOb25lKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gW107XHJcbiAgfVxyXG5cclxuICBnZXRBbGxTZWxlY3RlZENoZWNrZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5hbGxTZWxlY3RlZCAhPT0gdW5kZWZpbmVkICYmIHRoaXMuYWxsU2VsZWN0ZWQuc2VsZWN0ZWQ7XHJcbiAgfVxyXG5cclxuICBnZXRMYWJlbCggdmFsOiBhbnkgKTogc3RyaW5nIHtcclxuICAgIGlmICggdGhpcy51c2VTZWxlY3RBbGxPcHRpb24gJiYgdGhpcy5hbGxTZWxlY3RlZD8uc2VsZWN0ZWQgJiYgdGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zLmxlbmd0aCA+IDAgKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLml0ZW1zWyAwIF0ubGFiZWw7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGl0ZW06IHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IGFueSB9O1xyXG5cclxuICAgIGlmICggdmFsICE9PSB1bmRlZmluZWQgKSB7XHJcbiAgICAgIGlmICggdGhpcy51c2VTZWFyY2hPcHRpb24gKSB7XHJcbiAgICAgICAgaWYgKCB0aGlzLnNlbGVjdGVkSXRlbXMgJiYgdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDAgKSB7XHJcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXNoYWRvd1xyXG4gICAgICAgICAgaXRlbSA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5maW5kKCAoIGl0ZW0gKSA9PiBpdGVtLnZhbHVlID09PSB2YWwgKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKCB0aGlzLml0ZW1zICYmIHRoaXMuaXRlbXMubGVuZ3RoID4gMCApIHtcclxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tc2hhZG93XHJcbiAgICAgICAgICBpdGVtID0gdGhpcy5pdGVtcy5maW5kKCAoIGl0ZW0gKSA9PiBpdGVtLnZhbHVlID09PSB2YWwgKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBpdGVtID8gaXRlbS5sYWJlbCA6ICcnO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAnJztcclxuICB9XHJcblxyXG4gIHdyaXRlVmFsdWUoIHZhbHVlOiBhbnkgKTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKCBmbjogYW55ICk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoIGZuOiBhbnkgKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2ggPSBmbjtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBvblNlbGVjdGlvbkNoYW5nZWQoICRldmVudDogYW55ICk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCggJGV2ZW50ICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbHRlckl0ZW1zKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXRTZWxlY3RlZEl0ZW1zKCk7XHJcblxyXG4gICAgaWYgKCAhdGhpcy5pdGVtcyApIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGdldCB0aGUgc2VhcmNoIGtleXdvcmRcclxuICAgIGxldCBzZWFyY2g6IHN0cmluZyA9IHRoaXMuaXRlbUZpbHRlckN0cmwudmFsdWU7XHJcblxyXG4gICAgaWYgKCAhc2VhcmNoIHx8IHNlYXJjaCA9PT0gJycgKSB7XHJcbiAgICAgIGlmICggdGhpcy51c2VTZWFyY2hPcHRpb24gJiYgIXRoaXMuaXRlbXM/Lmxlbmd0aCApIHtcclxuICAgICAgICB0aGlzLmZpbHRlcmVkSXRlbXMkLm5leHQoIFsgLi4udGhpcy5zZWxlY3RlZEl0ZW1zIF0gKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmZpbHRlcmVkSXRlbXMkLm5leHQoIHRoaXMuaXRlbXM/LnNsaWNlKCkgKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5zaG93RmlsdGVyZWRBbGxPcHRpb24gPSB0cnVlO1xyXG5cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHNlYXJjaCA9IHNlYXJjaC50b0xvd2VyQ2FzZSgpO1xyXG5cclxuICAgIHRoaXMuc2hvd0ZpbHRlcmVkQWxsT3B0aW9uID1cclxuICAgICAgdGhpcy5hbGxMYWJlbC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCBzZWFyY2gudG9Mb3dlckNhc2UoKSApIHx8XHJcbiAgICAgICggdGhpcy52YWx1ZSBpbnN0YW5jZW9mIEFycmF5ICYmIHRoaXMudmFsdWUuaW5jbHVkZXMoIHRoaXMuc2VsZWN0QWxsVmFsdWUgKSApIHx8XHJcbiAgICAgICggISggdGhpcy52YWx1ZSBpbnN0YW5jZW9mIEFycmF5ICkgJiYgdGhpcy52YWx1ZSA9PT0gdGhpcy5zZWxlY3RBbGxWYWx1ZSApO1xyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgaWYgKCB0aGlzLnVzZVNlYXJjaE9wdGlvbiApIHtcclxuICAgICAgY29uc3QgZmlsdGVyZWRJdGVtcyA9XHJcbiAgICAgICAgdGhpcy5ub3RTZWxlY3RlZEl0ZW1zPy5sZW5ndGggPiAwXHJcbiAgICAgICAgICA/IHRoaXMubm90U2VsZWN0ZWRJdGVtcy5maWx0ZXIoICggaXRlbSApID0+IGl0ZW0ubGFiZWwudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyggc2VhcmNoLnRvTG93ZXJDYXNlKCkgKSApXHJcbiAgICAgICAgICA6IFtdO1xyXG4gICAgICB0aGlzLmZpbHRlcmVkSXRlbXMkLm5leHQoIFsgLi4udGhpcy5zZWxlY3RlZEl0ZW1zLCAuLi5maWx0ZXJlZEl0ZW1zIF0gKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyZWRJdGVtcyQubmV4dChcclxuICAgICAgICB0aGlzLml0ZW1zPy5sZW5ndGggPiAwXHJcbiAgICAgICAgICA/IHRoaXMuaXRlbXMuZmlsdGVyKCAoIGl0ZW0gKSA9PiBpdGVtLmxhYmVsLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoIHNlYXJjaC50b0xvd2VyQ2FzZSgpICkgKVxyXG4gICAgICAgICAgOiBbXVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRTZWxlY3RlZEl0ZW1zKCk6IHZvaWQge1xyXG4gICAgaWYgKCB0aGlzLnVzZVNlYXJjaE9wdGlvbiApIHtcclxuICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtcyA9IFtdO1xyXG5cclxuICAgICAgaWYgKCB0aGlzLnZhbHVlICkge1xyXG4gICAgICAgIGlmICggdGhpcy52YWx1ZSBpbnN0YW5jZW9mIEFycmF5ICkge1xyXG4gICAgICAgICAgY29uc3Qgc2tpcFN0ZXBzID0gdGhpcy52YWx1ZS5pbmNsdWRlcyggdGhpcy5zZWxlY3RBbGxWYWx1ZSApO1xyXG5cclxuICAgICAgICAgIGlmICggIXNraXBTdGVwcyApIHtcclxuICAgICAgICAgICAgdGhpcy52YWx1ZS5mb3JFYWNoKCAoIHZhbHVlICkgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5zZWxlY3RlZEl0ZW1zLmZpbmRJbmRleCggKCBzZWxlY3RlZEl0ZW0gKSA9PiBzZWxlY3RlZEl0ZW0udmFsdWUgPT09IHZhbHVlICk7XHJcblxyXG4gICAgICAgICAgICAgIGlmICggaW5kZXggIT09IC0xICkge1xyXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcy5wdXNoKCB0aGlzLnNlbGVjdGVkSXRlbXNbIGluZGV4IF0gKTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1zaGFkb3dcclxuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLml0ZW1zLmZpbmQoICggaXRlbSApID0+IGl0ZW0udmFsdWUgPT09IHZhbHVlICk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKCBpdGVtICkge1xyXG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zLnB1c2goIGl0ZW0gKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5mb3JFYWNoKCAoIHNlbGVjdGVkSXRlbSApID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMudmFsdWUuZmluZCggKCB2YWx1ZSApID0+IHNlbGVjdGVkSXRlbS52YWx1ZSA9PT0gdmFsdWUgKTtcclxuXHJcbiAgICAgICAgICAgICAgaWYgKCBpbmRleCA9PT0gLTEgKSB7XHJcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zLnNwbGljZSggaW5kZXgsIDEgKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnNlbGVjdGVkSXRlbXMuZmluZEluZGV4KCAoIHNlbGVjdGVkSXRlbSApID0+IHNlbGVjdGVkSXRlbS52YWx1ZSA9PT0gdGhpcy52YWx1ZSApO1xyXG5cclxuICAgICAgICAgIGlmICggaW5kZXggIT09IC0xICkge1xyXG4gICAgICAgICAgICBzZWxlY3RlZEl0ZW1zLnB1c2goIHRoaXMuc2VsZWN0ZWRJdGVtc1sgaW5kZXggXSApO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1zaGFkb3dcclxuICAgICAgICAgICAgY29uc3QgaXRlbSA9IHRoaXMuaXRlbXMuZmluZCggKCBpdGVtICkgPT4gaXRlbS52YWx1ZSA9PT0gdGhpcy52YWx1ZSApO1xyXG5cclxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1kZXB0aFxyXG4gICAgICAgICAgICBpZiAoIGl0ZW0gKSB7XHJcbiAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcy5wdXNoKCBpdGVtICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFsgLi4uc2VsZWN0ZWRJdGVtcyBdO1xyXG4gICAgICAgIHRoaXMubm90U2VsZWN0ZWRJdGVtcyA9IHRoaXMuaXRlbXM/LmZpbHRlcihcclxuICAgICAgICAgICggaXRlbSApID0+IHRoaXMuc2VsZWN0ZWRJdGVtcy5maW5kSW5kZXgoICggc2VsZWN0ZWRJdGVtICkgPT4gc2VsZWN0ZWRJdGVtLnZhbHVlID09PSBpdGVtLnZhbHVlICkgPT09IC0xXHJcbiAgICAgICAgKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm5vdFNlbGVjdGVkSXRlbXMgPSB0aGlzLml0ZW1zPy5zbGljZSgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxhcHAtZWxlbWVudC13cmFwcGVyIFtkYXRhXT1cImdldERhdGEoKVwiPlxyXG4gIDxtYXQtZm9ybS1maWVsZCBbbmdDbGFzc109XCJ7IGRpc2FibGVkOiB1c2VPbmx5RGlzYWJsZWRDbGFzcyB9XCI+XHJcbiAgICA8bWF0LXNlbGVjdFxyXG4gICAgICBjbGFzcz1cImZvcm0tZmllbGRfX3NlbGVjdFwiXHJcbiAgICAgIFsobmdNb2RlbCldPVwidmFsdWVcIlxyXG4gICAgICAoY2xvc2VkKT1cIm9uVG91Y2goKVwiXHJcbiAgICAgIFtpZF09XCJuYW1lXCJcclxuICAgICAgYXBwZWFyYW5jZT1cIm91dGxpbmVcIlxyXG4gICAgICBbbXVsdGlwbGVdPVwibXVsdGlwbGVcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxyXG4gICAgICBbZGlzYWJsZVJpcHBsZV09XCJ0cnVlXCJcclxuICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJvblNlbGVjdGlvbkNoYW5nZWQoJGV2ZW50KVwiXHJcbiAgICAgIFttYXRUb29sdGlwXT1cInRyaWdnZXJcIlxyXG4gICAgICBhcHBUb29sdGlwSWZUcnVuY2F0ZWRcclxuICAgICAgW2NsYXNzTmFtZVRydW5jYXRlZFRvb2x0aXBdPVwiJ21hdC1zZWxlY3QtdmFsdWUnXCJcclxuICAgID5cclxuICAgICAgPG1hdC1zZWxlY3QtdHJpZ2dlcj5cclxuICAgICAgICA8c3Bhbj57eyB0cmlnZ2VyIH19PC9zcGFuPlxyXG4gICAgICA8L21hdC1zZWxlY3QtdHJpZ2dlcj5cclxuICAgICAgPG1hdC1vcHRpb24gKm5nSWY9XCJ1c2VTZWFyY2hPcHRpb25cIj5cclxuICAgICAgICA8bmd4LW1hdC1zZWxlY3Qtc2VhcmNoXHJcbiAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiaXRlbUZpbHRlckN0cmxcIlxyXG4gICAgICAgICAgW3BsYWNlaG9sZGVyTGFiZWxdPVwic2VhcmNoRmllbGRQbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICBbbm9FbnRyaWVzRm91bmRMYWJlbF09XCJub0VudHJpZXNGb3VuZExhYmVsXCJcclxuICAgICAgICA+PC9uZ3gtbWF0LXNlbGVjdC1zZWFyY2g+XHJcbiAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgPG1hdC1vcHRpb24gKm5nSWY9XCJ1c2VOb25lT3B0aW9uXCIgKGNsaWNrKT1cInRvZ2dsZU5vbmUoKVwiPnt7IG5vbmVMYWJlbCB9fTwvbWF0LW9wdGlvbj5cclxuICAgICAgPG1hdC1vcHRpb25cclxuICAgICAgICAjYWxsU2VsZWN0ZWRcclxuICAgICAgICAqbmdJZj1cInVzZVNlbGVjdEFsbE9wdGlvbiAmJiBzaG93RmlsdGVyZWRBbGxPcHRpb25cIlxyXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVBbGxTZWxlY3Rpb24oKVwiXHJcbiAgICAgICAgW3ZhbHVlXT1cInNlbGVjdEFsbFZhbHVlXCJcclxuICAgICAgPlxyXG4gICAgICAgIHt7YWxsTGFiZWwgfX1cclxuICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICA8bWF0LW9wdGlvblxyXG4gICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGZpbHRlcmVkSXRlbXMkIHwgYXN5bmNcIlxyXG4gICAgICAgIFt2YWx1ZV09XCJpdGVtLnZhbHVlXCJcclxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlUGVyT25lKClcIlxyXG4gICAgICAgIFttYXRUb29sdGlwXT1cIml0ZW0ubGFiZWxcIlxyXG4gICAgICAgIGFwcFRvb2x0aXBJZlRydW5jYXRlZFxyXG4gICAgICAgIFtjbGFzc05hbWVUcnVuY2F0ZWRUb29sdGlwXT1cIidtYXQtb3B0aW9uLXRleHQnXCJcclxuICAgICAgPlxyXG4gICAgICAgIHt7IGl0ZW0ubGFiZWwgfX1cclxuICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgPC9tYXQtc2VsZWN0PlxyXG4gIDwvbWF0LWZvcm0tZmllbGQ+XHJcbjwvYXBwLWVsZW1lbnQtd3JhcHBlcj5cclxuIl19
|
|
328
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNhYnMtc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VjYWJzLWNvbXBvbmVudHMvc3JjL2xpYi9lY2Ficy1zZWxlY3QvZWNhYnMtc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VjYWJzLWNvbXBvbmVudHMvc3JjL2xpYi9lY2Ficy1zZWxlY3QvZWNhYnMtc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxTQUFTLEVBQ1QsWUFBWSxFQUVaLEtBQUssRUFJTCxNQUFNLEVBRU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pFLE9BQU8sRUFDTCxlQUFlLEVBQ2YsYUFBYSxFQUNiLFlBQVksRUFDWixHQUFHLEVBQ0gsWUFBWSxHQUNiLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxvQkFBb0IsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7Ozs7QUFheEQsTUFBTSxPQUFPLG9CQUNYLFNBQVEsb0JBQW9CO0lBOERUO0lBQ0E7SUE3RFYsS0FBSyxDQUFtQztJQUN4QyxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ2pCLGFBQWEsR0FBWSxLQUFLLENBQUM7SUFDL0Isb0JBQW9CLEdBQUcsS0FBSyxDQUFDO0lBQzdCLHNCQUFzQixHQUFXLFFBQVEsQ0FBQztJQUMxQyxlQUFlLEdBQUcsS0FBSyxDQUFDO0lBQ3hCLGtCQUFrQixHQUFHLEtBQUssQ0FBQztJQUMzQiwrQkFBK0IsR0FBRyxJQUFJLENBQUM7SUFDdkMsY0FBYyxHQUFRLENBQUMsQ0FBQztJQUN4QixtQkFBbUIsR0FBRyxtQkFB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LEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRywrQkFBK0I7c0JBQXZDLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDSSxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBRUcsZUFBZTtzQkFBeEIsTUFBTTtnQkFFcUIsV0FBVztzQkFBdEMsU0FBUzt1QkFBRSxhQUFhO2dCQUV6Qix3QkFBd0I7c0JBRHZCLFNBQVM7dUJBQUUsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5qZWN0b3IsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIFVudHlwZWRGb3JtQ29udHJvbCxcclxuICBOZ0NvbnRyb2wsXHJcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRPcHRpb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcclxuaW1wb3J0IHsgTWF0U2VsZWN0U2VhcmNoQ29tcG9uZW50IH0gZnJvbSAnbmd4LW1hdC1zZWxlY3Qtc2VhcmNoJztcclxuaW1wb3J0IHtcclxuICBCZWhhdmlvclN1YmplY3QsXHJcbiAgY29tYmluZUxhdGVzdCxcclxuICBkZWJvdW5jZVRpbWUsXHJcbiAgbWFwLFxyXG4gIFN1YnNjcmlwdGlvbixcclxufSBmcm9tICdyeGpzJztcclxuaW1wb3J0IEVsZW1lbnRCYXNlQ29tcG9uZW50IGZyb20gJy4uL2Jhc2UvZWxlbWVudC1iYXNlJztcclxuXHJcbkBDb21wb25lbnQoIHtcclxuICBzZWxlY3RvcjogJ2VjYWJzLXNlbGVjdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2VjYWJzLXNlbGVjdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogRWNhYnNTZWxlY3RDb21wb25lbnQsXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICBdLFxyXG59IClcclxuZXhwb3J0IGNsYXNzIEVjYWJzU2VsZWN0Q29tcG9uZW50XHJcbiAgZXh0ZW5kcyBFbGVtZW50QmFzZUNvbXBvbmVudFxyXG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KCkgaXRlbXMhOiB7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBhbnkgfVtdO1xyXG4gIEBJbnB1dCgpIG11bHRpcGxlID0gZmFsc2U7XHJcbiAgQElucHV0KCkgdXNlTm9uZU9wdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHVzZU9ubHlEaXNhYmxlZENsYXNzID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2VhcmNoRmllbGRQbGFjZWhvbGRlcjogc3RyaW5nID0gJ1NlYXJjaCc7XHJcbiAgQElucHV0KCkgdXNlU2VhcmNoT3B0aW9uID0gZmFsc2U7XHJcbiAgQElucHV0KCkgdXNlU2VsZWN0QWxsT3B0aW9uID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2V0QWxsT3B0aW9uQWZ0ZXJDaG9zZW5BbGxJdGVtcyA9IHRydWU7XHJcbiAgQElucHV0KCkgc2VsZWN0QWxsVmFsdWU6IGFueSA9IDA7XHJcbiAgQElucHV0KCkgbm9FbnRyaWVzRm91bmRMYWJlbCA9ICdObyBtYXRjaGluZyBmb3VuZCc7XHJcbiAgQElucHV0KCkgbm9uZUxhYmVsID0gJ05vbmUnO1xyXG4gIEBJbnB1dCgpIGFsbExhYmVsID0gJ0FsbCc7XHJcbiAgQElucHV0KCkgb3RoZXJMYWJlbCA9ICdPdGhlcic7XHJcbiAgQElucHV0KCkgb3RoZXJzTGFiZWwgPSAnT3RoZXJzJztcclxuICBAT3V0cHV0KCkgdXBkYXRlRmlsdGVySXRlbXM6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID1cclxuICAgIG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIEBPdXRwdXQoKSBzZWxlY3Rpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoICdhbGxTZWxlY3RlZCcgKSBhbGxTZWxlY3RlZCE6IE1hdE9wdGlvbjtcclxuICBAVmlld0NoaWxkKCBNYXRTZWxlY3RTZWFyY2hDb21wb25lbnQgKVxyXG4gIG1hdFNlbGVjdFNlYXJjaENvbXBvbmVudCE6IE1hdFNlbGVjdFNlYXJjaENvbXBvbmVudDtcclxuXHJcbiAgdmFsITogYW55O1xyXG4gIGZpbHRlcmVkSXRlbXMkOiBCZWhhdmlvclN1YmplY3Q8eyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogYW55IH1bXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFxyXG4gICAgeyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogYW55IH1bXVxyXG4gID4oIFtdICk7XHJcbiAgaXRlbUZpbHRlckN0cmw6IFVudHlwZWRGb3JtQ29udHJvbCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKTtcclxuICBpc0NsZWFyQWxsID0gZmFsc2U7XHJcbiAgc2hvd0ZpbHRlcmVkQWxsT3B0aW9uID0gdHJ1ZTtcclxuICBzZWxlY3RlZEl0ZW1zOiB7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBhbnkgfVtdID0gW107XHJcbiAgbm90U2VsZWN0ZWRJdGVtczogeyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogYW55IH1bXSA9IFtdO1xyXG4gIHN1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcblxyXG4gIGdldCB2YWx1ZSgpOiBhbnkge1xyXG4gICAgcmV0dXJuIHRoaXMudmFsO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHRyaWdnZXIoKTogc3RyaW5nIHtcclxuICAgIGlmICggdGhpcy5nZXRBbGxTZWxlY3RlZENoZWNrZWQoKSApIHtcclxuICAgICAgcmV0dXJuIHRoaXMuYWxsTGFiZWw7XHJcbiAgICB9XHJcbiAgICBjb25zdCBmaXJzdENob3NlblZhbHVlID0gdGhpcy52YWwgJiYgdGhpcy5tdWx0aXBsZSA/IHRoaXMuZ2V0TGFiZWwoIHRoaXMudmFsWyAwIF0gKSA6IHRoaXMuZ2V0TGFiZWwoIHRoaXMudmFsICk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMubXVsdGlwbGUgJiYgdGhpcy52YWx1ZT8ubGVuZ3RoID4gMVxyXG4gICAgICA/IGAkeyBmaXJzdENob3NlblZhbHVlIH0gKCskeyB0aGlzLnVzZVNlbGVjdEFsbE9wdGlvbiAmJiB0aGlzLmFsbFNlbGVjdGVkPy5zZWxlY3RlZCA/IHRoaXMudmFsdWU/Lmxlbmd0aCAtIDIgOiB0aGlzLnZhbHVlPy5sZW5ndGggLSAxXHJcbiAgICAgIH1cclxuICAgICAgICAgICR7IHRoaXMudmFsdWU/Lmxlbmd0aCA9PT0gMiA/IHRoaXMub3RoZXJMYWJlbCA6IHRoaXMub3RoZXJzTGFiZWwgfSlgXHJcbiAgICAgIDogZmlyc3RDaG9zZW5WYWx1ZTtcclxuICB9XHJcblxyXG4gIHNldCB2YWx1ZSggdmFsICkge1xyXG4gICAgaWYgKCB0aGlzLnZhbCAhPT0gdmFsICkge1xyXG4gICAgICB0aGlzLnZhbCA9IHZhbDtcclxuICAgICAgdGhpcy5zZXRTZWxlY3RlZEl0ZW1zKCk7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UoIHZhbCApO1xyXG4gICAgICB0aGlzLm9uVG91Y2goIHZhbCApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3RvcixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoIGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMgKTogdm9pZCB7XHJcbiAgICBjb25zdCB7IGl0ZW1zIH0gPSBjaGFuZ2VzO1xyXG5cclxuICAgIGlmICggaXRlbXMgJiYgaXRlbXMuY3VycmVudFZhbHVlICkge1xyXG4gICAgICB0aGlzLmZpbHRlckl0ZW1zKCk7XHJcblxyXG4gICAgICBpZiAoIHRoaXMubXVsdGlwbGUgJiYgdGhpcy51c2VTZWxlY3RBbGxPcHRpb24gJiYgdGhpcy5hbGxTZWxlY3RlZD8uc2VsZWN0ZWQgKSB7XHJcbiAgICAgICAgc2V0VGltZW91dCggKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jb250cm9sLnBhdGNoVmFsdWUoIFsgLi4udGhpcy5maWx0ZXJlZEl0ZW1zJC52YWx1ZS5tYXAoICggaXRlbSApID0+IGl0ZW0udmFsdWUgKSwgdGhpcy5zZWxlY3RBbGxWYWx1ZSBdLCB7XHJcbiAgICAgICAgICAgIGVtaXRFdmVudDogZmFsc2UsXHJcbiAgICAgICAgICB9ICk7XHJcbiAgICAgICAgfSwgMTAwICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IG5nQ29udHJvbDogTmdDb250cm9sID0gdGhpcy5pbmplY3Rvci5nZXQoXHJcbiAgICAgIE5nQ29udHJvbCxcclxuICAgICAgbnVsbFxyXG4gICAgKSBhcyBOZ0NvbnRyb2w7XHJcblxyXG4gICAgaWYgKCBuZ0NvbnRyb2wgKSB7XHJcbiAgICAgIHRoaXMuY29udHJvbCA9IG5nQ29udHJvbC5jb250cm9sIGFzIFVudHlwZWRGb3JtQ29udHJvbDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIHRoaXMubWF0U2VsZWN0U2VhcmNoQ29tcG9uZW50ICkge1xyXG4gICAgICB0aGlzLm1hdFNlbGVjdFNlYXJjaENvbXBvbmVudC5fc2hvd05vRW50cmllc0ZvdW5kJCA9IGNvbWJpbmVMYXRlc3QoIFtcclxuICAgICAgICB0aGlzLml0ZW1GaWx0ZXJDdHJsLnZhbHVlQ2hhbmdlcyxcclxuICAgICAgICB0aGlzLmZpbHRlcmVkSXRlbXMkLFxyXG4gICAgICBdICkucGlwZShcclxuICAgICAgICBtYXAoXHJcbiAgICAgICAgICAoIFsgdmFsdWUsIGl0ZW1zIF0gKSA9PlxyXG4gICAgICAgICAgICB0aGlzLm1hdFNlbGVjdFNlYXJjaENvbXBvbmVudC5ub0VudHJpZXNGb3VuZExhYmVsICYmXHJcbiAgICAgICAgICAgIHZhbHVlICYmXHJcbiAgICAgICAgICAgIGl0ZW1zLmxlbmd0aCA9PT0gMFxyXG4gICAgICAgIClcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcclxuICAgICAgdGhpcy5pdGVtRmlsdGVyQ3RybC52YWx1ZUNoYW5nZXNcclxuICAgICAgICAucGlwZSggZGVib3VuY2VUaW1lKCAyMDAgKSApXHJcbiAgICAgICAgLnN1YnNjcmliZSggKCB2YWx1ZTogYW55ICkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5maWx0ZXJJdGVtcygpO1xyXG4gICAgICAgICAgdGhpcy51cGRhdGVGaWx0ZXJJdGVtcy5lbWl0KCB2YWx1ZSApO1xyXG5cclxuICAgICAgICAgIGlmICggdGhpcy5pc0NsZWFyQWxsICkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRyb2wucGF0Y2hWYWx1ZSggW10sIHsgZW1pdEV2ZW50OiBmYWxzZSB9ICk7XHJcbiAgICAgICAgICAgIHRoaXMuaXNDbGVhckFsbCA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cclxuICBvbkNoYW5nZTogYW55ID0gKCkgPT4ge1xyXG4gIH07XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxyXG4gIG9uVG91Y2g6IGFueSA9ICgpID0+IHtcclxuICB9O1xyXG5cclxuICB0b2dnbGVBbGxTZWxlY3Rpb24oKTogdm9pZCB7XHJcbiAgICBpZiAoIHRoaXMuYWxsU2VsZWN0ZWQuc2VsZWN0ZWQgKSB7XHJcbiAgICAgIGlmICggdGhpcy51c2VTZWFyY2hPcHRpb24gKSB7XHJcbiAgICAgICAgdGhpcy5jb250cm9sLnBhdGNoVmFsdWUoIFsgLi4udGhpcy5maWx0ZXJlZEl0ZW1zJC52YWx1ZS5tYXAoICggaXRlbSApID0+IGl0ZW0udmFsdWUgKSwgdGhpcy5zZWxlY3RBbGxWYWx1ZSBdICk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5jb250cm9sLnBhdGNoVmFsdWUoIFsgLi4udGhpcy5pdGVtcy5tYXAoICggaXRlbSApID0+IGl0ZW0udmFsdWUgKSwgdGhpcy5zZWxlY3RBbGxWYWx1ZSBdICk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY29udHJvbC5wYXRjaFZhbHVlKCBbXSApO1xyXG4gICAgICB0aGlzLmlzQ2xlYXJBbGwgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdG9nZ2xlUGVyT25lKCk6IHZvaWQge1xyXG4gICAgc2V0VGltZW91dCggKCkgPT4ge1xyXG4gICAgICBpZiAoIHRoaXMuYWxsU2VsZWN0ZWQgKSB7XHJcbiAgICAgICAgaWYgKCB0aGlzLmFsbFNlbGVjdGVkLnNlbGVjdGVkICkge1xyXG4gICAgICAgICAgdGhpcy5hbGxTZWxlY3RlZC5kZXNlbGVjdCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIHRoaXMuc2V0QWxsT3B0aW9uQWZ0ZXJDaG9zZW5BbGxJdGVtcyAmJiB0aGlzLmNvbnRyb2wudmFsdWUubGVuZ3RoID09PSB0aGlzLml0ZW1zLmxlbmd0aCApIHtcclxuICAgICAgICAgIHRoaXMuYWxsU2VsZWN0ZWQuc2VsZWN0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9ICk7XHJcblxyXG4gICAgdGhpcy5pc0NsZWFyQWxsID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVOb25lKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gW107XHJcbiAgfVxyXG5cclxuICBnZXRBbGxTZWxlY3RlZENoZWNrZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5hbGxTZWxlY3RlZCAhPT0gdW5kZWZpbmVkICYmIHRoaXMuYWxsU2VsZWN0ZWQuc2VsZWN0ZWQ7XHJcbiAgfVxyXG5cclxuICBnZXRMYWJlbCggdmFsOiBhbnkgKTogc3RyaW5nIHtcclxuICAgIGlmICggdGhpcy51c2VTZWxlY3RBbGxPcHRpb24gJiYgdGhpcy5hbGxTZWxlY3RlZD8uc2VsZWN0ZWQgJiYgdGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zLmxlbmd0aCA+IDAgKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLml0ZW1zWyAwIF0ubGFiZWw7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGl0ZW06IHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IGFueSB9O1xyXG5cclxuICAgIGlmICggdmFsICE9PSB1bmRlZmluZWQgKSB7XHJcbiAgICAgIGlmICggdGhpcy51c2VTZWFyY2hPcHRpb24gKSB7XHJcbiAgICAgICAgaWYgKCB0aGlzLnNlbGVjdGVkSXRlbXMgJiYgdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDAgKSB7XHJcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXNoYWRvd1xyXG4gICAgICAgICAgaXRlbSA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5maW5kKCAoIGl0ZW0gKSA9PiBpdGVtLnZhbHVlID09PSB2YWwgKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKCB0aGlzLml0ZW1zICYmIHRoaXMuaXRlbXMubGVuZ3RoID4gMCApIHtcclxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tc2hhZG93XHJcbiAgICAgICAgICBpdGVtID0gdGhpcy5pdGVtcy5maW5kKCAoIGl0ZW0gKSA9PiBpdGVtLnZhbHVlID09PSB2YWwgKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBpdGVtID8gaXRlbS5sYWJlbCA6ICcnO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAnJztcclxuICB9XHJcblxyXG4gIHdyaXRlVmFsdWUoIHZhbHVlOiBhbnkgKTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKCBmbjogYW55ICk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoIGZuOiBhbnkgKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2ggPSBmbjtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBvblNlbGVjdGlvbkNoYW5nZWQoICRldmVudDogYW55ICk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCggJGV2ZW50ICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbHRlckl0ZW1zKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXRTZWxlY3RlZEl0ZW1zKCk7XHJcblxyXG4gICAgaWYgKCAhdGhpcy5pdGVtcyApIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGdldCB0aGUgc2VhcmNoIGtleXdvcmRcclxuICAgIGxldCBzZWFyY2g6IHN0cmluZyA9IHRoaXMuaXRlbUZpbHRlckN0cmwudmFsdWU7XHJcblxyXG4gICAgaWYgKCAhc2VhcmNoIHx8IHNlYXJjaCA9PT0gJycgKSB7XHJcbiAgICAgIGlmICggdGhpcy51c2VTZWFyY2hPcHRpb24gJiYgIXRoaXMuaXRlbXM/Lmxlbmd0aCApIHtcclxuICAgICAgICB0aGlzLmZpbHRlcmVkSXRlbXMkLm5leHQoIFsgLi4udGhpcy5zZWxlY3RlZEl0ZW1zIF0gKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmZpbHRlcmVkSXRlbXMkLm5leHQoIHRoaXMuaXRlbXM/LnNsaWNlKCkgKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5zaG93RmlsdGVyZWRBbGxPcHRpb24gPSB0cnVlO1xyXG5cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHNlYXJjaCA9IHNlYXJjaC50b0xvd2VyQ2FzZSgpO1xyXG5cclxuICAgIHRoaXMuc2hvd0ZpbHRlcmVkQWxsT3B0aW9uID1cclxuICAgICAgdGhpcy5hbGxMYWJlbC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCBzZWFyY2gudG9Mb3dlckNhc2UoKSApIHx8XHJcbiAgICAgICggdGhpcy52YWx1ZSBpbnN0YW5jZW9mIEFycmF5ICYmIHRoaXMudmFsdWUuaW5jbHVkZXMoIHRoaXMuc2VsZWN0QWxsVmFsdWUgKSApIHx8XHJcbiAgICAgICggISggdGhpcy52YWx1ZSBpbnN0YW5jZW9mIEFycmF5ICkgJiYgdGhpcy52YWx1ZSA9PT0gdGhpcy5zZWxlY3RBbGxWYWx1ZSApO1xyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgaWYgKCB0aGlzLnVzZVNlYXJjaE9wdGlvbiApIHtcclxuICAgICAgY29uc3QgZmlsdGVyZWRJdGVtcyA9XHJcbiAgICAgICAgdGhpcy5ub3RTZWxlY3RlZEl0ZW1zPy5sZW5ndGggPiAwXHJcbiAgICAgICAgICA/IHRoaXMubm90U2VsZWN0ZWRJdGVtcy5maWx0ZXIoICggaXRlbSApID0+IGl0ZW0ubGFiZWwudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyggc2VhcmNoLnRvTG93ZXJDYXNlKCkgKSApXHJcbiAgICAgICAgICA6IFtdO1xyXG4gICAgICB0aGlzLmZpbHRlcmVkSXRlbXMkLm5leHQoIFsgLi4udGhpcy5zZWxlY3RlZEl0ZW1zLCAuLi5maWx0ZXJlZEl0ZW1zIF0gKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyZWRJdGVtcyQubmV4dChcclxuICAgICAgICB0aGlzLml0ZW1zPy5sZW5ndGggPiAwXHJcbiAgICAgICAgICA/IHRoaXMuaXRlbXMuZmlsdGVyKCAoIGl0ZW0gKSA9PiBpdGVtLmxhYmVsLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoIHNlYXJjaC50b0xvd2VyQ2FzZSgpICkgKVxyXG4gICAgICAgICAgOiBbXVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRTZWxlY3RlZEl0ZW1zKCk6IHZvaWQge1xyXG4gICAgaWYgKCB0aGlzLnVzZVNlYXJjaE9wdGlvbiApIHtcclxuICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtcyA9IFtdO1xyXG5cclxuICAgICAgaWYgKCB0aGlzLnZhbHVlICkge1xyXG4gICAgICAgIGlmICggdGhpcy52YWx1ZSBpbnN0YW5jZW9mIEFycmF5ICkge1xyXG4gICAgICAgICAgY29uc3Qgc2tpcFN0ZXBzID0gdGhpcy52YWx1ZS5pbmNsdWRlcyggdGhpcy5zZWxlY3RBbGxWYWx1ZSApO1xyXG5cclxuICAgICAgICAgIGlmICggIXNraXBTdGVwcyApIHtcclxuICAgICAgICAgICAgdGhpcy52YWx1ZS5mb3JFYWNoKCAoIHZhbHVlICkgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5zZWxlY3RlZEl0ZW1zPy5maW5kSW5kZXgoICggc2VsZWN0ZWRJdGVtICkgPT4gc2VsZWN0ZWRJdGVtLnZhbHVlID09PSB2YWx1ZSApO1xyXG5cclxuICAgICAgICAgICAgICBpZiAoIGluZGV4ICE9PSAtMSApIHtcclxuICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMucHVzaCggdGhpcy5zZWxlY3RlZEl0ZW1zWyBpbmRleCBdICk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tc2hhZG93XHJcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5pdGVtcz8uZmluZCggKCBpdGVtICkgPT4gaXRlbS52YWx1ZSA9PT0gdmFsdWUgKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoIGl0ZW0gKSB7XHJcbiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMucHVzaCggaXRlbSApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSApO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmZvckVhY2goICggc2VsZWN0ZWRJdGVtICkgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy52YWx1ZS5maW5kKCAoIHZhbHVlICkgPT4gc2VsZWN0ZWRJdGVtLnZhbHVlID09PSB2YWx1ZSApO1xyXG5cclxuICAgICAgICAgICAgICBpZiAoIGluZGV4ID09PSAtMSApIHtcclxuICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMuc3BsaWNlKCBpbmRleCwgMSApO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5maW5kSW5kZXgoICggc2VsZWN0ZWRJdGVtICkgPT4gc2VsZWN0ZWRJdGVtLnZhbHVlID09PSB0aGlzLnZhbHVlICk7XHJcblxyXG4gICAgICAgICAgaWYgKCBpbmRleCAhPT0gLTEgKSB7XHJcbiAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMucHVzaCggdGhpcy5zZWxlY3RlZEl0ZW1zWyBpbmRleCBdICk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXNoYWRvd1xyXG4gICAgICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5pdGVtcy5maW5kKCAoIGl0ZW0gKSA9PiBpdGVtLnZhbHVlID09PSB0aGlzLnZhbHVlICk7XHJcblxyXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWRlcHRoXHJcbiAgICAgICAgICAgIGlmICggaXRlbSApIHtcclxuICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zLnB1c2goIGl0ZW0gKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gWyAuLi5zZWxlY3RlZEl0ZW1zIF07XHJcbiAgICAgICAgdGhpcy5ub3RTZWxlY3RlZEl0ZW1zID0gdGhpcy5pdGVtcz8uZmlsdGVyKFxyXG4gICAgICAgICAgKCBpdGVtICkgPT4gdGhpcy5zZWxlY3RlZEl0ZW1zLmZpbmRJbmRleCggKCBzZWxlY3RlZEl0ZW0gKSA9PiBzZWxlY3RlZEl0ZW0udmFsdWUgPT09IGl0ZW0udmFsdWUgKSA9PT0gLTFcclxuICAgICAgICApO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubm90U2VsZWN0ZWRJdGVtcyA9IHRoaXMuaXRlbXM/LnNsaWNlKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGFwcC1lbGVtZW50LXdyYXBwZXIgW2RhdGFdPVwiZ2V0RGF0YSgpXCI+XHJcbiAgPG1hdC1mb3JtLWZpZWxkIFtuZ0NsYXNzXT1cInsgZGlzYWJsZWQ6IHVzZU9ubHlEaXNhYmxlZENsYXNzIH1cIj5cclxuICAgIDxtYXQtc2VsZWN0XHJcbiAgICAgIGNsYXNzPVwiZm9ybS1maWVsZF9fc2VsZWN0XCJcclxuICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXHJcbiAgICAgIChjbG9zZWQpPVwib25Ub3VjaCgpXCJcclxuICAgICAgW2lkXT1cIm5hbWVcIlxyXG4gICAgICBhcHBlYXJhbmNlPVwib3V0bGluZVwiXHJcbiAgICAgIFttdWx0aXBsZV09XCJtdWx0aXBsZVwiXHJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXHJcbiAgICAgIFtkaXNhYmxlUmlwcGxlXT1cInRydWVcIlxyXG4gICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uU2VsZWN0aW9uQ2hhbmdlZCgkZXZlbnQpXCJcclxuICAgICAgW21hdFRvb2x0aXBdPVwidHJpZ2dlclwiXHJcbiAgICAgIGFwcFRvb2x0aXBJZlRydW5jYXRlZFxyXG4gICAgICBbY2xhc3NOYW1lVHJ1bmNhdGVkVG9vbHRpcF09XCInbWF0LXNlbGVjdC12YWx1ZSdcIlxyXG4gICAgPlxyXG4gICAgICA8bWF0LXNlbGVjdC10cmlnZ2VyPlxyXG4gICAgICAgIDxzcGFuPnt7IHRyaWdnZXIgfX08L3NwYW4+XHJcbiAgICAgIDwvbWF0LXNlbGVjdC10cmlnZ2VyPlxyXG4gICAgICA8bWF0LW9wdGlvbiAqbmdJZj1cInVzZVNlYXJjaE9wdGlvblwiPlxyXG4gICAgICAgIDxuZ3gtbWF0LXNlbGVjdC1zZWFyY2hcclxuICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJpdGVtRmlsdGVyQ3RybFwiXHJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJMYWJlbF09XCJzZWFyY2hGaWVsZFBsYWNlaG9sZGVyXCJcclxuICAgICAgICAgIFtub0VudHJpZXNGb3VuZExhYmVsXT1cIm5vRW50cmllc0ZvdW5kTGFiZWxcIlxyXG4gICAgICAgID48L25neC1tYXQtc2VsZWN0LXNlYXJjaD5cclxuICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICA8bWF0LW9wdGlvbiAqbmdJZj1cInVzZU5vbmVPcHRpb25cIiAoY2xpY2spPVwidG9nZ2xlTm9uZSgpXCI+e3sgbm9uZUxhYmVsIH19PC9tYXQtb3B0aW9uPlxyXG4gICAgICA8bWF0LW9wdGlvblxyXG4gICAgICAgICNhbGxTZWxlY3RlZFxyXG4gICAgICAgICpuZ0lmPVwidXNlU2VsZWN0QWxsT3B0aW9uICYmIHNob3dGaWx0ZXJlZEFsbE9wdGlvblwiXHJcbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFsbFNlbGVjdGlvbigpXCJcclxuICAgICAgICBbdmFsdWVdPVwic2VsZWN0QWxsVmFsdWVcIlxyXG4gICAgICA+XHJcbiAgICAgICAge3thbGxMYWJlbCB9fVxyXG4gICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgIDxtYXQtb3B0aW9uXHJcbiAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmlsdGVyZWRJdGVtcyQgfCBhc3luY1wiXHJcbiAgICAgICAgW3ZhbHVlXT1cIml0ZW0udmFsdWVcIlxyXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVQZXJPbmUoKVwiXHJcbiAgICAgICAgW21hdFRvb2x0aXBdPVwiaXRlbS5sYWJlbFwiXHJcbiAgICAgICAgYXBwVG9vbHRpcElmVHJ1bmNhdGVkXHJcbiAgICAgICAgW2NsYXNzTmFtZVRydW5jYXRlZFRvb2x0aXBdPVwiJ21hdC1vcHRpb24tdGV4dCdcIlxyXG4gICAgICA+XHJcbiAgICAgICAge3sgaXRlbS5sYWJlbCB9fVxyXG4gICAgICA8L21hdC1vcHRpb24+XHJcbiAgICA8L21hdC1zZWxlY3Q+XHJcbiAgPC9tYXQtZm9ybS1maWVsZD5cclxuPC9hcHAtZWxlbWVudC13cmFwcGVyPlxyXG4iXX0=
|