@unifylib/ui-lib 1.2.18 → 1.2.20
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/components/base-form-canvas/base-form-canvas.component.mjs +7 -3
- package/esm2022/lib/components/multi-auto-complete/multi-auto-complete.component.mjs +3 -3
- package/fesm2022/iq-ui-lib.mjs +8 -4
- package/fesm2022/iq-ui-lib.mjs.map +1 -1
- package/lib/components/base-form-canvas/base-form-canvas.component.d.ts +1 -0
- package/package.json +1 -1
|
@@ -301,7 +301,7 @@ export class MultiAutoCompleteComponent {
|
|
|
301
301
|
return this.field.property;
|
|
302
302
|
}
|
|
303
303
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MultiAutoCompleteComponent, deps: [{ token: i1.BackendService }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
304
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MultiAutoCompleteComponent, isStandalone: true, selector: "app-multi-auto-complete", inputs: { field: "field", form: "form", defaultValue: "defaultValue", pathParam: "pathParam", readonly: "readonly", labelsSection: "labelsSection" }, outputs: { selectedValue: "selectedValue" }, viewQueries: [{ propertyName: "itemInput", first: true, predicate: ["itemInput"], descendants: true }, { propertyName: "matACTrigger", first: true, predicate: ["autocompleteTrigger"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"field\" class=\"main-multi-auto\">\n <div class=\"mat-field-wrapper\">\n <div class=\"label-and-asterisk-container\">\n <span *ngIf=\"!field.hideLabel\" class=\"custom-label\" id=\"label-{{ field.property }}\">\n {{ field.label! | translate }}\n </span>\n <span *ngIf=\"field.required && !field.hideLabel\" class=\"required-asterisk\"> * </span>\n <span *ngIf=\"!field.required && !field.hideLabel && !field.readonly\" class=\"optional-text\">\n {{ 'optional' | translate }}\n </span>\n </div>\n\n <div class=\"multi-select-control\">\n <mat-form-field class=\"full-width multi-autocomplete-field\" appearance=\"outline\">\n <mat-chip-listbox #chipList class=\"chip-listbox\" [selectable]=\"true\">\n <mat-chip\n *ngFor=\"let item of selectedItems\"\n class=\"multi-select-chip\"\n [removable]=\"true\"\n (removed)=\"remove(item)\">\n {{ itemNameByLag(item) }}\n <mat-icon *ngIf=\"!field.readonly\" matChipRemove>cancel</mat-icon>\n </mat-chip>\n <input\n class=\"chip-input app-input\"\n type=\"text\"\n [id]=\"getId()\"\n #itemInput\n [formControl]=\"multiControl\"\n [matAutocomplete]=\"auto\"\n matInput\n [placeholder]=\"showInputPlaceholder ? (getPlaceholderKey() | translate) : ''\"\n [readonly]=\"readonly\"\n [required]=\"isRequired\"\n (click)=\"onInputClick(autocompleteTrigger); $event.stopPropagation()\"\n (keydown)=\"onKeydown($event, autocompleteTrigger)\"\n [disabled]=\"field.readonly\"\n #autocompleteTrigger=\"matAutocompleteTrigger\"\n [attr.aria-labelledby]=\"'label-' + field.property\">\n </mat-chip-listbox>\n\n <mat-autocomplete\n #auto=\"matAutocomplete\"\n autoActiveFirstOption\n [displayWith]=\"displayFn\"\n (optionSelected)=\"selected($event.option.value)\">\n <ng-container *ngIf=\"!field.readonly\">\n <mat-option\n *ngFor=\"let item of lookupItems$ | async\"\n [value]=\"item\">\n {{ itemNameByLag(item) }}\n </mat-option>\n </ng-container>\n </mat-autocomplete>\n </mat-form-field>\n\n <button\n type=\"button\"\n class=\"multi-select-arrow-trigger\"\n [disabled]=\"field.readonly || readonly\"\n [attr.aria-label]=\"'BASE_TABLE.openLookupOptions' | translate\"\n [attr.id]=\"'multi-select-trigger-' + field.property\"\n (click)=\"onTriggerClick($event, autocompleteTrigger)\">\n <svg viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" focusable=\"false\" aria-hidden=\"true\">\n <path d=\"M7 10l5 5 5-5z\"></path>\n </svg>\n </button>\n </div>\n </div>\n</ng-container>\n", styles: [".main-multi-auto,.mat-field-wrapper{display:flex;flex-direction:column;width:100%}.label-and-asterisk-container{display:flex;align-items:center;gap:4px
|
|
304
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MultiAutoCompleteComponent, isStandalone: true, selector: "app-multi-auto-complete", inputs: { field: "field", form: "form", defaultValue: "defaultValue", pathParam: "pathParam", readonly: "readonly", labelsSection: "labelsSection" }, outputs: { selectedValue: "selectedValue" }, viewQueries: [{ propertyName: "itemInput", first: true, predicate: ["itemInput"], descendants: true }, { propertyName: "matACTrigger", first: true, predicate: ["autocompleteTrigger"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"field\" class=\"main-multi-auto\">\n <div class=\"mat-field-wrapper\">\n <div class=\"label-and-asterisk-container\">\n <span *ngIf=\"!field.hideLabel\" class=\"custom-label\" id=\"label-{{ field.property }}\">\n {{ field.label! | translate }}\n </span>\n <span *ngIf=\"field.required && !field.hideLabel\" class=\"required-asterisk\"> * </span>\n <span *ngIf=\"!field.required && !field.hideLabel && !field.readonly\" class=\"optional-text\">\n {{ 'optional' | translate }}\n </span>\n </div>\n\n <div class=\"multi-select-control\">\n <mat-form-field class=\"full-width multi-autocomplete-field\" appearance=\"outline\">\n <mat-chip-listbox #chipList class=\"chip-listbox\" [selectable]=\"true\">\n <mat-chip\n *ngFor=\"let item of selectedItems\"\n class=\"multi-select-chip\"\n [removable]=\"true\"\n (removed)=\"remove(item)\">\n {{ itemNameByLag(item) }}\n <mat-icon *ngIf=\"!field.readonly\" matChipRemove>cancel</mat-icon>\n </mat-chip>\n <input\n class=\"chip-input app-input\"\n type=\"text\"\n [id]=\"getId()\"\n #itemInput\n [formControl]=\"multiControl\"\n [matAutocomplete]=\"auto\"\n matInput\n [placeholder]=\"showInputPlaceholder ? (getPlaceholderKey() | translate) : ''\"\n [readonly]=\"readonly\"\n [required]=\"isRequired\"\n (click)=\"onInputClick(autocompleteTrigger); $event.stopPropagation()\"\n (keydown)=\"onKeydown($event, autocompleteTrigger)\"\n [disabled]=\"field.readonly\"\n #autocompleteTrigger=\"matAutocompleteTrigger\"\n [attr.aria-labelledby]=\"'label-' + field.property\">\n </mat-chip-listbox>\n\n <mat-autocomplete\n #auto=\"matAutocomplete\"\n autoActiveFirstOption\n [displayWith]=\"displayFn\"\n (optionSelected)=\"selected($event.option.value)\">\n <ng-container *ngIf=\"!field.readonly\">\n <mat-option\n *ngFor=\"let item of lookupItems$ | async\"\n [value]=\"item\">\n {{ itemNameByLag(item) }}\n </mat-option>\n </ng-container>\n </mat-autocomplete>\n </mat-form-field>\n\n <button\n type=\"button\"\n class=\"multi-select-arrow-trigger\"\n [disabled]=\"field.readonly || readonly\"\n [attr.aria-label]=\"'BASE_TABLE.openLookupOptions' | translate\"\n [attr.id]=\"'multi-select-trigger-' + field.property\"\n (click)=\"onTriggerClick($event, autocompleteTrigger)\">\n <svg viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" focusable=\"false\" aria-hidden=\"true\">\n <path d=\"M7 10l5 5 5-5z\"></path>\n </svg>\n </button>\n </div>\n </div>\n</ng-container>\n", styles: [".main-multi-auto,.mat-field-wrapper{display:flex;flex-direction:column;width:100%}.label-and-asterisk-container{display:flex;align-items:center;gap:4px}.custom-label{font-weight:500}.required-asterisk{color:red}.optional-text{color:#9b9b9b;font-size:11px;font-weight:400;line-height:1.4}.full-width{width:100%}.multi-select-control{position:relative;width:100%}.multi-select-arrow-trigger{position:absolute;top:0;right:4px;z-index:5;display:flex;align-items:center;justify-content:center;width:36px;height:44px;padding:0;margin:0;border:none;background:transparent;cursor:pointer;color:#0000008a}.multi-select-arrow-trigger:disabled{cursor:default;opacity:.38}.multi-select-arrow-trigger svg{width:24px;height:24px;fill:currentColor;pointer-events:none}:host ::ng-deep .multi-autocomplete-field{width:100%}:host ::ng-deep .multi-autocomplete-field .mat-mdc-form-field-error-wrapper,:host ::ng-deep .multi-autocomplete-field mat-error{display:none!important}:host ::ng-deep .multi-autocomplete-field .mat-mdc-text-field-wrapper{padding:0}:host ::ng-deep .multi-autocomplete-field .mat-mdc-form-field-flex{align-items:center;padding-right:36px}:host ::ng-deep .multi-autocomplete-field .mat-mdc-form-field-infix{min-height:44px!important;padding:12px 0 12px 12px!important;display:flex;align-items:center;flex:1 1 auto;min-width:0;width:100%}:host ::ng-deep .multi-autocomplete-field .chip-listbox{display:flex;flex:1 1 auto;flex-wrap:wrap;align-items:center;align-content:center;gap:4px;min-height:20px;min-width:0;width:100%;margin:0;padding:0;border:none;background:transparent}:host ::ng-deep .multi-autocomplete-field .multi-select-chip.mat-mdc-chip{height:24px;min-height:24px;margin:0;font-size:14px;font-weight:500;line-height:20px}:host ::ng-deep .multi-autocomplete-field .multi-select-chip .mat-mdc-chip-action-label{line-height:20px}:host ::ng-deep .multi-autocomplete-field .multi-select-chip .mat-icon{width:18px;height:18px;font-size:18px}:host ::ng-deep .multi-autocomplete-field .chip-input{flex:1 1 60px;min-width:60px;width:auto;height:20px!important;min-height:20px!important;line-height:20px!important;margin:0;padding:0;border:none;outline:none;background:transparent;font-size:14px;font-weight:500}:host ::ng-deep .multi-autocomplete-field .chip-listbox:has(.multi-select-chip) .chip-input{min-width:0;flex:0 1 40px}@media (max-width: 600px){.main-multi-auto,.mat-field-wrapper,.multi-autocomplete-field{width:100%}}\n"], dependencies: [{ kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["role", "id", "aria-label", "aria-description", "value", "color", "removable", "highlighted", "disableRipple", "disabled", "tabIndex"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i4.MatChipListbox, selector: "mat-chip-listbox", inputs: ["multiple", "aria-orientation", "selectable", "compareWith", "required", "hideSingleSelectionIndicator", "value"], outputs: ["change"] }, { kind: "directive", type: i4.MatChipRemove, selector: "[matChipRemove]" }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i5.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: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] }); }
|
|
305
305
|
}
|
|
306
306
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MultiAutoCompleteComponent, decorators: [{
|
|
307
307
|
type: Component,
|
|
@@ -321,7 +321,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
321
321
|
NgIf,
|
|
322
322
|
MatChipListbox,
|
|
323
323
|
TranslateModule,
|
|
324
|
-
], template: "<ng-container *ngIf=\"field\" class=\"main-multi-auto\">\n <div class=\"mat-field-wrapper\">\n <div class=\"label-and-asterisk-container\">\n <span *ngIf=\"!field.hideLabel\" class=\"custom-label\" id=\"label-{{ field.property }}\">\n {{ field.label! | translate }}\n </span>\n <span *ngIf=\"field.required && !field.hideLabel\" class=\"required-asterisk\"> * </span>\n <span *ngIf=\"!field.required && !field.hideLabel && !field.readonly\" class=\"optional-text\">\n {{ 'optional' | translate }}\n </span>\n </div>\n\n <div class=\"multi-select-control\">\n <mat-form-field class=\"full-width multi-autocomplete-field\" appearance=\"outline\">\n <mat-chip-listbox #chipList class=\"chip-listbox\" [selectable]=\"true\">\n <mat-chip\n *ngFor=\"let item of selectedItems\"\n class=\"multi-select-chip\"\n [removable]=\"true\"\n (removed)=\"remove(item)\">\n {{ itemNameByLag(item) }}\n <mat-icon *ngIf=\"!field.readonly\" matChipRemove>cancel</mat-icon>\n </mat-chip>\n <input\n class=\"chip-input app-input\"\n type=\"text\"\n [id]=\"getId()\"\n #itemInput\n [formControl]=\"multiControl\"\n [matAutocomplete]=\"auto\"\n matInput\n [placeholder]=\"showInputPlaceholder ? (getPlaceholderKey() | translate) : ''\"\n [readonly]=\"readonly\"\n [required]=\"isRequired\"\n (click)=\"onInputClick(autocompleteTrigger); $event.stopPropagation()\"\n (keydown)=\"onKeydown($event, autocompleteTrigger)\"\n [disabled]=\"field.readonly\"\n #autocompleteTrigger=\"matAutocompleteTrigger\"\n [attr.aria-labelledby]=\"'label-' + field.property\">\n </mat-chip-listbox>\n\n <mat-autocomplete\n #auto=\"matAutocomplete\"\n autoActiveFirstOption\n [displayWith]=\"displayFn\"\n (optionSelected)=\"selected($event.option.value)\">\n <ng-container *ngIf=\"!field.readonly\">\n <mat-option\n *ngFor=\"let item of lookupItems$ | async\"\n [value]=\"item\">\n {{ itemNameByLag(item) }}\n </mat-option>\n </ng-container>\n </mat-autocomplete>\n </mat-form-field>\n\n <button\n type=\"button\"\n class=\"multi-select-arrow-trigger\"\n [disabled]=\"field.readonly || readonly\"\n [attr.aria-label]=\"'BASE_TABLE.openLookupOptions' | translate\"\n [attr.id]=\"'multi-select-trigger-' + field.property\"\n (click)=\"onTriggerClick($event, autocompleteTrigger)\">\n <svg viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" focusable=\"false\" aria-hidden=\"true\">\n <path d=\"M7 10l5 5 5-5z\"></path>\n </svg>\n </button>\n </div>\n </div>\n</ng-container>\n", styles: [".main-multi-auto,.mat-field-wrapper{display:flex;flex-direction:column;width:100%}.label-and-asterisk-container{display:flex;align-items:center;gap:4px
|
|
324
|
+
], template: "<ng-container *ngIf=\"field\" class=\"main-multi-auto\">\n <div class=\"mat-field-wrapper\">\n <div class=\"label-and-asterisk-container\">\n <span *ngIf=\"!field.hideLabel\" class=\"custom-label\" id=\"label-{{ field.property }}\">\n {{ field.label! | translate }}\n </span>\n <span *ngIf=\"field.required && !field.hideLabel\" class=\"required-asterisk\"> * </span>\n <span *ngIf=\"!field.required && !field.hideLabel && !field.readonly\" class=\"optional-text\">\n {{ 'optional' | translate }}\n </span>\n </div>\n\n <div class=\"multi-select-control\">\n <mat-form-field class=\"full-width multi-autocomplete-field\" appearance=\"outline\">\n <mat-chip-listbox #chipList class=\"chip-listbox\" [selectable]=\"true\">\n <mat-chip\n *ngFor=\"let item of selectedItems\"\n class=\"multi-select-chip\"\n [removable]=\"true\"\n (removed)=\"remove(item)\">\n {{ itemNameByLag(item) }}\n <mat-icon *ngIf=\"!field.readonly\" matChipRemove>cancel</mat-icon>\n </mat-chip>\n <input\n class=\"chip-input app-input\"\n type=\"text\"\n [id]=\"getId()\"\n #itemInput\n [formControl]=\"multiControl\"\n [matAutocomplete]=\"auto\"\n matInput\n [placeholder]=\"showInputPlaceholder ? (getPlaceholderKey() | translate) : ''\"\n [readonly]=\"readonly\"\n [required]=\"isRequired\"\n (click)=\"onInputClick(autocompleteTrigger); $event.stopPropagation()\"\n (keydown)=\"onKeydown($event, autocompleteTrigger)\"\n [disabled]=\"field.readonly\"\n #autocompleteTrigger=\"matAutocompleteTrigger\"\n [attr.aria-labelledby]=\"'label-' + field.property\">\n </mat-chip-listbox>\n\n <mat-autocomplete\n #auto=\"matAutocomplete\"\n autoActiveFirstOption\n [displayWith]=\"displayFn\"\n (optionSelected)=\"selected($event.option.value)\">\n <ng-container *ngIf=\"!field.readonly\">\n <mat-option\n *ngFor=\"let item of lookupItems$ | async\"\n [value]=\"item\">\n {{ itemNameByLag(item) }}\n </mat-option>\n </ng-container>\n </mat-autocomplete>\n </mat-form-field>\n\n <button\n type=\"button\"\n class=\"multi-select-arrow-trigger\"\n [disabled]=\"field.readonly || readonly\"\n [attr.aria-label]=\"'BASE_TABLE.openLookupOptions' | translate\"\n [attr.id]=\"'multi-select-trigger-' + field.property\"\n (click)=\"onTriggerClick($event, autocompleteTrigger)\">\n <svg viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" focusable=\"false\" aria-hidden=\"true\">\n <path d=\"M7 10l5 5 5-5z\"></path>\n </svg>\n </button>\n </div>\n </div>\n</ng-container>\n", styles: [".main-multi-auto,.mat-field-wrapper{display:flex;flex-direction:column;width:100%}.label-and-asterisk-container{display:flex;align-items:center;gap:4px}.custom-label{font-weight:500}.required-asterisk{color:red}.optional-text{color:#9b9b9b;font-size:11px;font-weight:400;line-height:1.4}.full-width{width:100%}.multi-select-control{position:relative;width:100%}.multi-select-arrow-trigger{position:absolute;top:0;right:4px;z-index:5;display:flex;align-items:center;justify-content:center;width:36px;height:44px;padding:0;margin:0;border:none;background:transparent;cursor:pointer;color:#0000008a}.multi-select-arrow-trigger:disabled{cursor:default;opacity:.38}.multi-select-arrow-trigger svg{width:24px;height:24px;fill:currentColor;pointer-events:none}:host ::ng-deep .multi-autocomplete-field{width:100%}:host ::ng-deep .multi-autocomplete-field .mat-mdc-form-field-error-wrapper,:host ::ng-deep .multi-autocomplete-field mat-error{display:none!important}:host ::ng-deep .multi-autocomplete-field .mat-mdc-text-field-wrapper{padding:0}:host ::ng-deep .multi-autocomplete-field .mat-mdc-form-field-flex{align-items:center;padding-right:36px}:host ::ng-deep .multi-autocomplete-field .mat-mdc-form-field-infix{min-height:44px!important;padding:12px 0 12px 12px!important;display:flex;align-items:center;flex:1 1 auto;min-width:0;width:100%}:host ::ng-deep .multi-autocomplete-field .chip-listbox{display:flex;flex:1 1 auto;flex-wrap:wrap;align-items:center;align-content:center;gap:4px;min-height:20px;min-width:0;width:100%;margin:0;padding:0;border:none;background:transparent}:host ::ng-deep .multi-autocomplete-field .multi-select-chip.mat-mdc-chip{height:24px;min-height:24px;margin:0;font-size:14px;font-weight:500;line-height:20px}:host ::ng-deep .multi-autocomplete-field .multi-select-chip .mat-mdc-chip-action-label{line-height:20px}:host ::ng-deep .multi-autocomplete-field .multi-select-chip .mat-icon{width:18px;height:18px;font-size:18px}:host ::ng-deep .multi-autocomplete-field .chip-input{flex:1 1 60px;min-width:60px;width:auto;height:20px!important;min-height:20px!important;line-height:20px!important;margin:0;padding:0;border:none;outline:none;background:transparent;font-size:14px;font-weight:500}:host ::ng-deep .multi-autocomplete-field .chip-listbox:has(.multi-select-chip) .chip-input{min-width:0;flex:0 1 40px}@media (max-width: 600px){.main-multi-auto,.mat-field-wrapper,.multi-autocomplete-field{width:100%}}\n"] }]
|
|
325
325
|
}], ctorParameters: () => [{ type: i1.BackendService }, { type: i2.TranslateService }], propDecorators: { itemInput: [{
|
|
326
326
|
type: ViewChild,
|
|
327
327
|
args: ['itemInput']
|
|
@@ -343,4 +343,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
343
343
|
}], selectedValue: [{
|
|
344
344
|
type: Output
|
|
345
345
|
}] } });
|
|
346
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktYXV0by1jb21wbGV0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi9jb21wb25lbnRzL211bHRpLWF1dG8tY29tcGxldGUvbXVsdGktYXV0by1jb21wbGV0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi9jb21wb25lbnRzL211bHRpLWF1dG8tY29tcGxldGUvbXVsdGktYXV0by1jb21wbGV0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFpQixTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDM0csT0FBTyxFQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUN0RCxPQUFPLEVBQUMsZUFBZSxFQUFFLHNCQUFzQixFQUFFLFNBQVMsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xHLE9BQU8sRUFBYSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFcEMsT0FBTyxFQUFDLFdBQVcsRUFBYSxtQkFBbUIsRUFBRSxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUl2RixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDMUQsT0FBTyxFQUFDLE9BQU8sRUFBRSxjQUFjLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRSxPQUFPLEVBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDL0MsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FB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QUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO0lBQzdCLENBQUM7K0dBeFZVLDBCQUEwQjttR0FBMUIsMEJBQTBCLHlmQzlDdkMseTVGQXNFQSxtOUVEM0NJLFlBQVksNExBQ1osT0FBTyw2U0FDUCxhQUFhLG1MQUNiLGNBQWMsMFVBQ2QsT0FBTyxrSEFFUCxtQkFBbUIsdXlCQUNuQixzQkFBc0IscVFBQ3RCLFFBQVEsaVVBQ1IsZUFBZSx5V0FDZixTQUFTLGdKQUNULFNBQVMsOENBQ1QsSUFBSSw0RkFFSixlQUFlOzs0RkFLTiwwQkFBMEI7a0JBdkJ0QyxTQUFTOytCQUNFLHlCQUF5QixjQUN2QixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixPQUFPO3dCQUNQLGFBQWE7d0JBQ2IsY0FBYzt3QkFDZCxPQUFPO3dCQUNQLE9BQU87d0JBQ1AsbUJBQW1CO3dCQUNuQixzQkFBc0I7d0JBQ3RCLFFBQVE7d0JBQ1IsZUFBZTt3QkFDZixTQUFTO3dCQUNULFNBQVM7d0JBQ1QsSUFBSTt3QkFDSixjQUFjO3dCQUNkLGVBQWU7cUJBQ2hCO2tIQU11QixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBQ1ksWUFBWTtzQkFBN0MsU0FBUzt1QkFBQyxxQkFBcUI7Z0JBV2hDLEtBQUs7c0JBREosS0FBSztnQkFJTixJQUFJO3NCQURILEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSztnQkFJTixRQUFRO3NCQURQLEtBQUs7Z0JBSU4sYUFBYTtzQkFEWixLQUFLO2dCQUlOLGFBQWE7c0JBRFosTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0FMTF9JVEVNLCBMb29rdXBJdGVtfSBmcm9tIFwiLi4vLi4vYmFzZS1tb2RlbFwiO1xuaW1wb3J0IHtNYXRBdXRvY29tcGxldGUsIE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIsIE1hdE9wdGlvbn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZVwiO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBvZn0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7RmllbGRJbmZvfSBmcm9tIFwiLi4vLi4vYmFzZS1tb2RlbFwiO1xuaW1wb3J0IHtGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0b3JzfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7QmFja2VuZFNlcnZpY2V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlc1wiO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xuaW1wb3J0IHtHZXRJdGVtc0xpc3R9IGZyb20gXCIuLi8uLi9iYXNlLW1vZGVsL2dldC1pdGVtcy1saXN0XCI7XG5pbXBvcnQge01hdEZvcm1GaWVsZH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGRcIjtcbmltcG9ydCB7TWF0Q2hpcCwgTWF0Q2hpcExpc3Rib3h9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9jaGlwc1wiO1xuaW1wb3J0IHtBc3luY1BpcGUsIE5nRm9yT2YsIE5nSWZ9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7TWF0SWNvbn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2ljb25cIjtcbmltcG9ydCB7TWF0SW5wdXR9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pbnB1dFwiO1xuaW1wb3J0IHtidWlsZEl0ZW1zTGlzdH0gZnJvbSBcIi4uLy4uL3V0aWxzL2Jhc2UtdXRpbHNcIjtcbmltcG9ydCB7RmlsdGVyUmVxdWVzdH0gZnJvbSBcIi4uLy4uL2Jhc2UtbW9kZWxcIjtcbmltcG9ydCB7RmlsdGVyfSBmcm9tIFwiLi4vLi4vYmFzZS1tb2RlbFwiO1xuaW1wb3J0IHtSZXF1aXJlTWF0Y2h9IGZyb20gXCIuLi8uLi92YWxpZGF0b3JzXCI7XG5pbXBvcnQgeyBNYXRDaGlwc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoaXBzJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1tdWx0aS1hdXRvLWNvbXBsZXRlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE1hdEZvcm1GaWVsZCxcbiAgICBNYXRDaGlwLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0Q2hpcHNNb2R1bGUsXG4gICAgTmdGb3JPZixcbiAgICBNYXRJY29uLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcixcbiAgICBNYXRJbnB1dCxcbiAgICBNYXRBdXRvY29tcGxldGUsXG4gICAgTWF0T3B0aW9uLFxuICAgIEFzeW5jUGlwZSxcbiAgICBOZ0lmLFxuICAgIE1hdENoaXBMaXN0Ym94LFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL211bHRpLWF1dG8tY29tcGxldGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vbXVsdGktYXV0by1jb21wbGV0ZS5jb21wb25lbnQuY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBNdWx0aUF1dG9Db21wbGV0ZUNvbXBvbmVudCB7XG4vLyBAdHMtaWdub3JlXG4gIEBWaWV3Q2hpbGQoJ2l0ZW1JbnB1dCcpIGl0ZW1JbnB1dDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgnYXV0b2NvbXBsZXRlVHJpZ2dlcicpIG1hdEFDVHJpZ2dlcjogTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcjtcblxuICBsb29rdXBJdGVtcyQ6IE9ic2VydmFibGU8TG9va3VwSXRlbVtdPiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBsb29rdXBJdGVtczogTG9va3VwSXRlbVtdID0gW107XG5cbiAgc2VsZWN0ZWRJdGVtczogTG9va3VwSXRlbVtdID0gW107XG4gIGNhc2NhZGVkSWR6OiBudW1iZXJbXSA9IFtdO1xuICBpc1JlcXVpcmVkOiBib29sZWFuPSBmYWxzZTtcbiAgcHJpdmF0ZSB0aW1lcjogYW55O1xuXG4gIEBJbnB1dCgpLy8gQHRzLWlnbm9yZVxuICBmaWVsZDogRmllbGRJbmZvO1xuICAvL1xuICBASW5wdXQoKS8vIEB0cy1pZ25vcmVcbiAgZm9ybTogRm9ybUdyb3VwO1xuXG4gIEBJbnB1dCgpLy8gQHRzLWlnbm9yZVxuICBkZWZhdWx0VmFsdWU6IGFueTtcblxuICBASW5wdXQoKVxuICBwYXRoUGFyYW06IGFueTtcblxuICBASW5wdXQoKVxuICByZWFkb25seSA6IGJvb2xlYW49ZmFsc2U7XG5cbiAgQElucHV0KClcbiAgbGFiZWxzU2VjdGlvbj86IHN0cmluZztcblxuICBAT3V0cHV0KClcbiAgc2VsZWN0ZWRWYWx1ZTogRXZlbnRFbWl0dGVyPExvb2t1cEl0ZW1bXT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcXVlc3Rpb24gPSAnV291bGQgeW91IGxpa2UgdG8gYWRkID9cIic7XG5cbiAgbXVsdGlDb250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBiYWNrZW5kU2VydmljZTogQmFja2VuZFNlcnZpY2UsIHByaXZhdGUgIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UpIHtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubXVsdGlDb250cm9sID0gbmV3IEZvcm1Db250cm9sKG51bGwpO1xuICAgIHRoaXMudXBkYXRlRmllbGRBdHRyaWJ1dGVzKCk7XG5cbiAgICBjb25zdCBpbml0aWFsVmFsdWUgPSB0aGlzLmZvcm0/LmNvbnRyb2xzW3RoaXMuZmllbGQ/LnByb3BlcnR5XT8udmFsdWU7XG4gICAgaWYgKGluaXRpYWxWYWx1ZSkge1xuICAgICAgdGhpcy5wYXRjaExvb2t1cFZhbHVlKGluaXRpYWxWYWx1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy5tdWx0aUNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2ID0+IHtcbiAgICAgIGlmICh0eXBlb2YgdiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZXIpO1xuICAgICAgICB0aGlzLnRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5maWx0ZXJMb29rdXBJdGVtcyh2LCBudWxsKTtcbiAgICAgICAgfSwgNzAwKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuZ2V0TG9va3VwRGF0YSgpO1xuICAgIGlmICh0aGlzLmZpZWxkLmNhc2NhZGVkQnkpIHtcbiAgICAgIHRoaXMuZm9ybT8uZ2V0KHRoaXMuZmllbGQuY2FzY2FkZWRCeSk/LnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodiA9PiB7XG4gICAgICAgIHRoaXMucmVtb3ZlQ2hpbGRJdGVtc0lmQ2FzY2FkZWRCeVJlbW92ZWQodik7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUZpZWxkQXR0cmlidXRlcygpIHtcbiAgICBpZiAodGhpcy5maWVsZC5yZWFkb25seSkge1xuICAgICAgdGhpcy5tdWx0aUNvbnRyb2wuZGlzYWJsZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm11bHRpQ29udHJvbC5lbmFibGUoKTtcbiAgICB9XG4gICAgdGhpcy5zeW5jRm9ybUNvbnRyb2xTdGF0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzeW5jRm9ybUNvbnRyb2xTdGF0ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtPy5nZXQodGhpcy5maWVsZD8ucHJvcGVydHkpO1xuICAgIGlmICghY29udHJvbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmZpZWxkLnJlYWRvbmx5KSB7XG4gICAgICBjb250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5maWVsZC5yZXF1aXJlZCkge1xuICAgICAgY29udHJvbC5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRyb2wuY2xlYXJWYWxpZGF0b3JzKCk7XG4gICAgfVxuXG4gICAgY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB0aGlzLnVwZGF0ZUlucHV0VmFsaWRhdG9ycygpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVJbnB1dFZhbGlkYXRvcnMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZmllbGQucmVhZG9ubHkpIHtcbiAgICAgIHRoaXMubXVsdGlDb250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xuICAgICAgdGhpcy5pc1JlcXVpcmVkID0gZmFsc2U7XG4gICAgICB0aGlzLm11bHRpQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB2YWxpZGF0b3JzID0gW107XG4gICAgaWYgKCF0aGlzLmZpZWxkLmFjY2VwdE5ld0l0ZW0pIHtcbiAgICAgIHZhbGlkYXRvcnMucHVzaChSZXF1aXJlTWF0Y2gpO1xuICAgIH1cblxuICAgIGNvbnN0IGhhc1NlbGVjdGVkSXRlbXMgPSAodGhpcy5zZWxlY3RlZEl0ZW1zPy5sZW5ndGggPz8gMCkgPiAwO1xuICAgIGlmICh0aGlzLmZpZWxkLnJlcXVpcmVkICYmICFoYXNTZWxlY3RlZEl0ZW1zKSB7XG4gICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgfVxuXG4gICAgdGhpcy5tdWx0aUNvbnRyb2wuc2V0VmFsaWRhdG9ycyh2YWxpZGF0b3JzKTtcbiAgICB0aGlzLmlzUmVxdWlyZWQgPSB0aGlzLmZpZWxkLnJlcXVpcmVkICYmICFoYXNTZWxlY3RlZEl0ZW1zO1xuICAgIHRoaXMubXVsdGlDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVDaGlsZEl0ZW1zSWZDYXNjYWRlZEJ5UmVtb3ZlZCh2KSB7XG4gICAgdGhpcy5jYXNjYWRlZElkeiA9IFtdO1xuICAgIHYuZm9yRWFjaChhID0+IHtcbiAgICAgIHRoaXMuY2FzY2FkZWRJZHoucHVzaChhLmlkKTtcbiAgICB9KTtcbiAgICBsZXQgdG9EZWxldGVJZHogPSBbXTtcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXM/LmZvckVhY2goeCA9PiB7XG4gICAgICBjb25zdCBkZWwgPSB0aGlzLmNhc2NhZGVkSWR6LmZpbmRJbmRleCh5ID0+IHkgPT09IHhbdGhpcy5maWVsZC5jYXNjYWRlZEJ5XT8uaWQpO1xuICAgICAgaWYgKGRlbCA8IDApIHtcbiAgICAgICAgdG9EZWxldGVJZHoucHVzaCh4WydpZCddKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICh0b0RlbGV0ZUlkeikge1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zZWxlY3RlZEl0ZW1zLmZpbHRlcihzID0+ICF0b0RlbGV0ZUlkei5pbmNsdWRlcyhzLmlkKSk7XG4gICAgICB0aGlzLmZvcm0uZ2V0KHRoaXMuZmllbGQucHJvcGVydHkpLnBhdGNoVmFsdWUodGhpcy5zZWxlY3RlZEl0ZW1zLCB7ZW1pdEV2ZW50OiB0cnVlfSk7XG4gICAgICB0aGlzLnN5bmNGb3JtQ29udHJvbFN0YXRlKCk7XG4gICAgICB0aGlzLnB1Ymxpc2hBdmFpbGFibGVMb29rdXBJdGVtcygpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKHtkZWZhdWx0VmFsdWUsIGZpZWxkfTogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIHRoaXMucGF0Y2hMb29rdXBWYWx1ZShkZWZhdWx0VmFsdWU/LmN1cnJlbnRWYWx1ZSk7XG4gICAgaWYgKGZpZWxkPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMuZmllbGQgPSBmaWVsZC5jdXJyZW50VmFsdWU7XG4gICAgICB0aGlzLnVwZGF0ZUZpZWxkQXR0cmlidXRlcygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0TG9va3VwRGF0YSgpIHtcbiAgICBjb25zdCBsaXN0SXRlbXM6IEdldEl0ZW1zTGlzdCA9IGJ1aWxkSXRlbXNMaXN0KCcnLCB0aGlzLmZpZWxkLmxvb2t1cEFwaVBhdGgpO1xuXG4gICAgY29uc3QgZmlsdGVyUmVxdWVzdDogRmlsdGVyUmVxdWVzdCA9IG5ldyBGaWx0ZXJSZXF1ZXN0KCk7XG4gICAgZmlsdGVyUmVxdWVzdC5maWx0ZXJzID0gW107XG4gICAgdGhpcy5jYXNjYWRlZElkeiA9IFtdO1xuICAgIGlmICh0aGlzLmZpZWxkLmNhc2NhZGVkQnkpIHtcbiAgICAgIHRoaXMuZm9ybS5nZXQodGhpcy5maWVsZC5jYXNjYWRlZEJ5KT8udmFsdWU/LmZvckVhY2goYSA9PiB7XG4gICAgICAgIHRoaXMuY2FzY2FkZWRJZHoucHVzaChhLmlkKTtcbiAgICAgIH0pXG4gICAgfVxuICAgIGlmICh0aGlzLmZpZWxkLmNhc2NhZGVkQnkgJiYgdGhpcy5jYXNjYWRlZElkej8ubGVuZ3RoID4gMCkge1xuICAgICAgZmlsdGVyUmVxdWVzdC5maWx0ZXJzLnB1c2gobmV3IEZpbHRlcih7XG4gICAgICAgIGtleTogJ2lkJywgZmllbGROYW1lOiB0aGlzLmZpZWxkLmNhc2NhZGVkQnksIGxhYmVsOiAnJyxcbiAgICAgICAgZmlsdGVyVHlwZTogJ0ZJTEVEX0ZJTFRFUicsIG9wZXJhdG9yOiAnSU4nLFxuICAgICAgICB2YWx1ZU9iamVjdDogdGhpcy5jYXNjYWRlZElkelxuICAgICAgfSkpO1xuICAgIH1cblxuICAgIGZpbHRlclJlcXVlc3QuY29sdW1ucyA9IFsnaWQnLCdjb2RlJywnZW5nbGlzaE5hbWUnLCdhcmFiaWNOYW1lJ107XG4gICAgaWYgKCF0aGlzLmZpZWxkLnJlYWRvbmx5KSB7XG4gICAgdGhpcy5iYWNrZW5kU2VydmljZS5nZXRMb29rdXBJdGVtc0J5TXVsdGlGaWx0ZXIobGlzdEl0ZW1zLCBmaWx0ZXJSZXF1ZXN0KS5zdWJzY3JpYmUoKHJlc3AgPT4ge1xuICAgICAgaWYgKHJlc3AudmFsaWQpIHtcbiAgICAgICAgdGhpcy5sb29rdXBJdGVtcyA9IHRoaXMuZmllbGQuaW5jbHVkZUFsbE9wdGlvbiA/IFtBTExfSVRFTV0uY29uY2F0KHJlc3AuYm9keSkgOiByZXNwLmJvZHk7XG4gICAgICAgIGlmICghdGhpcy5mb3JtLmdldCgnaWQnKT8udmFsdWUpIHtcbiAgICAgICAgICB0aGlzLnBhdGNoTG9va3VwVmFsdWUodGhpcy5sb29rdXBJdGVtcz8uZmluZChsID0+IGwuZGVmYXVsdFZhbHVlKSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGVkSXRlbXM/Lmxlbmd0aFxuICAgICAgICAgID8gdGhpcy5zZWxlY3RlZEl0ZW1zXG4gICAgICAgICAgOiB0aGlzLmZvcm0/LmdldCh0aGlzLmZpZWxkLnByb3BlcnR5KT8udmFsdWU7XG4gICAgICAgIHRoaXMucGF0Y2hMb29rdXBWYWx1ZShzZWxlY3RlZCk7XG5cbiAgICAgIH1cblxuICAgIH0pKTtcbiAgICB9XG4gICAgZWxzZXtcbiAgICAgIHRoaXMucGF0Y2hMb29rdXBWYWx1ZSh0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoID8gdGhpcy5zZWxlY3RlZEl0ZW1zIDogdGhpcy5mb3JtPy5nZXQodGhpcy5maWVsZC5wcm9wZXJ0eSk/LnZhbHVlKTtcbiAgICB9XG4gIH1cblxuXG4gIHNlbGVjdGVkKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodmFsdWUuaWQgIT09IC0xICYmIHRoaXMuc2VsZWN0ZWRJdGVtcy5maW5kSW5kZXgoaSA9PiBpLmlkID09IHZhbHVlLmlkKSA9PT0gLTEpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcz8ucHVzaCh2YWx1ZSk7XG4gICAgICB0aGlzLml0ZW1JbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgICB0aGlzLmZvcm0uZ2V0KHRoaXMuZmllbGQucHJvcGVydHkpPy5zZXRWYWx1ZSh0aGlzLnNlbGVjdGVkSXRlbXMpO1xuICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlLmVtaXQodGhpcy5zZWxlY3RlZEl0ZW1zKTtcbiAgICAgIHRoaXMubXVsdGlDb250cm9sLnNldFZhbHVlKG51bGwsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgIHRoaXMuc3luY0Zvcm1Db250cm9sU3RhdGUoKTtcbiAgICAgIHRoaXMucHVibGlzaEF2YWlsYWJsZUxvb2t1cEl0ZW1zKCk7XG4gICAgfVxuICB9XG5cbiAgZGlzcGxheUZuKHNlbGVjdGVkOiBhbnkpOiBzdHJpbmcge1xuICAgIHJldHVybiBzZWxlY3RlZCA/IHNlbGVjdGVkLmVuZ2xpc2hOYW1lIDogdW5kZWZpbmVkO1xuXG4gIH1cbiAgaXNTZWxlY3RlZChpdGVtOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEl0ZW1zPy5zb21lKChzZWxlY3RlZDogYW55KSA9PiBzZWxlY3RlZD8uY29kZSA9PSBpdGVtPy5jb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgYXZhaWxhYmxlTG9va3VwSXRlbXMoaXRlbXM6IExvb2t1cEl0ZW1bXSk6IExvb2t1cEl0ZW1bXSB7XG4gICAgcmV0dXJuIChpdGVtcyA/PyBbXSkuZmlsdGVyKGl0ZW0gPT4gIXRoaXMuaXNTZWxlY3RlZChpdGVtKSk7XG4gIH1cblxuICBwcml2YXRlIHB1Ymxpc2hBdmFpbGFibGVMb29rdXBJdGVtcygpOiB2b2lkIHtcbiAgICB0aGlzLmxvb2t1cEl0ZW1zJCA9IG9mKHRoaXMuYXZhaWxhYmxlTG9va3VwSXRlbXModGhpcy5sb29rdXBJdGVtcykpO1xuICB9XG5cbiAgX2FsbG93U2VsZWN0aW9uKG9wdGlvbjogTG9va3VwSXRlbSk6IHsgW2NsYXNzTmFtZTogc3RyaW5nXTogYm9vbGVhbiB9IHtcbiAgICByZXR1cm4ge1xuICAgICAgJ3ByZXZlbnQtc2VsZWN0aW9uJzogb3B0aW9uLmlkID09PSAtMSxcbiAgICB9XG4gIH1cblxuICBpdGVtTmFtZUJ5TGFnKGl0ZW06IGFueSk6IHN0cmluZyB7XG4gICAgLy8gcmV0dXJuIGl0ZW0uYXJhYmljTmFtZTtcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldERlZmF1bHRMYW5nKCkgPT09ICdlbicgPyBpdGVtLmVuZ2xpc2hOYW1lIDogaXRlbS5hcmFiaWNOYW1lXG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IF9jb2x1bW5zID0gWydpZCcsJ2NvZGUnLCdlbmdsaXNoTmFtZScsJ2FyYWJpY05hbWUnXTtcblxuICBmaWx0ZXJMb29rdXBJdGVtcyhuYW1lOiBhbnksIHRyaWdnZXI6IE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIpIHtcbiAgICBpZiAodHJpZ2dlcikge1xuICAgICAgdHJpZ2dlci5vcGVuUGFuZWwoKTtcbiAgICB9XG4gICAgaWYgKG5hbWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgbmFtZSA9ICcnO1xuICAgIH1cblxuICAgIGNvbnN0IGxpc3RJdGVtczogR2V0SXRlbXNMaXN0ID0gYnVpbGRJdGVtc0xpc3QobmFtZSwgdGhpcy5maWVsZC5sb29rdXBBcGlQYXRoKTtcblxuICAgIGNvbnN0IGZpbHRlclJlcXVlc3Q6IEZpbHRlclJlcXVlc3QgPSBuZXcgRmlsdGVyUmVxdWVzdCgpO1xuICAgIGZpbHRlclJlcXVlc3QuZmlsdGVycyA9IHRoaXMuZmllbGQubG9va3VwRmlsdGVyTGlzdCB8fCBbXTtcbiAgICBmaWx0ZXJSZXF1ZXN0LnNlYXJjaFN0ciA9IG5hbWU7XG4gICAgdGhpcy5jYXNjYWRlZElkeiA9IFtdO1xuICAgIGlmICh0aGlzLmZpZWxkLmNhc2NhZGVkQnkpIHtcbiAgICAgIHRoaXMuZm9ybS5nZXQodGhpcy5maWVsZC5jYXNjYWRlZEJ5KT8udmFsdWU/LmZvckVhY2goYSA9PiB7XG4gICAgICAgIHRoaXMuY2FzY2FkZWRJZHoucHVzaChhLmlkKTtcbiAgICAgIH0pXG4gICAgfVxuICAgIGlmICh0aGlzLmZpZWxkLmNhc2NhZGVkQnkgJiYgdGhpcy5jYXNjYWRlZElkej8ubGVuZ3RoID4gMCkge1xuICAgICAgZmlsdGVyUmVxdWVzdC5maWx0ZXJzLnB1c2gobmV3IEZpbHRlcih7XG4gICAgICAgIGtleTogJ2lkJyxqb2luT2JqZWN0TmFtZTogdGhpcy5maWVsZC5jYXNjYWRlZEJ5LCBmaWVsZE5hbWU6IHRoaXMuZmllbGQuY2FzY2FkZWRCeSwgbGFiZWw6ICcnLFxuICAgICAgICBmaWx0ZXJUeXBlOiAnRklMRURfRklMVEVSJywgb3BlcmF0b3I6ICdJTicsXG4gICAgICAgIHZhbHVlT2JqZWN0OiB0aGlzLmNhc2NhZGVkSWR6XG4gICAgICB9KSk7XG4gICAgfVxuXG4gICAgZmlsdGVyUmVxdWVzdC5jb2x1bW5zID0gWy4uLnRoaXMuX2NvbHVtbnMsIC4uLih0aGlzLmZpZWxkLmV4dHJhTG9va3Vwc0NvbHVtbnMgPz8gW10pXTtcblxuICAgIHRoaXMuYmFja2VuZFNlcnZpY2UuZ2V0TG9va3VwSXRlbXNCeU11bHRpRmlsdGVyKGxpc3RJdGVtcywgZmlsdGVyUmVxdWVzdCkuc3Vic2NyaWJlKHJlc3AgPT4ge1xuICAgICAgbGV0IGl0ZW1zOiBMb29rdXBJdGVtW10gPSBbXTtcbiAgICAgIGlmIChyZXNwLnZhbGlkKSB7XG4gICAgICAgIHRoaXMubG9va3VwSXRlbXMgPSByZXNwLmJvZHkgPz8gW107XG4gICAgICAgIGl0ZW1zID0gdGhpcy5hdmFpbGFibGVMb29rdXBJdGVtcyh0aGlzLmxvb2t1cEl0ZW1zKTtcbiAgICAgICAgaWYgKCFpdGVtcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy5maWVsZC5hY2NlcHROZXdJdGVtID9cbiAgICAgICAgICAgIGl0ZW1zPy5wdXNoKG5ldyBMb29rdXBJdGVtKHtpZDogLTIsIGVuZ2xpc2hOYW1lOiB0aGlzLnF1ZXN0aW9uICsgbmFtZSwgYXJhYmljTmFtZTogdGhpcy5xdWVzdGlvbiArIG5hbWV9KSk6XG4gICAgICAgICAgICBpdGVtcz8ucHVzaChuZXcgTG9va3VwSXRlbSh7aWQ6IC0xLCBlbmdsaXNoTmFtZTogJ05vIG1hdGNoIC4uLicsIGFyYWJpY05hbWU6ICfYutmK2LEg2YXZiNis2YjYryAgLi4uICd9KSkgO1xuXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZmllbGQuYWNjZXB0TmV3SXRlbSA/XG4gICAgICAgICAgaXRlbXM/LnB1c2gobmV3IExvb2t1cEl0ZW0oe2lkOiAtMiwgZW5nbGlzaE5hbWU6IHRoaXMucXVlc3Rpb24gKyBuYW1lLCBhcmFiaWNOYW1lOiB0aGlzLnF1ZXN0aW9uICsgbmFtZX0pKTpcbiAgICAgICAgICBpdGVtcz8ucHVzaChuZXcgTG9va3VwSXRlbSh7aWQ6IC0xLCBlbmdsaXNoTmFtZTogJ05vIG1hdGNoIC4uLicsIGFyYWJpY05hbWU6ICfYutmK2LEg2YXZiNis2YjYryAgLi4uICd9KSkgO1xuICAgICAgfVxuICAgICAgdGhpcy5sb29rdXBJdGVtcyQgPSBvZihpdGVtcyk7XG4gICAgfSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXRjaExvb2t1cFZhbHVlKGRlZmF1bHRWYWx1ZTogYW55KSB7XG4gICAgaWYgKGRlZmF1bHRWYWx1ZSkge1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gQXJyYXkuaXNBcnJheShkZWZhdWx0VmFsdWUpID8gZGVmYXVsdFZhbHVlIDogW2RlZmF1bHRWYWx1ZV07XG4gICAgICB0aGlzLm11bHRpQ29udHJvbC5zZXRWYWx1ZShudWxsLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICB0aGlzLnN5bmNGb3JtQ29udHJvbFN0YXRlKCk7XG4gICAgICB0aGlzLnB1Ymxpc2hBdmFpbGFibGVMb29rdXBJdGVtcygpO1xuICAgIH1cbiAgfVxuXG4gIHJlbW92ZShpdGVtOiBMb29rdXBJdGVtKSB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLnNlbGVjdGVkSXRlbXMuaW5kZXhPZihpdGVtKTtcbiAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnNwbGljZShpbmRleCwgMSk7XG4gICAgICB0aGlzLmZvcm0uZ2V0KHRoaXMuZmllbGQucHJvcGVydHkpLnBhdGNoVmFsdWUodGhpcy5zZWxlY3RlZEl0ZW1zLCB7ZW1pdEV2ZW50OiB0cnVlfSk7XG4gICAgICB0aGlzLnN5bmNGb3JtQ29udHJvbFN0YXRlKCk7XG4gICAgICB0aGlzLnB1Ymxpc2hBdmFpbGFibGVMb29rdXBJdGVtcygpO1xuICAgIH1cbiAgfVxuXG4gIGdldFBsYWNlaG9sZGVyS2V5KCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLmZpZWxkPy5wbGFjZWhvbGRlcikge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBjb25zdCBjb25maWd1cmVkS2V5ID0gdGhpcy5maWVsZC5wbGFjZWhvbGRlcjtcbiAgICBpZiAoIXRoaXMubGFiZWxzU2VjdGlvbikge1xuICAgICAgcmV0dXJuIGNvbmZpZ3VyZWRLZXk7XG4gICAgfVxuICAgIHJldHVybiBjb25maWd1cmVkS2V5LnN0YXJ0c1dpdGgodGhpcy5sYWJlbHNTZWN0aW9uKVxuICAgICAgPyBjb25maWd1cmVkS2V5XG4gICAgICA6IGAke3RoaXMubGFiZWxzU2VjdGlvbn0uJHtjb25maWd1cmVkS2V5fWA7XG4gIH1cblxuICBnZXQgc2hvd0lucHV0UGxhY2Vob2xkZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5maWVsZD8ucGxhY2Vob2xkZXIgJiYgKHRoaXMuc2VsZWN0ZWRJdGVtcz8ubGVuZ3RoID8/IDApID09PSAwO1xuICB9XG5cbiAgb25JbnB1dENsaWNrKGF1dG9jb21wbGV0ZVRyaWdnZXI6IE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5maWVsZD8ucmVhZG9ubHkgfHwgdGhpcy5yZWFkb25seSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm9wZW5Mb29rdXBQYW5lbChhdXRvY29tcGxldGVUcmlnZ2VyKTtcbiAgfVxuXG4gIG9uVHJpZ2dlckNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50LCBhdXRvY29tcGxldGVUcmlnZ2VyOiBNYXRBdXRvY29tcGxldGVUcmlnZ2VyKTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgaWYgKHRoaXMuZmllbGQ/LnJlYWRvbmx5IHx8IHRoaXMucmVhZG9ubHkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5vcGVuTG9va3VwUGFuZWwoYXV0b2NvbXBsZXRlVHJpZ2dlcik7XG4gIH1cblxuICBvbktleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGF1dG9jb21wbGV0ZVRyaWdnZXI6IE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIpIHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICB0aGlzLmZpbHRlckxvb2t1cEl0ZW1zKCcnLCBhdXRvY29tcGxldGVUcmlnZ2VyKTtcbiAgICAgIGF1dG9jb21wbGV0ZVRyaWdnZXIub3BlblBhbmVsKCk7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfVxuXG4gIG9wZW5Mb29rdXBQYW5lbChhdXRvY29tcGxldGVUcmlnZ2VyOiBNYXRBdXRvY29tcGxldGVUcmlnZ2VyKTogdm9pZCB7XG4gICAgdGhpcy5maWx0ZXJMb29rdXBJdGVtcygnJywgYXV0b2NvbXBsZXRlVHJpZ2dlcik7XG4gICAgYXV0b2NvbXBsZXRlVHJpZ2dlci5vcGVuUGFuZWwoKTtcbiAgfVxuICBnZXRJZCgpIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5wcm9wZXJ0eTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpZWxkXCIgY2xhc3M9XCJtYWluLW11bHRpLWF1dG9cIj5cbiAgPGRpdiBjbGFzcz1cIm1hdC1maWVsZC13cmFwcGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImxhYmVsLWFuZC1hc3Rlcmlzay1jb250YWluZXJcIj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiIWZpZWxkLmhpZGVMYWJlbFwiIGNsYXNzPVwiY3VzdG9tLWxhYmVsXCIgaWQ9XCJsYWJlbC17eyBmaWVsZC5wcm9wZXJ0eSB9fVwiPlxuICAgICAgICB7eyBmaWVsZC5sYWJlbCEgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiZmllbGQucmVxdWlyZWQgJiYgIWZpZWxkLmhpZGVMYWJlbFwiIGNsYXNzPVwicmVxdWlyZWQtYXN0ZXJpc2tcIj4gKiA8L3NwYW4+XG4gICAgICA8c3BhbiAqbmdJZj1cIiFmaWVsZC5yZXF1aXJlZCAmJiAhZmllbGQuaGlkZUxhYmVsICYmICFmaWVsZC5yZWFkb25seVwiIGNsYXNzPVwib3B0aW9uYWwtdGV4dFwiPlxuICAgICAgICB7eyAnb3B0aW9uYWwnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwibXVsdGktc2VsZWN0LWNvbnRyb2xcIj5cbiAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImZ1bGwtd2lkdGggbXVsdGktYXV0b2NvbXBsZXRlLWZpZWxkXCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cbiAgICAgICAgPG1hdC1jaGlwLWxpc3Rib3ggI2NoaXBMaXN0IGNsYXNzPVwiY2hpcC1saXN0Ym94XCIgW3NlbGVjdGFibGVdPVwidHJ1ZVwiPlxuICAgICAgICAgIDxtYXQtY2hpcFxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc2VsZWN0ZWRJdGVtc1wiXG4gICAgICAgICAgICBjbGFzcz1cIm11bHRpLXNlbGVjdC1jaGlwXCJcbiAgICAgICAgICAgIFtyZW1vdmFibGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAocmVtb3ZlZCk9XCJyZW1vdmUoaXRlbSlcIj5cbiAgICAgICAgICAgIHt7IGl0ZW1OYW1lQnlMYWcoaXRlbSkgfX1cbiAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cIiFmaWVsZC5yZWFkb25seVwiIG1hdENoaXBSZW1vdmU+Y2FuY2VsPC9tYXQtaWNvbj5cbiAgICAgICAgICA8L21hdC1jaGlwPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgY2xhc3M9XCJjaGlwLWlucHV0IGFwcC1pbnB1dFwiXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBbaWRdPVwiZ2V0SWQoKVwiXG4gICAgICAgICAgICAjaXRlbUlucHV0XG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwibXVsdGlDb250cm9sXCJcbiAgICAgICAgICAgIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiXG4gICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInNob3dJbnB1dFBsYWNlaG9sZGVyID8gKGdldFBsYWNlaG9sZGVyS2V5KCkgfCB0cmFuc2xhdGUpIDogJydcIlxuICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICAgICAgICAgIFtyZXF1aXJlZF09XCJpc1JlcXVpcmVkXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbklucHV0Q2xpY2soYXV0b2NvbXBsZXRlVHJpZ2dlcik7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAoa2V5ZG93bik9XCJvbktleWRvd24oJGV2ZW50LCBhdXRvY29tcGxldGVUcmlnZ2VyKVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZmllbGQucmVhZG9ubHlcIlxuICAgICAgICAgICAgI2F1dG9jb21wbGV0ZVRyaWdnZXI9XCJtYXRBdXRvY29tcGxldGVUcmlnZ2VyXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCInbGFiZWwtJyArIGZpZWxkLnByb3BlcnR5XCI+XG4gICAgICAgIDwvbWF0LWNoaXAtbGlzdGJveD5cblxuICAgICAgICA8bWF0LWF1dG9jb21wbGV0ZVxuICAgICAgICAgICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCJcbiAgICAgICAgICBhdXRvQWN0aXZlRmlyc3RPcHRpb25cbiAgICAgICAgICBbZGlzcGxheVdpdGhdPVwiZGlzcGxheUZuXCJcbiAgICAgICAgICAob3B0aW9uU2VsZWN0ZWQpPVwic2VsZWN0ZWQoJGV2ZW50Lm9wdGlvbi52YWx1ZSlcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWZpZWxkLnJlYWRvbmx5XCI+XG4gICAgICAgICAgICA8bWF0LW9wdGlvblxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBsb29rdXBJdGVtcyQgfCBhc3luY1wiXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJpdGVtXCI+XG4gICAgICAgICAgICAgIHt7IGl0ZW1OYW1lQnlMYWcoaXRlbSkgfX1cbiAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJtdWx0aS1zZWxlY3QtYXJyb3ctdHJpZ2dlclwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJmaWVsZC5yZWFkb25seSB8fCByZWFkb25seVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0JBU0VfVEFCTEUub3Blbkxvb2t1cE9wdGlvbnMnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgW2F0dHIuaWRdPVwiJ211bHRpLXNlbGVjdC10cmlnZ2VyLScgKyBmaWVsZC5wcm9wZXJ0eVwiXG4gICAgICAgIChjbGljayk9XCJvblRyaWdnZXJDbGljaygkZXZlbnQsIGF1dG9jb21wbGV0ZVRyaWdnZXIpXCI+XG4gICAgICAgIDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZvY3VzYWJsZT1cImZhbHNlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgPHBhdGggZD1cIk03IDEwbDUgNSA1LTV6XCI+PC9wYXRoPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuIl19
|
|
346
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktYXV0by1jb21wbGV0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi9jb21wb25lbnRzL211bHRpLWF1dG8tY29tcGxldGUvbXVsdGktYXV0by1jb21wbGV0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi9jb21wb25lbnRzL211bHRpLWF1dG8tY29tcGxldGUvbXVsdGktYXV0by1jb21wbGV0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFpQixTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDM0csT0FBTyxFQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUN0RCxPQUFPLEVBQUMsZUFBZSxFQUFFLHNCQUFzQixFQUFFLFNBQVMsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xHLE9BQU8sRUFBYSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFcEMsT0FBTyxFQUFDLFdBQVcsRUFBYSxtQkFBbUIsRUFBRSxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUl2RixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDMUQsT0FBTyxFQUFDLE9BQU8sRUFBRSxjQUFjLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRSxPQUFPLEVBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDL0MsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ2pELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDL0MsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ3hDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7OztBQTBCdEQsTUFBTSxPQUFPLDBCQUEwQjtJQXNDckMsWUFBb0IsY0FBOEIsRUFBVyxnQkFBa0M7UUFBM0UsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQVcscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQWhDdkYsZ0JBQVcsR0FBaUIsRUFBRSxDQUFDO1FBRXZDLGtCQUFhLEdBQWlCLEVBQUUsQ0FBQztRQUNqQyxnQkFBVyxHQUFhLEVBQUUsQ0FBQztRQUMzQixlQUFVLEdBQVcsS0FBSyxDQUFDO1FBZ0IzQixhQUFRLEdBQVcsS0FBSyxDQUFDO1FBTXpCLGtCQUFhLEdBQStCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFL0QsYUFBUSxHQUFHLDBCQUEwQixDQUFDO1FBRXRDLGlCQUFZLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQStMaEIsYUFBUSxHQUFHLENBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyxhQUFhLEVBQUMsWUFBWSxDQUFDLENBQUM7SUE1THJFLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUU3QixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxFQUFFLEtBQUssQ0FBQztRQUN0RSxJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN0QyxDQUFDO1FBRUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzNDLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQzFCLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtvQkFDM0IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDbEMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ1YsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFFLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2hFLElBQUksQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5QyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRU8scUJBQXFCO1FBQzNCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzlCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUM3QixDQUFDO1FBQ0QsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVPLG9CQUFvQjtRQUMxQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNiLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3hCLE9BQU8sQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUM1QixDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQy9CLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUMvQyxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUM1QixDQUFDO1FBRUQsT0FBTyxDQUFDLHNCQUFzQixDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVPLHFCQUFxQjtRQUMzQixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztZQUN4QixJQUFJLENBQUMsWUFBWSxDQUFDLHNCQUFzQixDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDL0QsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDOUIsVUFBVSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNoQyxDQUFDO1FBRUQsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsTUFBTSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMvRCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUM3QyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN2QyxDQUFDO1FBRUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBQzNELElBQUksQ0FBQyxZQUFZLENBQUMsc0JBQXNCLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRU8sbUNBQW1DLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUN0QixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ1osSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzlCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzlCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ2hGLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNaLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDNUIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2pGLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBQyxTQUFTLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztZQUNyRixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztRQUNyQyxDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxFQUFDLFlBQVksRUFBRSxLQUFLLEVBQWdCO1FBQzlDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDbEQsSUFBSSxLQUFLLEVBQUUsWUFBWSxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQy9CLENBQUM7SUFDSCxDQUFDO0lBRU8sYUFBYTtRQUNuQixNQUFNLFNBQVMsR0FBaUIsY0FBYyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRTdFLE1BQU0sYUFBYSxHQUFrQixJQUFJLGFBQWEsRUFBRSxDQUFDO1FBQ3pELGFBQWEsQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3ZELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM5QixDQUFDLENBQUMsQ0FBQTtRQUNKLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzFELGFBQWEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksTUFBTSxDQUFDO2dCQUNwQyxHQUFHLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsRUFBRTtnQkFDdEQsVUFBVSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsSUFBSTtnQkFDMUMsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO2FBQzlCLENBQUMsQ0FBQyxDQUFDO1FBQ04sQ0FBQztRQUVELGFBQWEsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLGFBQWEsRUFBQyxZQUFZLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsY0FBYyxDQUFDLDJCQUEyQixDQUFDLFNBQVMsRUFBRSxhQUFhLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDMUYsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQ2YsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7b0JBQzFGLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQzt3QkFDaEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7b0JBQ3JFLENBQUM7b0JBQ0QsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxNQUFNO3dCQUN6QyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWE7d0JBQ3BCLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssQ0FBQztvQkFDL0MsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUVsQyxDQUFDO1lBRUgsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNKLENBQUM7YUFDRyxDQUFDO1lBQ0gsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3JILENBQUM7SUFDSCxDQUFDO0lBR0QsUUFBUSxDQUFDLEtBQVU7UUFDakIsSUFBSSxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNsRixJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNoQyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUNqRSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDdkQsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7UUFDckMsQ0FBQztJQUNILENBQUM7SUFFRCxTQUFTLENBQUMsUUFBYTtRQUNyQixPQUFPLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBRXJELENBQUM7SUFDRCxVQUFVLENBQUMsSUFBUztRQUNsQixPQUFPLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBRU8sb0JBQW9CLENBQUMsS0FBbUI7UUFDOUMsT0FBTyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRU8sMkJBQTJCO1FBQ2pDLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQsZUFBZSxDQUFDLE1BQWtCO1FBQ2hDLE9BQU87WUFDTCxtQkFBbUIsRUFBRSxNQUFNLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztTQUN0QyxDQUFBO0lBQ0gsQ0FBQztJQUVELGFBQWEsQ0FBQyxJQUFTO1FBQ3JCLDBCQUEwQjtRQUMxQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLEVBQUUsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUE7SUFDN0YsQ0FBQztJQUlELGlCQUFpQixDQUFDLElBQVMsRUFBRSxPQUErQjtRQUMxRCxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3RCLENBQUM7UUFDRCxJQUFJLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN2QixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUVELE1BQU0sU0FBUyxHQUFpQixjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFL0UsTUFBTSxhQUFhLEdBQWtCLElBQUksYUFBYSxFQUFFLENBQUM7UUFDekQsYUFBYSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixJQUFJLEVBQUUsQ0FBQztRQUMxRCxhQUFhLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUMvQixJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUN0QixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUN2RCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDOUIsQ0FBQyxDQUFDLENBQUE7UUFDSixDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMxRCxhQUFhLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQztnQkFDcEMsR0FBRyxFQUFFLElBQUksRUFBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLEtBQUssRUFBRSxFQUFFO2dCQUM1RixVQUFVLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxJQUFJO2dCQUMxQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7YUFDOUIsQ0FBQyxDQUFDLENBQUM7UUFDTixDQUFDO1FBRUQsYUFBYSxDQUFDLE9BQU8sR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRXRGLElBQUksQ0FBQyxjQUFjLENBQUMsMkJBQTJCLENBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN6RixJQUFJLEtBQUssR0FBaUIsRUFBRSxDQUFDO1lBQzdCLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNmLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ25DLEtBQUssR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUNwRCxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDO29CQUNuQixJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO3dCQUN4QixLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksVUFBVSxDQUFDLEVBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLEVBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQzt3QkFDM0csS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLFVBQVUsQ0FBQyxFQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBQyxDQUFDLENBQUMsQ0FBRTtnQkFFdkcsQ0FBQztZQUNILENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO29CQUN4QixLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksVUFBVSxDQUFDLEVBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLEVBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQztvQkFDM0csS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLFVBQVUsQ0FBQyxFQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBQyxDQUFDLENBQUMsQ0FBRTtZQUN2RyxDQUFDO1lBQ0QsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPO0lBQ1QsQ0FBQztJQUVPLGdCQUFnQixDQUFDLFlBQWlCO1FBQ3hDLElBQUksWUFBWSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDakYsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDdkQsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7UUFDckMsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLENBQUMsSUFBZ0I7UUFDckIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0MsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1lBQ3JGLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1FBQ3JDLENBQUM7SUFDSCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLENBQUM7WUFDN0IsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBQ0QsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUM7UUFDN0MsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN4QixPQUFPLGFBQWEsQ0FBQztRQUN2QixDQUFDO1FBQ0QsT0FBTyxhQUFhLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDakQsQ0FBQyxDQUFDLGFBQWE7WUFDZixDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxJQUFJLGFBQWEsRUFBRSxDQUFDO0lBQy9DLENBQUM7SUFFRCxJQUFJLG9CQUFvQjtRQUN0QixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFdBQVcsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsTUFBTSxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRUQsWUFBWSxDQUFDLG1CQUEyQztRQUN0RCxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUMxQyxPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxlQUFlLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQWlCLEVBQUUsbUJBQTJDO1FBQzNFLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUMxQyxPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxlQUFlLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQW9CLEVBQUUsbUJBQTJDO1FBQ3pFLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLG1CQUFtQixDQUFDLENBQUM7WUFDaEQsbUJBQW1CLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDaEMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3pCLENBQUM7SUFDSCxDQUFDO0lBRUQsZUFBZSxDQUFDLG1CQUEyQztRQUN6RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLG1CQUFtQixDQUFDLENBQUM7UUFDaEQsbUJBQW1CLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUNELEtBQUs7UUFDSCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO0lBQzdCLENBQUM7K0dBeFZVLDBCQUEwQjttR0FBMUIsMEJBQTBCLHlmQzlDdkMseTVGQXNFQSxpOEVEM0NJLFlBQVksNExBQ1osT0FBTyw2U0FDUCxhQUFhLG1MQUNiLGNBQWMsMFVBQ2QsT0FBTyxrSEFFUCxtQkFBbUIsdXlCQUNuQixzQkFBc0IscVFBQ3RCLFFBQVEsaVVBQ1IsZUFBZSx5V0FDZixTQUFTLGdKQUNULFNBQVMsOENBQ1QsSUFBSSw0RkFFSixlQUFlOzs0RkFLTiwwQkFBMEI7a0JBdkJ0QyxTQUFTOytCQUNFLHlCQUF5QixjQUN2QixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixPQUFPO3dCQUNQLGFBQWE7d0JBQ2IsY0FBYzt3QkFDZCxPQUFPO3dCQUNQLE9BQU87d0JBQ1AsbUJBQW1CO3dCQUNuQixzQkFBc0I7d0JBQ3RCLFFBQVE7d0JBQ1IsZUFBZTt3QkFDZixTQUFTO3dCQUNULFNBQVM7d0JBQ1QsSUFBSTt3QkFDSixjQUFjO3dCQUNkLGVBQWU7cUJBQ2hCO2tIQU11QixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBQ1ksWUFBWTtzQkFBN0MsU0FBUzt1QkFBQyxxQkFBcUI7Z0JBV2hDLEtBQUs7c0JBREosS0FBSztnQkFJTixJQUFJO3NCQURILEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSztnQkFJTixRQUFRO3NCQURQLEtBQUs7Z0JBSU4sYUFBYTtzQkFEWixLQUFLO2dCQUlOLGFBQWE7c0JBRFosTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0FMTF9JVEVNLCBMb29rdXBJdGVtfSBmcm9tIFwiLi4vLi4vYmFzZS1tb2RlbFwiO1xuaW1wb3J0IHtNYXRBdXRvY29tcGxldGUsIE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIsIE1hdE9wdGlvbn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZVwiO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBvZn0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7RmllbGRJbmZvfSBmcm9tIFwiLi4vLi4vYmFzZS1tb2RlbFwiO1xuaW1wb3J0IHtGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0b3JzfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7QmFja2VuZFNlcnZpY2V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlc1wiO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xuaW1wb3J0IHtHZXRJdGVtc0xpc3R9IGZyb20gXCIuLi8uLi9iYXNlLW1vZGVsL2dldC1pdGVtcy1saXN0XCI7XG5pbXBvcnQge01hdEZvcm1GaWVsZH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGRcIjtcbmltcG9ydCB7TWF0Q2hpcCwgTWF0Q2hpcExpc3Rib3h9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9jaGlwc1wiO1xuaW1wb3J0IHtBc3luY1BpcGUsIE5nRm9yT2YsIE5nSWZ9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7TWF0SWNvbn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2ljb25cIjtcbmltcG9ydCB7TWF0SW5wdXR9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pbnB1dFwiO1xuaW1wb3J0IHtidWlsZEl0ZW1zTGlzdH0gZnJvbSBcIi4uLy4uL3V0aWxzL2Jhc2UtdXRpbHNcIjtcbmltcG9ydCB7RmlsdGVyUmVxdWVzdH0gZnJvbSBcIi4uLy4uL2Jhc2UtbW9kZWxcIjtcbmltcG9ydCB7RmlsdGVyfSBmcm9tIFwiLi4vLi4vYmFzZS1tb2RlbFwiO1xuaW1wb3J0IHtSZXF1aXJlTWF0Y2h9IGZyb20gXCIuLi8uLi92YWxpZGF0b3JzXCI7XG5pbXBvcnQgeyBNYXRDaGlwc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoaXBzJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1tdWx0aS1hdXRvLWNvbXBsZXRlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE1hdEZvcm1GaWVsZCxcbiAgICBNYXRDaGlwLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0Q2hpcHNNb2R1bGUsXG4gICAgTmdGb3JPZixcbiAgICBNYXRJY29uLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcixcbiAgICBNYXRJbnB1dCxcbiAgICBNYXRBdXRvY29tcGxldGUsXG4gICAgTWF0T3B0aW9uLFxuICAgIEFzeW5jUGlwZSxcbiAgICBOZ0lmLFxuICAgIE1hdENoaXBMaXN0Ym94LFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL211bHRpLWF1dG8tY29tcGxldGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vbXVsdGktYXV0by1jb21wbGV0ZS5jb21wb25lbnQuY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBNdWx0aUF1dG9Db21wbGV0ZUNvbXBvbmVudCB7XG4vLyBAdHMtaWdub3JlXG4gIEBWaWV3Q2hpbGQoJ2l0ZW1JbnB1dCcpIGl0ZW1JbnB1dDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgnYXV0b2NvbXBsZXRlVHJpZ2dlcicpIG1hdEFDVHJpZ2dlcjogTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcjtcblxuICBsb29rdXBJdGVtcyQ6IE9ic2VydmFibGU8TG9va3VwSXRlbVtdPiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBsb29rdXBJdGVtczogTG9va3VwSXRlbVtdID0gW107XG5cbiAgc2VsZWN0ZWRJdGVtczogTG9va3VwSXRlbVtdID0gW107XG4gIGNhc2NhZGVkSWR6OiBudW1iZXJbXSA9IFtdO1xuICBpc1JlcXVpcmVkOiBib29sZWFuPSBmYWxzZTtcbiAgcHJpdmF0ZSB0aW1lcjogYW55O1xuXG4gIEBJbnB1dCgpLy8gQHRzLWlnbm9yZVxuICBmaWVsZDogRmllbGRJbmZvO1xuICAvL1xuICBASW5wdXQoKS8vIEB0cy1pZ25vcmVcbiAgZm9ybTogRm9ybUdyb3VwO1xuXG4gIEBJbnB1dCgpLy8gQHRzLWlnbm9yZVxuICBkZWZhdWx0VmFsdWU6IGFueTtcblxuICBASW5wdXQoKVxuICBwYXRoUGFyYW06IGFueTtcblxuICBASW5wdXQoKVxuICByZWFkb25seSA6IGJvb2xlYW49ZmFsc2U7XG5cbiAgQElucHV0KClcbiAgbGFiZWxzU2VjdGlvbj86IHN0cmluZztcblxuICBAT3V0cHV0KClcbiAgc2VsZWN0ZWRWYWx1ZTogRXZlbnRFbWl0dGVyPExvb2t1cEl0ZW1bXT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcXVlc3Rpb24gPSAnV291bGQgeW91IGxpa2UgdG8gYWRkID9cIic7XG5cbiAgbXVsdGlDb250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBiYWNrZW5kU2VydmljZTogQmFja2VuZFNlcnZpY2UsIHByaXZhdGUgIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UpIHtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubXVsdGlDb250cm9sID0gbmV3IEZvcm1Db250cm9sKG51bGwpO1xuICAgIHRoaXMudXBkYXRlRmllbGRBdHRyaWJ1dGVzKCk7XG5cbiAgICBjb25zdCBpbml0aWFsVmFsdWUgPSB0aGlzLmZvcm0/LmNvbnRyb2xzW3RoaXMuZmllbGQ/LnByb3BlcnR5XT8udmFsdWU7XG4gICAgaWYgKGluaXRpYWxWYWx1ZSkge1xuICAgICAgdGhpcy5wYXRjaExvb2t1cFZhbHVlKGluaXRpYWxWYWx1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy5tdWx0aUNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2ID0+IHtcbiAgICAgIGlmICh0eXBlb2YgdiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZXIpO1xuICAgICAgICB0aGlzLnRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5maWx0ZXJMb29rdXBJdGVtcyh2LCBudWxsKTtcbiAgICAgICAgfSwgNzAwKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuZ2V0TG9va3VwRGF0YSgpO1xuICAgIGlmICh0aGlzLmZpZWxkLmNhc2NhZGVkQnkpIHtcbiAgICAgIHRoaXMuZm9ybT8uZ2V0KHRoaXMuZmllbGQuY2FzY2FkZWRCeSk/LnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodiA9PiB7XG4gICAgICAgIHRoaXMucmVtb3ZlQ2hpbGRJdGVtc0lmQ2FzY2FkZWRCeVJlbW92ZWQodik7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUZpZWxkQXR0cmlidXRlcygpIHtcbiAgICBpZiAodGhpcy5maWVsZC5yZWFkb25seSkge1xuICAgICAgdGhpcy5tdWx0aUNvbnRyb2wuZGlzYWJsZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm11bHRpQ29udHJvbC5lbmFibGUoKTtcbiAgICB9XG4gICAgdGhpcy5zeW5jRm9ybUNvbnRyb2xTdGF0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzeW5jRm9ybUNvbnRyb2xTdGF0ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtPy5nZXQodGhpcy5maWVsZD8ucHJvcGVydHkpO1xuICAgIGlmICghY29udHJvbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmZpZWxkLnJlYWRvbmx5KSB7XG4gICAgICBjb250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5maWVsZC5yZXF1aXJlZCkge1xuICAgICAgY29udHJvbC5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRyb2wuY2xlYXJWYWxpZGF0b3JzKCk7XG4gICAgfVxuXG4gICAgY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB0aGlzLnVwZGF0ZUlucHV0VmFsaWRhdG9ycygpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVJbnB1dFZhbGlkYXRvcnMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZmllbGQucmVhZG9ubHkpIHtcbiAgICAgIHRoaXMubXVsdGlDb250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xuICAgICAgdGhpcy5pc1JlcXVpcmVkID0gZmFsc2U7XG4gICAgICB0aGlzLm11bHRpQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB2YWxpZGF0b3JzID0gW107XG4gICAgaWYgKCF0aGlzLmZpZWxkLmFjY2VwdE5ld0l0ZW0pIHtcbiAgICAgIHZhbGlkYXRvcnMucHVzaChSZXF1aXJlTWF0Y2gpO1xuICAgIH1cblxuICAgIGNvbnN0IGhhc1NlbGVjdGVkSXRlbXMgPSAodGhpcy5zZWxlY3RlZEl0ZW1zPy5sZW5ndGggPz8gMCkgPiAwO1xuICAgIGlmICh0aGlzLmZpZWxkLnJlcXVpcmVkICYmICFoYXNTZWxlY3RlZEl0ZW1zKSB7XG4gICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgfVxuXG4gICAgdGhpcy5tdWx0aUNvbnRyb2wuc2V0VmFsaWRhdG9ycyh2YWxpZGF0b3JzKTtcbiAgICB0aGlzLmlzUmVxdWlyZWQgPSB0aGlzLmZpZWxkLnJlcXVpcmVkICYmICFoYXNTZWxlY3RlZEl0ZW1zO1xuICAgIHRoaXMubXVsdGlDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVDaGlsZEl0ZW1zSWZDYXNjYWRlZEJ5UmVtb3ZlZCh2KSB7XG4gICAgdGhpcy5jYXNjYWRlZElkeiA9IFtdO1xuICAgIHYuZm9yRWFjaChhID0+IHtcbiAgICAgIHRoaXMuY2FzY2FkZWRJZHoucHVzaChhLmlkKTtcbiAgICB9KTtcbiAgICBsZXQgdG9EZWxldGVJZHogPSBbXTtcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXM/LmZvckVhY2goeCA9PiB7XG4gICAgICBjb25zdCBkZWwgPSB0aGlzLmNhc2NhZGVkSWR6LmZpbmRJbmRleCh5ID0+IHkgPT09IHhbdGhpcy5maWVsZC5jYXNjYWRlZEJ5XT8uaWQpO1xuICAgICAgaWYgKGRlbCA8IDApIHtcbiAgICAgICAgdG9EZWxldGVJZHoucHVzaCh4WydpZCddKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICh0b0RlbGV0ZUlkeikge1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zZWxlY3RlZEl0ZW1zLmZpbHRlcihzID0+ICF0b0RlbGV0ZUlkei5pbmNsdWRlcyhzLmlkKSk7XG4gICAgICB0aGlzLmZvcm0uZ2V0KHRoaXMuZmllbGQucHJvcGVydHkpLnBhdGNoVmFsdWUodGhpcy5zZWxlY3RlZEl0ZW1zLCB7ZW1pdEV2ZW50OiB0cnVlfSk7XG4gICAgICB0aGlzLnN5bmNGb3JtQ29udHJvbFN0YXRlKCk7XG4gICAgICB0aGlzLnB1Ymxpc2hBdmFpbGFibGVMb29rdXBJdGVtcygpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKHtkZWZhdWx0VmFsdWUsIGZpZWxkfTogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIHRoaXMucGF0Y2hMb29rdXBWYWx1ZShkZWZhdWx0VmFsdWU/LmN1cnJlbnRWYWx1ZSk7XG4gICAgaWYgKGZpZWxkPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMuZmllbGQgPSBmaWVsZC5jdXJyZW50VmFsdWU7XG4gICAgICB0aGlzLnVwZGF0ZUZpZWxkQXR0cmlidXRlcygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0TG9va3VwRGF0YSgpIHtcbiAgICBjb25zdCBsaXN0SXRlbXM6IEdldEl0ZW1zTGlzdCA9IGJ1aWxkSXRlbXNMaXN0KCcnLCB0aGlzLmZpZWxkLmxvb2t1cEFwaVBhdGgpO1xuXG4gICAgY29uc3QgZmlsdGVyUmVxdWVzdDogRmlsdGVyUmVxdWVzdCA9IG5ldyBGaWx0ZXJSZXF1ZXN0KCk7XG4gICAgZmlsdGVyUmVxdWVzdC5maWx0ZXJzID0gW107XG4gICAgdGhpcy5jYXNjYWRlZElkeiA9IFtdO1xuICAgIGlmICh0aGlzLmZpZWxkLmNhc2NhZGVkQnkpIHtcbiAgICAgIHRoaXMuZm9ybS5nZXQodGhpcy5maWVsZC5jYXNjYWRlZEJ5KT8udmFsdWU/LmZvckVhY2goYSA9PiB7XG4gICAgICAgIHRoaXMuY2FzY2FkZWRJZHoucHVzaChhLmlkKTtcbiAgICAgIH0pXG4gICAgfVxuICAgIGlmICh0aGlzLmZpZWxkLmNhc2NhZGVkQnkgJiYgdGhpcy5jYXNjYWRlZElkej8ubGVuZ3RoID4gMCkge1xuICAgICAgZmlsdGVyUmVxdWVzdC5maWx0ZXJzLnB1c2gobmV3IEZpbHRlcih7XG4gICAgICAgIGtleTogJ2lkJywgZmllbGROYW1lOiB0aGlzLmZpZWxkLmNhc2NhZGVkQnksIGxhYmVsOiAnJyxcbiAgICAgICAgZmlsdGVyVHlwZTogJ0ZJTEVEX0ZJTFRFUicsIG9wZXJhdG9yOiAnSU4nLFxuICAgICAgICB2YWx1ZU9iamVjdDogdGhpcy5jYXNjYWRlZElkelxuICAgICAgfSkpO1xuICAgIH1cblxuICAgIGZpbHRlclJlcXVlc3QuY29sdW1ucyA9IFsnaWQnLCdjb2RlJywnZW5nbGlzaE5hbWUnLCdhcmFiaWNOYW1lJ107XG4gICAgaWYgKCF0aGlzLmZpZWxkLnJlYWRvbmx5KSB7XG4gICAgdGhpcy5iYWNrZW5kU2VydmljZS5nZXRMb29rdXBJdGVtc0J5TXVsdGlGaWx0ZXIobGlzdEl0ZW1zLCBmaWx0ZXJSZXF1ZXN0KS5zdWJzY3JpYmUoKHJlc3AgPT4ge1xuICAgICAgaWYgKHJlc3AudmFsaWQpIHtcbiAgICAgICAgdGhpcy5sb29rdXBJdGVtcyA9IHRoaXMuZmllbGQuaW5jbHVkZUFsbE9wdGlvbiA/IFtBTExfSVRFTV0uY29uY2F0KHJlc3AuYm9keSkgOiByZXNwLmJvZHk7XG4gICAgICAgIGlmICghdGhpcy5mb3JtLmdldCgnaWQnKT8udmFsdWUpIHtcbiAgICAgICAgICB0aGlzLnBhdGNoTG9va3VwVmFsdWUodGhpcy5sb29rdXBJdGVtcz8uZmluZChsID0+IGwuZGVmYXVsdFZhbHVlKSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGVkSXRlbXM/Lmxlbmd0aFxuICAgICAgICAgID8gdGhpcy5zZWxlY3RlZEl0ZW1zXG4gICAgICAgICAgOiB0aGlzLmZvcm0/LmdldCh0aGlzLmZpZWxkLnByb3BlcnR5KT8udmFsdWU7XG4gICAgICAgIHRoaXMucGF0Y2hMb29rdXBWYWx1ZShzZWxlY3RlZCk7XG5cbiAgICAgIH1cblxuICAgIH0pKTtcbiAgICB9XG4gICAgZWxzZXtcbiAgICAgIHRoaXMucGF0Y2hMb29rdXBWYWx1ZSh0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoID8gdGhpcy5zZWxlY3RlZEl0ZW1zIDogdGhpcy5mb3JtPy5nZXQodGhpcy5maWVsZC5wcm9wZXJ0eSk/LnZhbHVlKTtcbiAgICB9XG4gIH1cblxuXG4gIHNlbGVjdGVkKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodmFsdWUuaWQgIT09IC0xICYmIHRoaXMuc2VsZWN0ZWRJdGVtcy5maW5kSW5kZXgoaSA9PiBpLmlkID09IHZhbHVlLmlkKSA9PT0gLTEpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcz8ucHVzaCh2YWx1ZSk7XG4gICAgICB0aGlzLml0ZW1JbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgICB0aGlzLmZvcm0uZ2V0KHRoaXMuZmllbGQucHJvcGVydHkpPy5zZXRWYWx1ZSh0aGlzLnNlbGVjdGVkSXRlbXMpO1xuICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlLmVtaXQodGhpcy5zZWxlY3RlZEl0ZW1zKTtcbiAgICAgIHRoaXMubXVsdGlDb250cm9sLnNldFZhbHVlKG51bGwsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgIHRoaXMuc3luY0Zvcm1Db250cm9sU3RhdGUoKTtcbiAgICAgIHRoaXMucHVibGlzaEF2YWlsYWJsZUxvb2t1cEl0ZW1zKCk7XG4gICAgfVxuICB9XG5cbiAgZGlzcGxheUZuKHNlbGVjdGVkOiBhbnkpOiBzdHJpbmcge1xuICAgIHJldHVybiBzZWxlY3RlZCA/IHNlbGVjdGVkLmVuZ2xpc2hOYW1lIDogdW5kZWZpbmVkO1xuXG4gIH1cbiAgaXNTZWxlY3RlZChpdGVtOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEl0ZW1zPy5zb21lKChzZWxlY3RlZDogYW55KSA9PiBzZWxlY3RlZD8uY29kZSA9PSBpdGVtPy5jb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgYXZhaWxhYmxlTG9va3VwSXRlbXMoaXRlbXM6IExvb2t1cEl0ZW1bXSk6IExvb2t1cEl0ZW1bXSB7XG4gICAgcmV0dXJuIChpdGVtcyA/PyBbXSkuZmlsdGVyKGl0ZW0gPT4gIXRoaXMuaXNTZWxlY3RlZChpdGVtKSk7XG4gIH1cblxuICBwcml2YXRlIHB1Ymxpc2hBdmFpbGFibGVMb29rdXBJdGVtcygpOiB2b2lkIHtcbiAgICB0aGlzLmxvb2t1cEl0ZW1zJCA9IG9mKHRoaXMuYXZhaWxhYmxlTG9va3VwSXRlbXModGhpcy5sb29rdXBJdGVtcykpO1xuICB9XG5cbiAgX2FsbG93U2VsZWN0aW9uKG9wdGlvbjogTG9va3VwSXRlbSk6IHsgW2NsYXNzTmFtZTogc3RyaW5nXTogYm9vbGVhbiB9IHtcbiAgICByZXR1cm4ge1xuICAgICAgJ3ByZXZlbnQtc2VsZWN0aW9uJzogb3B0aW9uLmlkID09PSAtMSxcbiAgICB9XG4gIH1cblxuICBpdGVtTmFtZUJ5TGFnKGl0ZW06IGFueSk6IHN0cmluZyB7XG4gICAgLy8gcmV0dXJuIGl0ZW0uYXJhYmljTmFtZTtcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldERlZmF1bHRMYW5nKCkgPT09ICdlbicgPyBpdGVtLmVuZ2xpc2hOYW1lIDogaXRlbS5hcmFiaWNOYW1lXG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IF9jb2x1bW5zID0gWydpZCcsJ2NvZGUnLCdlbmdsaXNoTmFtZScsJ2FyYWJpY05hbWUnXTtcblxuICBmaWx0ZXJMb29rdXBJdGVtcyhuYW1lOiBhbnksIHRyaWdnZXI6IE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIpIHtcbiAgICBpZiAodHJpZ2dlcikge1xuICAgICAgdHJpZ2dlci5vcGVuUGFuZWwoKTtcbiAgICB9XG4gICAgaWYgKG5hbWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgbmFtZSA9ICcnO1xuICAgIH1cblxuICAgIGNvbnN0IGxpc3RJdGVtczogR2V0SXRlbXNMaXN0ID0gYnVpbGRJdGVtc0xpc3QobmFtZSwgdGhpcy5maWVsZC5sb29rdXBBcGlQYXRoKTtcblxuICAgIGNvbnN0IGZpbHRlclJlcXVlc3Q6IEZpbHRlclJlcXVlc3QgPSBuZXcgRmlsdGVyUmVxdWVzdCgpO1xuICAgIGZpbHRlclJlcXVlc3QuZmlsdGVycyA9IHRoaXMuZmllbGQubG9va3VwRmlsdGVyTGlzdCB8fCBbXTtcbiAgICBmaWx0ZXJSZXF1ZXN0LnNlYXJjaFN0ciA9IG5hbWU7XG4gICAgdGhpcy5jYXNjYWRlZElkeiA9IFtdO1xuICAgIGlmICh0aGlzLmZpZWxkLmNhc2NhZGVkQnkpIHtcbiAgICAgIHRoaXMuZm9ybS5nZXQodGhpcy5maWVsZC5jYXNjYWRlZEJ5KT8udmFsdWU/LmZvckVhY2goYSA9PiB7XG4gICAgICAgIHRoaXMuY2FzY2FkZWRJZHoucHVzaChhLmlkKTtcbiAgICAgIH0pXG4gICAgfVxuICAgIGlmICh0aGlzLmZpZWxkLmNhc2NhZGVkQnkgJiYgdGhpcy5jYXNjYWRlZElkej8ubGVuZ3RoID4gMCkge1xuICAgICAgZmlsdGVyUmVxdWVzdC5maWx0ZXJzLnB1c2gobmV3IEZpbHRlcih7XG4gICAgICAgIGtleTogJ2lkJyxqb2luT2JqZWN0TmFtZTogdGhpcy5maWVsZC5jYXNjYWRlZEJ5LCBmaWVsZE5hbWU6IHRoaXMuZmllbGQuY2FzY2FkZWRCeSwgbGFiZWw6ICcnLFxuICAgICAgICBmaWx0ZXJUeXBlOiAnRklMRURfRklMVEVSJywgb3BlcmF0b3I6ICdJTicsXG4gICAgICAgIHZhbHVlT2JqZWN0OiB0aGlzLmNhc2NhZGVkSWR6XG4gICAgICB9KSk7XG4gICAgfVxuXG4gICAgZmlsdGVyUmVxdWVzdC5jb2x1bW5zID0gWy4uLnRoaXMuX2NvbHVtbnMsIC4uLih0aGlzLmZpZWxkLmV4dHJhTG9va3Vwc0NvbHVtbnMgPz8gW10pXTtcblxuICAgIHRoaXMuYmFja2VuZFNlcnZpY2UuZ2V0TG9va3VwSXRlbXNCeU11bHRpRmlsdGVyKGxpc3RJdGVtcywgZmlsdGVyUmVxdWVzdCkuc3Vic2NyaWJlKHJlc3AgPT4ge1xuICAgICAgbGV0IGl0ZW1zOiBMb29rdXBJdGVtW10gPSBbXTtcbiAgICAgIGlmIChyZXNwLnZhbGlkKSB7XG4gICAgICAgIHRoaXMubG9va3VwSXRlbXMgPSByZXNwLmJvZHkgPz8gW107XG4gICAgICAgIGl0ZW1zID0gdGhpcy5hdmFpbGFibGVMb29rdXBJdGVtcyh0aGlzLmxvb2t1cEl0ZW1zKTtcbiAgICAgICAgaWYgKCFpdGVtcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy5maWVsZC5hY2NlcHROZXdJdGVtID9cbiAgICAgICAgICAgIGl0ZW1zPy5wdXNoKG5ldyBMb29rdXBJdGVtKHtpZDogLTIsIGVuZ2xpc2hOYW1lOiB0aGlzLnF1ZXN0aW9uICsgbmFtZSwgYXJhYmljTmFtZTogdGhpcy5xdWVzdGlvbiArIG5hbWV9KSk6XG4gICAgICAgICAgICBpdGVtcz8ucHVzaChuZXcgTG9va3VwSXRlbSh7aWQ6IC0xLCBlbmdsaXNoTmFtZTogJ05vIG1hdGNoIC4uLicsIGFyYWJpY05hbWU6ICfYutmK2LEg2YXZiNis2YjYryAgLi4uICd9KSkgO1xuXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZmllbGQuYWNjZXB0TmV3SXRlbSA/XG4gICAgICAgICAgaXRlbXM/LnB1c2gobmV3IExvb2t1cEl0ZW0oe2lkOiAtMiwgZW5nbGlzaE5hbWU6IHRoaXMucXVlc3Rpb24gKyBuYW1lLCBhcmFiaWNOYW1lOiB0aGlzLnF1ZXN0aW9uICsgbmFtZX0pKTpcbiAgICAgICAgICBpdGVtcz8ucHVzaChuZXcgTG9va3VwSXRlbSh7aWQ6IC0xLCBlbmdsaXNoTmFtZTogJ05vIG1hdGNoIC4uLicsIGFyYWJpY05hbWU6ICfYutmK2LEg2YXZiNis2YjYryAgLi4uICd9KSkgO1xuICAgICAgfVxuICAgICAgdGhpcy5sb29rdXBJdGVtcyQgPSBvZihpdGVtcyk7XG4gICAgfSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXRjaExvb2t1cFZhbHVlKGRlZmF1bHRWYWx1ZTogYW55KSB7XG4gICAgaWYgKGRlZmF1bHRWYWx1ZSkge1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gQXJyYXkuaXNBcnJheShkZWZhdWx0VmFsdWUpID8gZGVmYXVsdFZhbHVlIDogW2RlZmF1bHRWYWx1ZV07XG4gICAgICB0aGlzLm11bHRpQ29udHJvbC5zZXRWYWx1ZShudWxsLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICB0aGlzLnN5bmNGb3JtQ29udHJvbFN0YXRlKCk7XG4gICAgICB0aGlzLnB1Ymxpc2hBdmFpbGFibGVMb29rdXBJdGVtcygpO1xuICAgIH1cbiAgfVxuXG4gIHJlbW92ZShpdGVtOiBMb29rdXBJdGVtKSB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLnNlbGVjdGVkSXRlbXMuaW5kZXhPZihpdGVtKTtcbiAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnNwbGljZShpbmRleCwgMSk7XG4gICAgICB0aGlzLmZvcm0uZ2V0KHRoaXMuZmllbGQucHJvcGVydHkpLnBhdGNoVmFsdWUodGhpcy5zZWxlY3RlZEl0ZW1zLCB7ZW1pdEV2ZW50OiB0cnVlfSk7XG4gICAgICB0aGlzLnN5bmNGb3JtQ29udHJvbFN0YXRlKCk7XG4gICAgICB0aGlzLnB1Ymxpc2hBdmFpbGFibGVMb29rdXBJdGVtcygpO1xuICAgIH1cbiAgfVxuXG4gIGdldFBsYWNlaG9sZGVyS2V5KCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLmZpZWxkPy5wbGFjZWhvbGRlcikge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBjb25zdCBjb25maWd1cmVkS2V5ID0gdGhpcy5maWVsZC5wbGFjZWhvbGRlcjtcbiAgICBpZiAoIXRoaXMubGFiZWxzU2VjdGlvbikge1xuICAgICAgcmV0dXJuIGNvbmZpZ3VyZWRLZXk7XG4gICAgfVxuICAgIHJldHVybiBjb25maWd1cmVkS2V5LnN0YXJ0c1dpdGgodGhpcy5sYWJlbHNTZWN0aW9uKVxuICAgICAgPyBjb25maWd1cmVkS2V5XG4gICAgICA6IGAke3RoaXMubGFiZWxzU2VjdGlvbn0uJHtjb25maWd1cmVkS2V5fWA7XG4gIH1cblxuICBnZXQgc2hvd0lucHV0UGxhY2Vob2xkZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5maWVsZD8ucGxhY2Vob2xkZXIgJiYgKHRoaXMuc2VsZWN0ZWRJdGVtcz8ubGVuZ3RoID8/IDApID09PSAwO1xuICB9XG5cbiAgb25JbnB1dENsaWNrKGF1dG9jb21wbGV0ZVRyaWdnZXI6IE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5maWVsZD8ucmVhZG9ubHkgfHwgdGhpcy5yZWFkb25seSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm9wZW5Mb29rdXBQYW5lbChhdXRvY29tcGxldGVUcmlnZ2VyKTtcbiAgfVxuXG4gIG9uVHJpZ2dlckNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50LCBhdXRvY29tcGxldGVUcmlnZ2VyOiBNYXRBdXRvY29tcGxldGVUcmlnZ2VyKTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgaWYgKHRoaXMuZmllbGQ/LnJlYWRvbmx5IHx8IHRoaXMucmVhZG9ubHkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5vcGVuTG9va3VwUGFuZWwoYXV0b2NvbXBsZXRlVHJpZ2dlcik7XG4gIH1cblxuICBvbktleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGF1dG9jb21wbGV0ZVRyaWdnZXI6IE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIpIHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICB0aGlzLmZpbHRlckxvb2t1cEl0ZW1zKCcnLCBhdXRvY29tcGxldGVUcmlnZ2VyKTtcbiAgICAgIGF1dG9jb21wbGV0ZVRyaWdnZXIub3BlblBhbmVsKCk7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfVxuXG4gIG9wZW5Mb29rdXBQYW5lbChhdXRvY29tcGxldGVUcmlnZ2VyOiBNYXRBdXRvY29tcGxldGVUcmlnZ2VyKTogdm9pZCB7XG4gICAgdGhpcy5maWx0ZXJMb29rdXBJdGVtcygnJywgYXV0b2NvbXBsZXRlVHJpZ2dlcik7XG4gICAgYXV0b2NvbXBsZXRlVHJpZ2dlci5vcGVuUGFuZWwoKTtcbiAgfVxuICBnZXRJZCgpIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5wcm9wZXJ0eTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpZWxkXCIgY2xhc3M9XCJtYWluLW11bHRpLWF1dG9cIj5cbiAgPGRpdiBjbGFzcz1cIm1hdC1maWVsZC13cmFwcGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImxhYmVsLWFuZC1hc3Rlcmlzay1jb250YWluZXJcIj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiIWZpZWxkLmhpZGVMYWJlbFwiIGNsYXNzPVwiY3VzdG9tLWxhYmVsXCIgaWQ9XCJsYWJlbC17eyBmaWVsZC5wcm9wZXJ0eSB9fVwiPlxuICAgICAgICB7eyBmaWVsZC5sYWJlbCEgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiZmllbGQucmVxdWlyZWQgJiYgIWZpZWxkLmhpZGVMYWJlbFwiIGNsYXNzPVwicmVxdWlyZWQtYXN0ZXJpc2tcIj4gKiA8L3NwYW4+XG4gICAgICA8c3BhbiAqbmdJZj1cIiFmaWVsZC5yZXF1aXJlZCAmJiAhZmllbGQuaGlkZUxhYmVsICYmICFmaWVsZC5yZWFkb25seVwiIGNsYXNzPVwib3B0aW9uYWwtdGV4dFwiPlxuICAgICAgICB7eyAnb3B0aW9uYWwnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwibXVsdGktc2VsZWN0LWNvbnRyb2xcIj5cbiAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImZ1bGwtd2lkdGggbXVsdGktYXV0b2NvbXBsZXRlLWZpZWxkXCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cbiAgICAgICAgPG1hdC1jaGlwLWxpc3Rib3ggI2NoaXBMaXN0IGNsYXNzPVwiY2hpcC1saXN0Ym94XCIgW3NlbGVjdGFibGVdPVwidHJ1ZVwiPlxuICAgICAgICAgIDxtYXQtY2hpcFxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc2VsZWN0ZWRJdGVtc1wiXG4gICAgICAgICAgICBjbGFzcz1cIm11bHRpLXNlbGVjdC1jaGlwXCJcbiAgICAgICAgICAgIFtyZW1vdmFibGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAocmVtb3ZlZCk9XCJyZW1vdmUoaXRlbSlcIj5cbiAgICAgICAgICAgIHt7IGl0ZW1OYW1lQnlMYWcoaXRlbSkgfX1cbiAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cIiFmaWVsZC5yZWFkb25seVwiIG1hdENoaXBSZW1vdmU+Y2FuY2VsPC9tYXQtaWNvbj5cbiAgICAgICAgICA8L21hdC1jaGlwPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgY2xhc3M9XCJjaGlwLWlucHV0IGFwcC1pbnB1dFwiXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBbaWRdPVwiZ2V0SWQoKVwiXG4gICAgICAgICAgICAjaXRlbUlucHV0XG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwibXVsdGlDb250cm9sXCJcbiAgICAgICAgICAgIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiXG4gICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInNob3dJbnB1dFBsYWNlaG9sZGVyID8gKGdldFBsYWNlaG9sZGVyS2V5KCkgfCB0cmFuc2xhdGUpIDogJydcIlxuICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICAgICAgICAgIFtyZXF1aXJlZF09XCJpc1JlcXVpcmVkXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbklucHV0Q2xpY2soYXV0b2NvbXBsZXRlVHJpZ2dlcik7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAoa2V5ZG93bik9XCJvbktleWRvd24oJGV2ZW50LCBhdXRvY29tcGxldGVUcmlnZ2VyKVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZmllbGQucmVhZG9ubHlcIlxuICAgICAgICAgICAgI2F1dG9jb21wbGV0ZVRyaWdnZXI9XCJtYXRBdXRvY29tcGxldGVUcmlnZ2VyXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCInbGFiZWwtJyArIGZpZWxkLnByb3BlcnR5XCI+XG4gICAgICAgIDwvbWF0LWNoaXAtbGlzdGJveD5cblxuICAgICAgICA8bWF0LWF1dG9jb21wbGV0ZVxuICAgICAgICAgICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCJcbiAgICAgICAgICBhdXRvQWN0aXZlRmlyc3RPcHRpb25cbiAgICAgICAgICBbZGlzcGxheVdpdGhdPVwiZGlzcGxheUZuXCJcbiAgICAgICAgICAob3B0aW9uU2VsZWN0ZWQpPVwic2VsZWN0ZWQoJGV2ZW50Lm9wdGlvbi52YWx1ZSlcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWZpZWxkLnJlYWRvbmx5XCI+XG4gICAgICAgICAgICA8bWF0LW9wdGlvblxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBsb29rdXBJdGVtcyQgfCBhc3luY1wiXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJpdGVtXCI+XG4gICAgICAgICAgICAgIHt7IGl0ZW1OYW1lQnlMYWcoaXRlbSkgfX1cbiAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJtdWx0aS1zZWxlY3QtYXJyb3ctdHJpZ2dlclwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJmaWVsZC5yZWFkb25seSB8fCByZWFkb25seVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0JBU0VfVEFCTEUub3Blbkxvb2t1cE9wdGlvbnMnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgW2F0dHIuaWRdPVwiJ211bHRpLXNlbGVjdC10cmlnZ2VyLScgKyBmaWVsZC5wcm9wZXJ0eVwiXG4gICAgICAgIChjbGljayk9XCJvblRyaWdnZXJDbGljaygkZXZlbnQsIGF1dG9jb21wbGV0ZVRyaWdnZXIpXCI+XG4gICAgICAgIDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZvY3VzYWJsZT1cImZhbHNlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgPHBhdGggZD1cIk03IDEwbDUgNSA1LTV6XCI+PC9wYXRoPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuIl19
|