@eui/components 17.2.1-snapshot-1708511616320 → 17.2.1
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/docs/components/EuiDateRangeSelectorComponent.html +25 -326
- package/docs/components/EuiTabsComponent.html +1 -1
- package/docs/dependencies.html +2 -2
- package/docs/js/search/search_index.js +2 -2
- package/esm2022/eui-date-range-selector/eui-date-range-selector.component.mjs +18 -44
- package/esm2022/eui-tabs/eui-tabs.component.mjs +3 -3
- package/eui-date-range-selector/eui-date-range-selector.component.d.ts +10 -16
- package/eui-date-range-selector/eui-date-range-selector.component.d.ts.map +1 -1
- package/fesm2022/eui-components-eui-date-range-selector.mjs +17 -43
- package/fesm2022/eui-components-eui-date-range-selector.mjs.map +1 -1
- package/fesm2022/eui-components-eui-tabs.mjs +2 -2
- package/fesm2022/eui-components-eui-tabs.mjs.map +1 -1
- package/package.json +30 -30
@@ -1,7 +1,6 @@
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
2
|
-
import { Component, EventEmitter, Input, Optional, Output, Self, ViewEncapsulation, } from '@angular/core';
|
2
|
+
import { Component, EventEmitter, Input, Optional, Output, Self, ViewEncapsulation, booleanAttribute, } from '@angular/core';
|
3
3
|
import { FormControl } from '@angular/forms';
|
4
|
-
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
5
4
|
import { Subject } from 'rxjs';
|
6
5
|
import { takeUntil } from 'rxjs/operators';
|
7
6
|
import * as i0 from "@angular/core";
|
@@ -15,36 +14,6 @@ import * as i7 from "@eui/components/eui-button";
|
|
15
14
|
import * as i8 from "@eui/components/eui-icon";
|
16
15
|
import * as i9 from "@eui/components/eui-input-text";
|
17
16
|
export class EuiDateRangeSelectorComponent {
|
18
|
-
get islongDateFormat() {
|
19
|
-
return this._islongDateFormat;
|
20
|
-
}
|
21
|
-
set islongDateFormat(value) {
|
22
|
-
this._islongDateFormat = coerceBooleanProperty(value);
|
23
|
-
}
|
24
|
-
get isClearable() {
|
25
|
-
return this._isClearable && !this._isReadOnly;
|
26
|
-
}
|
27
|
-
set isClearable(value) {
|
28
|
-
this._isClearable = coerceBooleanProperty(value);
|
29
|
-
}
|
30
|
-
get isReadOnly() {
|
31
|
-
return this._isReadOnly;
|
32
|
-
}
|
33
|
-
set isReadOnly(value) {
|
34
|
-
this._isReadOnly = coerceBooleanProperty(value);
|
35
|
-
}
|
36
|
-
get isDisabled() {
|
37
|
-
return this._isDisabled;
|
38
|
-
}
|
39
|
-
set isDisabled(value) {
|
40
|
-
this._isDisabled = coerceBooleanProperty(value);
|
41
|
-
}
|
42
|
-
get isResponsive() {
|
43
|
-
return this._isResponsive;
|
44
|
-
}
|
45
|
-
set isResponsive(value) {
|
46
|
-
this._isResponsive = coerceBooleanProperty(value);
|
47
|
-
}
|
48
17
|
constructor(translateService, localeService, adapter, control) {
|
49
18
|
this.translateService = translateService;
|
50
19
|
this.localeService = localeService;
|
@@ -59,11 +28,11 @@ export class EuiDateRangeSelectorComponent {
|
|
59
28
|
this.e2eAttr = 'eui-date-range-selector';
|
60
29
|
this.togglerIconSvg = 'eui-calendar-outline';
|
61
30
|
this.startView = 'month';
|
62
|
-
this.
|
63
|
-
this.
|
64
|
-
this.
|
65
|
-
this.
|
66
|
-
this.
|
31
|
+
this.islongDateFormat = false;
|
32
|
+
this.isClearable = false;
|
33
|
+
this.isReadOnly = false;
|
34
|
+
this.isDisabled = false;
|
35
|
+
this.isResponsive = false;
|
67
36
|
this.destroy$ = new Subject();
|
68
37
|
// eslint-disable-next-line @typescript-eslint/no-empty-function, @typescript-eslint/no-unused-vars
|
69
38
|
this.propagateChange = (_) => { };
|
@@ -204,7 +173,7 @@ export class EuiDateRangeSelectorComponent {
|
|
204
173
|
this.propagateTouched = fn;
|
205
174
|
}
|
206
175
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: EuiDateRangeSelectorComponent, deps: [{ token: i1.TranslateService }, { token: i2.LocaleService, optional: true }, { token: i3.DateAdapter }, { token: i4.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
207
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
176
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.0.8", type: EuiDateRangeSelectorComponent, selector: "eui-date-range-selector", inputs: { styleClass: "styleClass", e2eAttr: "e2eAttr", minDate: "minDate", maxDate: "maxDate", togglerIcon: "togglerIcon", togglerIconSvg: "togglerIconSvg", togglerLabel: "togglerLabel", firstInputPlaceholder: "firstInputPlaceholder", secondInputPlaceholder: "secondInputPlaceholder", firstInputAriaLabel: "firstInputAriaLabel", secondInputAriaLabel: "secondInputAriaLabel", startDateDefaultValue: "startDateDefaultValue", endDateDefaultValue: "endDateDefaultValue", comparisonStart: "comparisonStart", comparisonEnd: "comparisonEnd", startView: "startView", islongDateFormat: ["islongDateFormat", "islongDateFormat", booleanAttribute], isClearable: ["isClearable", "isClearable", booleanAttribute], isReadOnly: ["isReadOnly", "isReadOnly", booleanAttribute], isDisabled: ["isDisabled", "isDisabled", booleanAttribute], isResponsive: ["isResponsive", "isResponsive", booleanAttribute] }, outputs: { firstSelectedDate: "firstSelectedDate", secondSelectedDate: "secondSelectedDate" }, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"eui-date-range-selector {{ styleClass }}\"\n attr.data-e2e=\"{{ e2eAttr }}\"\n [class.eui-date-range-selector--responsive]=\"isResponsive\">\n <mat-date-range-input\n [class.mat-date-range-input--read-only]=\"isReadOnly\"\n [class.mat-date-range-input--disabled]=\"isDisabled\"\n [class.mat-date-range-input--invalid]=\"isInvalid && isTouched\"\n [rangePicker]=\"picker\"\n [min]=\"minDate\"\n [max]=\"maxDate\"\n [comparisonStart]=\"comparisonStart\"\n [comparisonEnd]=\"comparisonEnd\">\n <input\n class=\"eui-date-range-selector__start-date\"\n euiInputText\n [readonly]=\"isReadOnly\"\n matStartDate\n placeholder=\"{{ firstInputPlaceholder }}\"\n attr.aria-label=\"{{ firstInputAriaLabel }}\"\n [formControl]=\"startRangeFormControl\"\n (dateInput)=\"onFirstDateChange($event)\"\n [euiClearable]=\"isClearable\"\n (clear)=\"onFirstDateClear()\" />\n <input\n class=\"eui-date-range-selector__end-date\"\n euiInputText\n [readonly]=\"isReadOnly\"\n matEndDate\n placeholder=\"{{ secondInputPlaceholder }}\"\n attr.aria-label=\"{{ secondInputAriaLabel }}\"\n [formControl]=\"endRangeFormControl\"\n (dateInput)=\"onSecondDateChange($event)\"\n [euiClearable]=\"isClearable\"\n (clear)=\"onSecondDateClear()\" />\n </mat-date-range-input>\n <mat-date-range-picker #picker [startView]=\"startView\"> </mat-date-range-picker>\n <button\n *ngIf=\"!isReadOnly\"\n class=\"eui-date-range-selector__toggler eui-date-range-selector__toggler-{{ !togglerLabel ? 'icon' : 'label' }}\"\n (click)=\"picker.open()\"\n euiButton\n euiSecondary\n euiIconButton\n type=\"button\"\n [euiDisabled]=\"isDisabled\"\n aria-haspopup=\"dialog\">\n <span *ngIf=\"!togglerLabel && togglerIcon\" euiIcon aria-label=\"Open Calendar\" iconClass=\"{{ togglerIcon }}\"></span>\n <ng-container *ngIf=\"!togglerLabel && !togglerIcon\">\n <eui-icon-svg icon=\"{{ togglerIconSvg }}\" aria-label=\"Open Calendar\"></eui-icon-svg>\n </ng-container>\n <span *ngIf=\"togglerLabel\">{{ togglerLabel }}</span>\n </button>\n</div>\n", styles: ["eui-date-range-selector{display:flex;width:100%}.eui-date-range-selector{display:inline-flex;height:calc(var(--eui-base-spacing-2xl) + var(--eui-base-spacing-2xs))}.eui-date-range-selector--responsive{display:flex;width:100%}.eui-date-range-selector .mat-date-range-input{align-items:center;display:flex;height:calc(var(--eui-base-spacing-2xl) + var(--eui-base-spacing-2xs))}.eui-date-range-selector .mat-date-range-input .mat-date-range-input-container{align-items:center;display:flex;height:100%}.eui-date-range-selector .mat-date-range-input .mat-date-range-input-container .mat-date-range-input-wrapper{height:100%;width:calc(6.9 * var(--eui-base-spacing-m))}.eui-date-range-selector .mat-date-range-input .mat-date-range-input-container .mat-date-range-input-wrapper .eui-input-text{min-height:calc(var(--eui-base-spacing-2xl) + 2px)}.eui-date-range-selector.eui-date-range-selector--clearable .mat-date-range-input-wrapper{width:calc(8.5 * var(--eui-base-spacing-m))!important}.eui-date-range-selector.eui-date-range-selector--clearable .mat-date-range-input-wrapper .mat-date-range-input-inner{position:relative}.eui-date-range-selector--long-date-format .mat-date-range-input-wrapper{width:calc(12.5 * var(--eui-base-spacing-m))}.eui-date-range-selector .mat-date-range-input-separator.mat-date-range-input-separator-hidden{opacity:1}.eui-date-range-selector__toggler{border-bottom-left-radius:0;border-top-left-radius:0;border-left:none}.eui-date-range-selector__toggler-label{width:auto}.eui-date-range-selector .mat-date-range-input{align-items:center;display:flex;box-sizing:border-box;background:var(--eui-base-color-white);border:1px solid var(--eui-base-color-grey-50);border-radius:var(--eui-base-border-radius);border-bottom-right-radius:0;border-top-right-radius:0;text-align:center}.eui-date-range-selector .mat-date-range-input--read-only{background-color:transparent;border-color:transparent!important;box-shadow:none;height:inherit;padding:var(--eui-base-spacing-2xs) 0;pointer-events:none}.eui-date-range-selector .mat-date-range-input--read-only .mat-date-range-input-separator.mat-date-range-input-separator-hidden{opacity:0}.eui-date-range-selector .mat-date-range-input--disabled{background-image:none;box-shadow:none;cursor:not-allowed!important;opacity:var(--eui-base-disabled-opacity);background-color:var(--eui-base-color-grey-5);border:1px solid var(--eui-base-color-grey-25)}.eui-date-range-selector .mat-date-range-input--disabled input.eui-date-range-selector__start-date{border-right:none!important}.eui-date-range-selector .mat-date-range-input--disabled input.eui-date-range-selector__end-date{border-left:none!important}.eui-date-range-selector .mat-date-range-input--invalid{border:1px solid var(--eui-base-color-danger-100)}.eui-date-range-selector input.mat-date-range-input-inner{align-items:center;font: 400 1rem/1.25rem arial,sans-serif;appearance:none;background-color:inherit;border:hidden;color:var(--eui-base-color-grey-100);display:flex;padding:var(--eui-base-spacing-s);text-align:left;width:100%}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.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: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i6.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i6.MatStartDate, selector: "input[matStartDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i6.MatEndDate, selector: "input[matEndDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i6.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { kind: "component", type: i7.EuiButtonComponent, selector: "button[euiButton], a[euiButton]", inputs: ["e2eAttr", "id", "euiBasicButton", "euiButtonCall", "euiBlockButton", "isLoading", "euiIconButton", "euiLineWrap"], outputs: ["buttonClick"] }, { kind: "component", type: i8.EuiIconComponent, selector: "div[euiIcon], span[euiIcon], i[euiIcon], eui-icon", inputs: ["aria-label", "iconClass", "isLoading"] }, { kind: "component", type: i8.EuiIconSvgComponent, selector: "eui-icon-svg, span[euiIconSvg], i[euiIconSvg]", inputs: ["icon", "size", "fillColor", "set", "ariaLabelledby", "role", "style", "iconUrl", "transform", "aria-label", "ariaHidden", "focusable", "isLoading"] }, { kind: "component", type: i9.EuiInputTextComponent, selector: "input[euiInputText]", inputs: ["class", "isInvalid"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
208
177
|
}
|
209
178
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: EuiDateRangeSelectorComponent, decorators: [{
|
210
179
|
type: Component,
|
@@ -252,14 +221,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
|
|
252
221
|
}], startView: [{
|
253
222
|
type: Input
|
254
223
|
}], islongDateFormat: [{
|
255
|
-
type: Input
|
224
|
+
type: Input,
|
225
|
+
args: [{ transform: booleanAttribute }]
|
256
226
|
}], isClearable: [{
|
257
|
-
type: Input
|
227
|
+
type: Input,
|
228
|
+
args: [{ transform: booleanAttribute }]
|
258
229
|
}], isReadOnly: [{
|
259
|
-
type: Input
|
230
|
+
type: Input,
|
231
|
+
args: [{ transform: booleanAttribute }]
|
260
232
|
}], isDisabled: [{
|
261
|
-
type: Input
|
233
|
+
type: Input,
|
234
|
+
args: [{ transform: booleanAttribute }]
|
262
235
|
}], isResponsive: [{
|
263
|
-
type: Input
|
236
|
+
type: Input,
|
237
|
+
args: [{ transform: booleanAttribute }]
|
264
238
|
}] } });
|
265
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLWRhdGUtcmFuZ2Utc2VsZWN0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZXVpLWRhdGUtcmFuZ2Utc2VsZWN0b3IvZXVpLWRhdGUtcmFuZ2Utc2VsZWN0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZXVpLWRhdGUtcmFuZ2Utc2VsZWN0b3IvZXVpLWRhdGUtcmFuZ2Utc2VsZWN0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFFSCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFJTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLElBQUksRUFFSixpQkFBaUIsR0FDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixXQUFXLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5RSxPQUFPLEVBQUUscUJBQXFCLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFHNUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7O0FBVTNDLE1BQU0sT0FBTyw2QkFBNkI7SUEwQnRDLElBQ0ksZ0JBQWdCO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQ2xDLENBQUM7SUFDRCxJQUFJLGdCQUFnQixDQUFDLEtBQW1CO1FBQ3BDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsSUFDSSxXQUFXO1FBQ1gsT0FBTyxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUNsRCxDQUFDO0lBQ0QsSUFBSSxXQUFXLENBQUMsS0FBbUI7UUFDL0IsSUFBSSxDQUFDLFlBQVksR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNy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QUk7OzBCQUFJLFFBQVE7eUNBbEVYLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFDRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBRUUsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFFRixnQkFBZ0I7c0JBRG5CLEtBQUs7Z0JBU0YsV0FBVztzQkFEZCxLQUFLO2dCQVNGLFVBQVU7c0JBRGIsS0FBSztnQkFTRixVQUFVO3NCQURiLEtBQUs7Z0JBU0YsWUFBWTtzQkFEZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIENvbXBvbmVudCxcbiAgICBEb0NoZWNrLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgU2VsZixcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3JtQ29udHJvbCwgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0RGF0ZXBpY2tlcklucHV0RXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgQm9vbGVhbklucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IERhdGVBZGFwdGVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IExvY2FsZVNlcnZpY2UgfSBmcm9tICdAZXVpL2NvcmUnO1xuaW1wb3J0IHsgRXVpRGF0ZVJhbmdlU2VsZWN0b3JEYXRlcyB9IGZyb20gJy4vbW9kZWxzL2V1aS1kYXRlLXJhbmdlLXNlbGVjdG9yLWRhdGVzLm1vZGVsJztcbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZXVpLWRhdGUtcmFuZ2Utc2VsZWN0b3InLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9ldWktZGF0ZS1yYW5nZS1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vc3R5bGVzL19pbmRleC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgRXVpRGF0ZVJhbmdlU2VsZWN0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgRG9DaGVjayB7XG4gICAgc2VsZWN0ZWREYXRlczogRXVpRGF0ZVJhbmdlU2VsZWN0b3JEYXRlcyA9IHsgc3RhcnRSYW5nZTpudWxsLCBlbmRSYW5nZTogbnVsbCB9O1xuICAgIHB1YmxpYyBpc0ludmFsaWQ6IGJvb2xlYW47XG4gICAgcHVibGljIGlzVG91Y2hlZDogYm9vbGVhbjtcbiAgICBwdWJsaWMgc3RhcnRSYW5nZUZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XG4gICAgcHVibGljIGVuZFJhbmdlRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcblxuICAgIEBPdXRwdXQoKSBmaXJzdFNlbGVjdGVkRGF0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBPdXRwdXQoKSBzZWNvbmRTZWxlY3RlZERhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIEBJbnB1dCgpIHN0eWxlQ2xhc3MgPSAnJztcbiAgICBASW5wdXQoKSBlMmVBdHRyID0gJ2V1aS1kYXRlLXJhbmdlLXNlbGVjdG9yJztcbiAgICBASW5wdXQoKSBtaW5EYXRlOiBhbnk7XG4gICAgQElucHV0KCkgbWF4RGF0ZTogYW55O1xuICAgIEBJbnB1dCgpIHRvZ2dsZXJJY29uOiBzdHJpbmc7XG4gICAgQElucHV0KCkgdG9nZ2xlckljb25TdmcgPSAnZXVpLWNhbGVuZGFyLW91dGxpbmUnO1xuICAgIEBJbnB1dCgpIHRvZ2dsZXJMYWJlbDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGZpcnN0SW5wdXRQbGFjZWhvbGRlcjogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHNlY29uZElucHV0UGxhY2Vob2xkZXI6IHN0cmluZztcbiAgICBASW5wdXQoKSBmaXJzdElucHV0QXJpYUxhYmVsOiBzdHJpbmc7XG4gICAgQElucHV0KCkgc2Vjb25kSW5wdXRBcmlhTGFiZWw6IHN0cmluZztcbiAgICBASW5wdXQoKSBzdGFydERhdGVEZWZhdWx0VmFsdWU6IGFueTtcbiAgICBASW5wdXQoKSBlbmREYXRlRGVmYXVsdFZhbHVlOiBhbnk7XG4gICAgQElucHV0KCkgY29tcGFyaXNvblN0YXJ0OiBhbnk7XG4gICAgQElucHV0KCkgY29tcGFyaXNvbkVuZDogYW55O1xuICAgIEBJbnB1dCgpIHN0YXJ0VmlldzogJ21vbnRoJyB8ICd5ZWFyJyB8ICdtdWx0aS15ZWFyJyA9ICdtb250aCc7XG4gICAgQElucHV0KClcbiAgICBnZXQgaXNsb25nRGF0ZUZvcm1hdCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzbG9uZ0RhdGVGb3JtYXQ7XG4gICAgfVxuICAgIHNldCBpc2xvbmdEYXRlRm9ybWF0KHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNsb25nRGF0ZUZvcm1hdCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2lzbG9uZ0RhdGVGb3JtYXQgPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBpc0NsZWFyYWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzQ2xlYXJhYmxlICYmICF0aGlzLl9pc1JlYWRPbmx5O1xuICAgIH1cbiAgICBzZXQgaXNDbGVhcmFibGUodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9pc0NsZWFyYWJsZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2lzQ2xlYXJhYmxlID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgaXNSZWFkT25seSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzUmVhZE9ubHk7XG4gICAgfVxuICAgIHNldCBpc1JlYWRPbmx5KHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNSZWFkT25seSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2lzUmVhZE9ubHkgPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBpc0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNEaXNhYmxlZDtcbiAgICB9XG4gICAgc2V0IGlzRGlzYWJsZWQodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9pc0Rpc2FibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaXNEaXNhYmxlZCA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGlzUmVzcG9uc2l2ZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzUmVzcG9uc2l2ZTtcbiAgICB9XG4gICAgc2V0IGlzUmVzcG9uc2l2ZSh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2lzUmVzcG9uc2l2ZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2lzUmVzcG9uc2l2ZSA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBkZXN0cm95JDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpIHByb3RlY3RlZCBsb2NhbGVTZXJ2aWNlOiBMb2NhbGVTZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgYWRhcHRlcjogRGF0ZUFkYXB0ZXI8YW55PixcbiAgICAgICAgQFNlbGYoKSBAT3B0aW9uYWwoKSBwcm90ZWN0ZWQgY29udHJvbDogTmdDb250cm9sLFxuICAgICkge1xuICAgICAgICBpZiAodGhpcy5jb250cm9sKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5sb2NhbGVTZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0U3RhdGUoKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoc3RhdGUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmFkYXB0ZXIuc2V0TG9jYWxlKHN0YXRlLmlkKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuc3RhcnRSYW5nZUZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKHsgdmFsdWU6IHRoaXMuc3RhcnREYXRlRGVmYXVsdFZhbHVlLCBkaXNhYmxlZDogdGhpcy5pc0Rpc2FibGVkIH0pO1xuICAgICAgICB0aGlzLmVuZFJhbmdlRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woeyB2YWx1ZTogdGhpcy5lbmREYXRlRGVmYXVsdFZhbHVlLCBkaXNhYmxlZDogdGhpcy5pc0Rpc2FibGVkIH0pO1xuXG4gICAgICAgIGlmICghdGhpcy5maXJzdElucHV0UGxhY2Vob2xkZXIpIHtcbiAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZVxuICAgICAgICAgICAgICAgIC5zdHJlYW0oJ2V1aS5kYXRlcmFuZ2VzZWxlY3Rvci5GSVJTVFBJQ0tFUlNMQUJFTCcpXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlyc3RJbnB1dFBsYWNlaG9sZGVyID0gcmVzdWx0O1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIGJ5IHNldHRpbmcgdGhlIGZpcnN0SW5wdXRBcmlhTGFiZWwgdG8gZGQvbW0veXl5eShvciB0aGUgZGVzaXJlZCBmb3JtYXQpIHRoZSBmb3JtYXQgY2FuIGJlIGFubm91bmNlZCB0byB0aGUgc2NyZWVuIHJlYWRlciB1c2VycyBiZWZvcmUgdGhlIHVzZXJzIHN0YXJ0IHR5cGluZ1xuICAgICAgICBpZiAoIXRoaXMuZmlyc3RJbnB1dEFyaWFMYWJlbCkge1xuICAgICAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlXG4gICAgICAgICAgICAgICAgLnN0cmVhbSgnZXVpLmRhdGVyYW5nZXNlbGVjdG9yLkZJUlNUUElDS0VSU1BMQUNFSE9MREVSJylcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maXJzdElucHV0QXJpYUxhYmVsID0gcmVzdWx0O1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5zZWNvbmRJbnB1dFBsYWNlaG9sZGVyKSB7XG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2VcbiAgICAgICAgICAgICAgICAuc3RyZWFtKCdldWkuZGF0ZXJhbmdlc2VsZWN0b3IuU0VDT05EUElDS0VSU0xBQkVMJylcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWNvbmRJbnB1dFBsYWNlaG9sZGVyID0gcmVzdWx0O1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIGJ5IHNldHRpbmcgdGhlIHNlY29uZElucHV0QXJpYUxhYmVsIHRvIGRkL21tL3l5eXkob3IgdGhlIGRlc2lyZWQgZm9ybWF0KSB0aGUgZm9ybWF0IGNhbiBiZSBhbm5vdW5jZWQgdG8gdGhlIHNjcmVlbiByZWFkZXIgdXNlcnMgYmVmb3JlIHRoZSB1c2VycyBzdGFydCB0eXBpbmdcbiAgICAgICAgaWYgKCF0aGlzLnNlY29uZElucHV0QXJpYUxhYmVsKSB7XG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2VcbiAgICAgICAgICAgICAgICAuc3RyZWFtKCdldWkuZGF0ZXJhbmdlc2VsZWN0b3IuU0VDT05EUElDS0VSU1BMQUNFSE9MREVSJylcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWNvbmRJbnB1dEFyaWFMYWJlbCA9IHJlc3VsdDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nRG9DaGVjaygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbCkge1xuICAgICAgICAgICAgLy8gbWFya3MgdGhlIGlucHV0IGNvbnRyb2xzIGFzIHRvdWNoZWQvaW52YWxpZCBpZiB0aGUgZm9ybSBjb250cm9sIGlzIHRvdWNoZWQvaW52YWxpZFxuICAgICAgICAgICAgdGhpcy5jb250cm9sPy50b3VjaGVkID8gdGhpcy5zdGFydFJhbmdlRm9ybUNvbnRyb2w/Lm1hcmtBc1RvdWNoZWQoKSA6IHRoaXMuc3RhcnRSYW5nZUZvcm1Db250cm9sLm1hcmtBc1VudG91Y2hlZCgpO1xuICAgICAgICAgICAgdGhpcy5jb250cm9sPy50b3VjaGVkID8gdGhpcy5lbmRSYW5nZUZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKSA6IHRoaXMuZW5kUmFuZ2VGb3JtQ29udHJvbD8ubWFya0FzVW50b3VjaGVkKCk7XG4gICAgICAgICAgICB0aGlzLmNvbnRyb2w/LnRvdWNoZWQgPyAodGhpcy5pc1RvdWNoZWQgPSB0cnVlKSA6ICh0aGlzLmlzVG91Y2hlZCA9IGZhbHNlKTtcbiAgICAgICAgICAgIHRoaXMuY29udHJvbD8uaW52YWxpZCA/IHRoaXMuc3RhcnRSYW5nZUZvcm1Db250cm9sLnNldEVycm9ycyh0aGlzLmNvbnRyb2wuZXJyb3JzKSA6IHRoaXMuc3RhcnRSYW5nZUZvcm1Db250cm9sLnNldEVycm9ycyhudWxsKTtcbiAgICAgICAgICAgIHRoaXMuY29udHJvbD8uaW52YWxpZCA/IHRoaXMuZW5kUmFuZ2VGb3JtQ29udHJvbC5zZXRFcnJvcnModGhpcy5jb250cm9sLmVycm9ycykgOiB0aGlzLmVuZFJhbmdlRm9ybUNvbnRyb2wuc2V0RXJyb3JzKG51bGwpO1xuICAgICAgICAgICAgdGhpcy5jb250cm9sPy5pbnZhbGlkID8gKHRoaXMuaXNJbnZhbGlkID0gdHJ1ZSkgOiAodGhpcy5pc0ludmFsaWQgPSBmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzbG9uZ0RhdGVGb3JtYXQpIHtcbiAgICAgICAgICAgIHRoaXMuc3R5bGVDbGFzcyArPSAnZXVpLWRhdGUtcmFuZ2Utc2VsZWN0b3ItLWxvbmctZGF0ZS1mb3JtYXQnO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzQ2xlYXJhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLnN0eWxlQ2xhc3MgKz0gJ2V1aS1kYXRlLXJhbmdlLXNlbGVjdG9yLS1jbGVhcmFibGUnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlcyAmJiBjaGFuZ2VzWydzdGFydERhdGVEZWZhdWx0VmFsdWUnXSkge1xuICAgICAgICAgICAgdGhpcy5zdGFydFJhbmdlRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5zdGFydERhdGVEZWZhdWx0VmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaGFuZ2VzICYmIGNoYW5nZXNbJ2VuZERhdGVEZWZhdWx0VmFsdWUnXSkge1xuICAgICAgICAgICAgdGhpcy5lbmRSYW5nZUZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMuZW5kRGF0ZURlZmF1bHRWYWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2hhbmdlcyAmJiBjaGFuZ2VzWydpc0Rpc2FibGVkJ10pIHtcbiAgICAgICAgICAgIHRoaXMuc2V0RGlzYWJsZWRTdGF0ZSh0aGlzLmlzRGlzYWJsZWQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkZpcnN0RGF0ZUNoYW5nZShlOiBNYXREYXRlcGlja2VySW5wdXRFdmVudDxhbnk+KTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlcy5zdGFydFJhbmdlID0gZS52YWx1ZTtcbiAgICAgICAgdGhpcy5maXJzdFNlbGVjdGVkRGF0ZS5lbWl0KGUudmFsdWUpO1xuICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLnNlbGVjdGVkRGF0ZXMpO1xuICAgICAgICB0aGlzLnByb3BhZ2F0ZVRvdWNoZWQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25TZWNvbmREYXRlQ2hhbmdlKGU6IE1hdERhdGVwaWNrZXJJbnB1dEV2ZW50PGFueT4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVzLmVuZFJhbmdlID0gZS52YWx1ZTtcbiAgICAgICAgdGhpcy5zZWNvbmRTZWxlY3RlZERhdGUuZW1pdChlLnZhbHVlKTtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5zZWxlY3RlZERhdGVzKTtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVUb3VjaGVkKCk7XG4gICAgfVxuXG4gICAgb25GaXJzdERhdGVDbGVhcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVzLnN0YXJ0UmFuZ2UgPSBudWxsO1xuICAgICAgICB0aGlzLmZpcnN0U2VsZWN0ZWREYXRlLmVtaXQobnVsbCk7XG4gICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMuc2VsZWN0ZWREYXRlcyk7XG4gICAgfVxuICAgIG9uU2Vjb25kRGF0ZUNsZWFyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZXMuZW5kUmFuZ2UgPSBudWxsO1xuICAgICAgICB0aGlzLnNlY29uZFNlbGVjdGVkRGF0ZS5lbWl0KG51bGwpO1xuICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLnNlbGVjdGVkRGF0ZXMpO1xuICAgIH1cblxuICAgIHdyaXRlVmFsdWUodmFsdWVzOiBFdWlEYXRlUmFuZ2VTZWxlY3RvckRhdGVzKTogdm9pZCB7XG4gICAgICAgIGlmICh2YWx1ZXMgJiYgdmFsdWVzLnN0YXJ0UmFuZ2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdzdGFydFJhbmdlIG9mIEV1aURhdGVSYW5nZVNlbGVjdG9yRGF0ZXMgbW9kZWwgbXVzdCBiZSBkZWZpbmVkJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlcyAmJiB2YWx1ZXMuZW5kUmFuZ2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdlbmRSYW5nZSBvZiBFdWlEYXRlUmFuZ2VTZWxlY3RvckRhdGVzIG1vZGVsIG11c3QgYmUgZGVmaW5lZCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zdGFydERhdGVEZWZhdWx0VmFsdWUgPSB2YWx1ZXM/LnN0YXJ0UmFuZ2U7XG4gICAgICAgIHRoaXMuZW5kRGF0ZURlZmF1bHRWYWx1ZSA9IHZhbHVlcz8uZW5kUmFuZ2U7XG4gICAgICAgIHRoaXMuc3RhcnRSYW5nZUZvcm1Db250cm9sLnNldFZhbHVlKHZhbHVlcz8uc3RhcnRSYW5nZSk7XG4gICAgICAgIHRoaXMuZW5kUmFuZ2VGb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZXM/LmVuZFJhbmdlKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVzID0gdmFsdWVzIHx8IHsgc3RhcnRSYW5nZTpudWxsLCBlbmRSYW5nZTogbnVsbCB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNEaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgICAgIGlmICh0aGlzLmlzRGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhcnRSYW5nZUZvcm1Db250cm9sLmRpc2FibGUoKTtcbiAgICAgICAgICAgIHRoaXMuZW5kUmFuZ2VGb3JtQ29udHJvbC5kaXNhYmxlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0UmFuZ2VGb3JtQ29udHJvbC5lbmFibGUoKTtcbiAgICAgICAgICAgIHRoaXMuZW5kUmFuZ2VGb3JtQ29udHJvbC5lbmFibGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVUb3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvbiwgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgcHJpdmF0ZSBwcm9wYWdhdGVDaGFuZ2UgPSAoXzogYW55KTogdm9pZCA9PiB7fTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgICBwcml2YXRlIHByb3BhZ2F0ZVRvdWNoZWQgPSAoKTogdm9pZCA9PiB7fTtcbn1cbiIsIjxkaXZcbiAgICBjbGFzcz1cImV1aS1kYXRlLXJhbmdlLXNlbGVjdG9yIHt7IHN0eWxlQ2xhc3MgfX1cIlxuICAgIGF0dHIuZGF0YS1lMmU9XCJ7eyBlMmVBdHRyIH19XCJcbiAgICBbY2xhc3MuZXVpLWRhdGUtcmFuZ2Utc2VsZWN0b3ItLXJlc3BvbnNpdmVdPVwiaXNSZXNwb25zaXZlXCI+XG4gICAgPG1hdC1kYXRlLXJhbmdlLWlucHV0XG4gICAgICAgIFtjbGFzcy5tYXQtZGF0ZS1yYW5nZS1pbnB1dC0tcmVhZC1vbmx5XT1cImlzUmVhZE9ubHlcIlxuICAgICAgICBbY2xhc3MubWF0LWRhdGUtcmFuZ2UtaW5wdXQtLWRpc2FibGVkXT1cImlzRGlzYWJsZWRcIlxuICAgICAgICBbY2xhc3MubWF0LWRhdGUtcmFuZ2UtaW5wdXQtLWludmFsaWRdPVwiaXNJbnZhbGlkICYmIGlzVG91Y2hlZFwiXG4gICAgICAgIFtyYW5nZVBpY2tlcl09XCJwaWNrZXJcIlxuICAgICAgICBbbWluXT1cIm1pbkRhdGVcIlxuICAgICAgICBbbWF4XT1cIm1heERhdGVcIlxuICAgICAgICBbY29tcGFyaXNvblN0YXJ0XT1cImNvbXBhcmlzb25TdGFydFwiXG4gICAgICAgIFtjb21wYXJpc29uRW5kXT1cImNvbXBhcmlzb25FbmRcIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBjbGFzcz1cImV1aS1kYXRlLXJhbmdlLXNlbGVjdG9yX19zdGFydC1kYXRlXCJcbiAgICAgICAgICAgIGV1aUlucHV0VGV4dFxuICAgICAgICAgICAgW3JlYWRvbmx5XT1cImlzUmVhZE9ubHlcIlxuICAgICAgICAgICAgbWF0U3RhcnREYXRlXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IGZpcnN0SW5wdXRQbGFjZWhvbGRlciB9fVwiXG4gICAgICAgICAgICBhdHRyLmFyaWEtbGFiZWw9XCJ7eyBmaXJzdElucHV0QXJpYUxhYmVsIH19XCJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJzdGFydFJhbmdlRm9ybUNvbnRyb2xcIlxuICAgICAgICAgICAgKGRhdGVJbnB1dCk9XCJvbkZpcnN0RGF0ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIFtldWlDbGVhcmFibGVdPVwiaXNDbGVhcmFibGVcIlxuICAgICAgICAgICAgKGNsZWFyKT1cIm9uRmlyc3REYXRlQ2xlYXIoKVwiIC8+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgY2xhc3M9XCJldWktZGF0ZS1yYW5nZS1zZWxlY3Rvcl9fZW5kLWRhdGVcIlxuICAgICAgICAgICAgZXVpSW5wdXRUZXh0XG4gICAgICAgICAgICBbcmVhZG9ubHldPVwiaXNSZWFkT25seVwiXG4gICAgICAgICAgICBtYXRFbmREYXRlXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IHNlY29uZElucHV0UGxhY2Vob2xkZXIgfX1cIlxuICAgICAgICAgICAgYXR0ci5hcmlhLWxhYmVsPVwie3sgc2Vjb25kSW5wdXRBcmlhTGFiZWwgfX1cIlxuICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImVuZFJhbmdlRm9ybUNvbnRyb2xcIlxuICAgICAgICAgICAgKGRhdGVJbnB1dCk9XCJvblNlY29uZERhdGVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICBbZXVpQ2xlYXJhYmxlXT1cImlzQ2xlYXJhYmxlXCJcbiAgICAgICAgICAgIChjbGVhcik9XCJvblNlY29uZERhdGVDbGVhcigpXCIgLz5cbiAgICA8L21hdC1kYXRlLXJhbmdlLWlucHV0PlxuICAgIDxtYXQtZGF0ZS1yYW5nZS1waWNrZXIgI3BpY2tlciBbc3RhcnRWaWV3XT1cInN0YXJ0Vmlld1wiPiA8L21hdC1kYXRlLXJhbmdlLXBpY2tlcj5cbiAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwiIWlzUmVhZE9ubHlcIlxuICAgICAgICBjbGFzcz1cImV1aS1kYXRlLXJhbmdlLXNlbGVjdG9yX190b2dnbGVyIGV1aS1kYXRlLXJhbmdlLXNlbGVjdG9yX190b2dnbGVyLXt7ICF0b2dnbGVyTGFiZWwgPyAnaWNvbicgOiAnbGFiZWwnIH19XCJcbiAgICAgICAgKGNsaWNrKT1cInBpY2tlci5vcGVuKClcIlxuICAgICAgICBldWlCdXR0b25cbiAgICAgICAgZXVpU2Vjb25kYXJ5XG4gICAgICAgIGV1aUljb25CdXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIFtldWlEaXNhYmxlZF09XCJpc0Rpc2FibGVkXCJcbiAgICAgICAgYXJpYS1oYXNwb3B1cD1cImRpYWxvZ1wiPlxuICAgICAgICA8c3BhbiAqbmdJZj1cIiF0b2dnbGVyTGFiZWwgJiYgdG9nZ2xlckljb25cIiBldWlJY29uIGFyaWEtbGFiZWw9XCJPcGVuIENhbGVuZGFyXCIgaWNvbkNsYXNzPVwie3sgdG9nZ2xlckljb24gfX1cIj48L3NwYW4+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhdG9nZ2xlckxhYmVsICYmICF0b2dnbGVySWNvblwiPlxuICAgICAgICAgICAgPGV1aS1pY29uLXN2ZyBpY29uPVwie3sgdG9nZ2xlckljb25TdmcgfX1cIiBhcmlhLWxhYmVsPVwiT3BlbiBDYWxlbmRhclwiPjwvZXVpLWljb24tc3ZnPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJ0b2dnbGVyTGFiZWxcIj57eyB0b2dnbGVyTGFiZWwgfX08L3NwYW4+XG4gICAgPC9idXR0b24+XG48L2Rpdj5cbiJdfQ==
|
239
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLWRhdGUtcmFuZ2Utc2VsZWN0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZXVpLWRhdGUtcmFuZ2Utc2VsZWN0b3IvZXVpLWRhdGUtcmFuZ2Utc2VsZWN0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZXVpLWRhdGUtcmFuZ2Utc2VsZWN0b3IvZXVpLWRhdGUtcmFuZ2Utc2VsZWN0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFFSCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFJTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLElBQUksRUFFSixpQkFBaUIsRUFDakIsZ0JBQWdCLEdBQ25CLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsV0FBVyxFQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFLOUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7O0FBVTNDLE1BQU0sT0FBTyw2QkFBNkI7SUFrQ3RDLFlBQ2MsZ0JBQWtDLEVBQ3RCLGFBQTRCLEVBQ3hDLE9BQXlCLEVBQ0wsT0FBa0I7UUFIdEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUN0QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUN4QyxZQUFPLEdBQVAsT0FBTyxDQUFrQjtRQUNMLFlBQU8sR0FBUCxPQUFPLENBQVc7UUFyQ3BELGtCQUFhLEdBQThCLEVBQUUsVUFBVSxFQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFHeEUsMEJBQXFCLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUMxQyx3QkFBbUIsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBRXJDLHNCQUFpQixHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDNUMsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUU5QyxlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLFlBQU8sR0FBRyx5QkFBeUIsQ0FBQztRQUlwQyxtQkFBYyxHQUFHLHNCQUFzQixDQUFDO1FBVXhDLGNBQVMsR0FBb0MsT0FBTyxDQUFDO1FBQ3ZCLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUN6QixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFFcEQsYUFBUSxHQUFxQixJQUFJLE9BQU8sRUFBVyxDQUFDO1FBOEo1RCxtR0FBbUc7UUFDM0Ysb0JBQWUsR0FBRyxDQUFDLENBQU0sRUFBUSxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBRS9DLGdFQUFnRTtRQUN4RCxxQkFBZ0IsR0FBRyxHQUFTLEVBQUUsR0FBRSxDQUFDLENBQUM7UUExSnRDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNkLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztTQUNyQztJQUNMLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLGFBQWE7YUFDYixRQUFRLEVBQUU7YUFDVixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUM5QixTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNqQixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDckMsQ0FBQyxDQUFDLENBQUM7UUFFUCxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxXQUFXLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUMvRyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxXQUFXLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUUzRyxJQUFJLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFO1lBQzdCLElBQUksQ0FBQyxnQkFBZ0I7aUJBQ2hCLE1BQU0sQ0FBQyx5Q0FBeUMsQ0FBQztpQkFDakQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7aUJBQzlCLFNBQVMsQ0FBQyxDQUFDLE1BQWMsRUFBRSxFQUFFO2dCQUMxQixJQUFJLENBQUMscUJBQXFCLEdBQUcsTUFBTSxDQUFDO1lBQ3hDLENBQUMsQ0FBQyxDQUFDO1NBQ1Y7UUFDRCwrSkFBK0o7UUFDL0osSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtZQUMzQixJQUFJLENBQUMsZ0JBQWdCO2lCQUNoQixNQUFNLENBQUMsK0NBQStDLENBQUM7aUJBQ3ZELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2lCQUM5QixTQUFTLENBQUMsQ0FBQyxNQUFjLEVBQUUsRUFBRTtnQkFDMUIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLE1BQU0sQ0FBQztZQUN0QyxDQUFDLENBQUMsQ0FBQztTQUNWO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtZQUM5QixJQUFJLENBQUMsZ0JBQWdCO2lCQUNoQixNQUFNLENBQUMsMENBQTBDLENBQUM7aUJBQ2xELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2lCQUM5QixTQUFTLENBQUMsQ0FBQyxNQUFjLEVBQUUsRUFBRTtnQkFDMUIsSUFBSSxDQUFDLHNCQUFzQixHQUFHLE1BQU0sQ0FBQztZQUN6QyxDQUFDLENBQUMsQ0FBQztTQUNWO1FBQ0QsZ0tBQWdLO1FBQ2hLLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUU7WUFDNUIsSUFBSSxDQUFDLGdCQUFnQjtpQkFDaEIsTUFBTSxDQUFDLGdEQUFnRCxDQUFDO2lCQUN4RCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztpQkFDOUIsU0FBUyxDQUFDLENBQUMsTUFBYyxFQUFFLEVBQUU7Z0JBQzFCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxNQUFNLENBQUM7WUFDdkMsQ0FBQyxDQUFDLENBQUM7U0FDVjtJQUNMLENBQUM7SUFFRCxTQUFTO1FBQ0wsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2QscUZBQXFGO1lBQ3JGLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUNuSCxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLENBQUM7WUFDL0csSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxDQUFDO1lBQzNFLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDL0gsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMzSCxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLENBQUM7U0FDOUU7SUFDTCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2QsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDdkIsSUFBSSxDQUFDLFVBQVUsSUFBSSwyQ0FBMkMsQ0FBQztTQUNsRTtRQUNELElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNsQixJQUFJLENBQUMsVUFBVSxJQUFJLG9DQUFvQyxDQUFDO1NBQzNEO0lBQ0wsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUM5QixJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsdUJBQXVCLENBQUMsRUFBRTtZQUM3QyxJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1NBQ25FO1FBQ0QsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLHFCQUFxQixDQUFDLEVBQUU7WUFDM0MsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztTQUMvRDtRQUVELElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUNsQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQzFDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxDQUErQjtRQUNwRCxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFTSxrQkFBa0IsQ0FBQyxDQUErQjtRQUNyRCxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxnQkFBZ0I7UUFDWixJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDckMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBQ0QsaUJBQWlCO1FBQ2IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ25DLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELFVBQVUsQ0FBQyxNQUFpQztRQUN4QyxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsVUFBVSxLQUFLLFNBQVMsRUFBRTtZQUMzQyxNQUFNLElBQUksS0FBSyxDQUFDLCtEQUErRCxDQUFDLENBQUM7U0FDcEY7UUFDRCxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsUUFBUSxLQUFLLFNBQVMsRUFBRTtZQUN6QyxNQUFNLElBQUksS0FBSyxDQUFDLDZEQUE2RCxDQUFDLENBQUM7U0FDbEY7UUFFRCxJQUFJLENBQUMscUJBQXFCLEdBQUcsTUFBTSxFQUFFLFVBQVUsQ0FBQztRQUNoRCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsTUFBTSxFQUFFLFFBQVEsQ0FBQztRQUM1QyxJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sSUFBSSxFQUFFLFVBQVUsRUFBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQ3ZFLENBQUM7SUFFTSxnQkFBZ0IsQ0FBRSxVQUFtQjtRQUN4QyxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDakIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUN0QzthQUFNO1lBQ0gsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUNyQztJQUNMLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxFQUFPO1FBQ3BCLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxFQUFPO1FBQ3JCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7SUFDL0IsQ0FBQztpSUE1TFEsNkJBQTZCO3FIQUE3Qiw2QkFBNkIsa3BCQTBCbEIsZ0JBQWdCLCtDQUNoQixnQkFBZ0IsNENBQ2hCLGdCQUFnQiw0Q0FDaEIsZ0JBQWdCLGtEQUNoQixnQkFBZ0IsaUpDL0R4QywwM0VBc0RBOzsyRkRyQmEsNkJBQTZCO2tCQU56QyxTQUFTOytCQUNJLHlCQUF5QixpQkFHcEIsaUJBQWlCLENBQUMsSUFBSTs7MEJBc0NoQyxRQUFROzswQkFFUixJQUFJOzswQkFBSSxRQUFRO3lDQS9CWCxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csa0JBQWtCO3NCQUEzQixNQUFNO2dCQUVFLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNHLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ2lDLGdCQUFnQjtzQkFBdEQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDQyxXQUFXO3NCQUFqRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUNDLFVBQVU7c0JBQWhELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ0MsVUFBVTtzQkFBaEQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDQyxZQUFZO3NCQUFsRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIENvbXBvbmVudCxcbiAgICBEb0NoZWNrLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgU2VsZixcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIGJvb2xlYW5BdHRyaWJ1dGUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Db250cm9sLCBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXREYXRlcGlja2VySW5wdXRFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXInO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5LCBCb29sZWFuSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgRGF0ZUFkYXB0ZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgTG9jYWxlU2VydmljZSB9IGZyb20gJ0BldWkvY29yZSc7XG5pbXBvcnQgeyBFdWlEYXRlUmFuZ2VTZWxlY3RvckRhdGVzIH0gZnJvbSAnLi9tb2RlbHMvZXVpLWRhdGUtcmFuZ2Utc2VsZWN0b3ItZGF0ZXMubW9kZWwnO1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdldWktZGF0ZS1yYW5nZS1zZWxlY3RvcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2V1aS1kYXRlLXJhbmdlLXNlbGVjdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zdHlsZXMvX2luZGV4LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBFdWlEYXRlUmFuZ2VTZWxlY3RvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBEb0NoZWNrIHtcbiAgICBzZWxlY3RlZERhdGVzOiBFdWlEYXRlUmFuZ2VTZWxlY3RvckRhdGVzID0geyBzdGFydFJhbmdlOm51bGwsIGVuZFJhbmdlOiBudWxsIH07XG4gICAgcHVibGljIGlzSW52YWxpZDogYm9vbGVhbjtcbiAgICBwdWJsaWMgaXNUb3VjaGVkOiBib29sZWFuO1xuICAgIHB1YmxpYyBzdGFydFJhbmdlRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcbiAgICBwdWJsaWMgZW5kUmFuZ2VGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xuXG4gICAgQE91dHB1dCgpIGZpcnN0U2VsZWN0ZWREYXRlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgQE91dHB1dCgpIHNlY29uZFNlbGVjdGVkRGF0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgQElucHV0KCkgc3R5bGVDbGFzcyA9ICcnO1xuICAgIEBJbnB1dCgpIGUyZUF0dHIgPSAnZXVpLWRhdGUtcmFuZ2Utc2VsZWN0b3InO1xuICAgIEBJbnB1dCgpIG1pbkRhdGU6IGFueTtcbiAgICBASW5wdXQoKSBtYXhEYXRlOiBhbnk7XG4gICAgQElucHV0KCkgdG9nZ2xlckljb246IHN0cmluZztcbiAgICBASW5wdXQoKSB0b2dnbGVySWNvblN2ZyA9ICdldWktY2FsZW5kYXItb3V0bGluZSc7XG4gICAgQElucHV0KCkgdG9nZ2xlckxhYmVsOiBzdHJpbmc7XG4gICAgQElucHV0KCkgZmlyc3RJbnB1dFBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gICAgQElucHV0KCkgc2Vjb25kSW5wdXRQbGFjZWhvbGRlcjogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGZpcnN0SW5wdXRBcmlhTGFiZWw6IHN0cmluZztcbiAgICBASW5wdXQoKSBzZWNvbmRJbnB1dEFyaWFMYWJlbDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHN0YXJ0RGF0ZURlZmF1bHRWYWx1ZTogYW55O1xuICAgIEBJbnB1dCgpIGVuZERhdGVEZWZhdWx0VmFsdWU6IGFueTtcbiAgICBASW5wdXQoKSBjb21wYXJpc29uU3RhcnQ6IGFueTtcbiAgICBASW5wdXQoKSBjb21wYXJpc29uRW5kOiBhbnk7XG4gICAgQElucHV0KCkgc3RhcnRWaWV3OiAnbW9udGgnIHwgJ3llYXInIHwgJ211bHRpLXllYXInID0gJ21vbnRoJztcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlpc2xvbmdEYXRlRm9ybWF0ID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0paXNDbGVhcmFibGUgPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlpc1JlYWRPbmx5ID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0paXNEaXNhYmxlZCA9IGZhbHNlO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KWlzUmVzcG9uc2l2ZSA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBkZXN0cm95JDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpIHByb3RlY3RlZCBsb2NhbGVTZXJ2aWNlOiBMb2NhbGVTZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgYWRhcHRlcjogRGF0ZUFkYXB0ZXI8YW55PixcbiAgICAgICAgQFNlbGYoKSBAT3B0aW9uYWwoKSBwcm90ZWN0ZWQgY29udHJvbDogTmdDb250cm9sLFxuICAgICkge1xuICAgICAgICBpZiAodGhpcy5jb250cm9sKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5sb2NhbGVTZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0U3RhdGUoKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoc3RhdGUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmFkYXB0ZXIuc2V0TG9jYWxlKHN0YXRlLmlkKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuc3RhcnRSYW5nZUZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKHsgdmFsdWU6IHRoaXMuc3RhcnREYXRlRGVmYXVsdFZhbHVlLCBkaXNhYmxlZDogdGhpcy5pc0Rpc2FibGVkIH0pO1xuICAgICAgICB0aGlzLmVuZFJhbmdlRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woeyB2YWx1ZTogdGhpcy5lbmREYXRlRGVmYXVsdFZhbHVlLCBkaXNhYmxlZDogdGhpcy5pc0Rpc2FibGVkIH0pO1xuXG4gICAgICAgIGlmICghdGhpcy5maXJzdElucHV0UGxhY2Vob2xkZXIpIHtcbiAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZVxuICAgICAgICAgICAgICAgIC5zdHJlYW0oJ2V1aS5kYXRlcmFuZ2VzZWxlY3Rvci5GSVJTVFBJQ0tFUlNMQUJFTCcpXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlyc3RJbnB1dFBsYWNlaG9sZGVyID0gcmVzdWx0O1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIGJ5IHNldHRpbmcgdGhlIGZpcnN0SW5wdXRBcmlhTGFiZWwgdG8gZGQvbW0veXl5eShvciB0aGUgZGVzaXJlZCBmb3JtYXQpIHRoZSBmb3JtYXQgY2FuIGJlIGFubm91bmNlZCB0byB0aGUgc2NyZWVuIHJlYWRlciB1c2VycyBiZWZvcmUgdGhlIHVzZXJzIHN0YXJ0IHR5cGluZ1xuICAgICAgICBpZiAoIXRoaXMuZmlyc3RJbnB1dEFyaWFMYWJlbCkge1xuICAgICAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlXG4gICAgICAgICAgICAgICAgLnN0cmVhbSgnZXVpLmRhdGVyYW5nZXNlbGVjdG9yLkZJUlNUUElDS0VSU1BMQUNFSE9MREVSJylcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maXJzdElucHV0QXJpYUxhYmVsID0gcmVzdWx0O1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5zZWNvbmRJbnB1dFBsYWNlaG9sZGVyKSB7XG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2VcbiAgICAgICAgICAgICAgICAuc3RyZWFtKCdldWkuZGF0ZXJhbmdlc2VsZWN0b3IuU0VDT05EUElDS0VSU0xBQkVMJylcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWNvbmRJbnB1dFBsYWNlaG9sZGVyID0gcmVzdWx0O1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIGJ5IHNldHRpbmcgdGhlIHNlY29uZElucHV0QXJpYUxhYmVsIHRvIGRkL21tL3l5eXkob3IgdGhlIGRlc2lyZWQgZm9ybWF0KSB0aGUgZm9ybWF0IGNhbiBiZSBhbm5vdW5jZWQgdG8gdGhlIHNjcmVlbiByZWFkZXIgdXNlcnMgYmVmb3JlIHRoZSB1c2VycyBzdGFydCB0eXBpbmdcbiAgICAgICAgaWYgKCF0aGlzLnNlY29uZElucHV0QXJpYUxhYmVsKSB7XG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2VcbiAgICAgICAgICAgICAgICAuc3RyZWFtKCdldWkuZGF0ZXJhbmdlc2VsZWN0b3IuU0VDT05EUElDS0VSU1BMQUNFSE9MREVSJylcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWNvbmRJbnB1dEFyaWFMYWJlbCA9IHJlc3VsdDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nRG9DaGVjaygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbCkge1xuICAgICAgICAgICAgLy8gbWFya3MgdGhlIGlucHV0IGNvbnRyb2xzIGFzIHRvdWNoZWQvaW52YWxpZCBpZiB0aGUgZm9ybSBjb250cm9sIGlzIHRvdWNoZWQvaW52YWxpZFxuICAgICAgICAgICAgdGhpcy5jb250cm9sPy50b3VjaGVkID8gdGhpcy5zdGFydFJhbmdlRm9ybUNvbnRyb2w/Lm1hcmtBc1RvdWNoZWQoKSA6IHRoaXMuc3RhcnRSYW5nZUZvcm1Db250cm9sLm1hcmtBc1VudG91Y2hlZCgpO1xuICAgICAgICAgICAgdGhpcy5jb250cm9sPy50b3VjaGVkID8gdGhpcy5lbmRSYW5nZUZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKSA6IHRoaXMuZW5kUmFuZ2VGb3JtQ29udHJvbD8ubWFya0FzVW50b3VjaGVkKCk7XG4gICAgICAgICAgICB0aGlzLmNvbnRyb2w/LnRvdWNoZWQgPyAodGhpcy5pc1RvdWNoZWQgPSB0cnVlKSA6ICh0aGlzLmlzVG91Y2hlZCA9IGZhbHNlKTtcbiAgICAgICAgICAgIHRoaXMuY29udHJvbD8uaW52YWxpZCA/IHRoaXMuc3RhcnRSYW5nZUZvcm1Db250cm9sLnNldEVycm9ycyh0aGlzLmNvbnRyb2wuZXJyb3JzKSA6IHRoaXMuc3RhcnRSYW5nZUZvcm1Db250cm9sLnNldEVycm9ycyhudWxsKTtcbiAgICAgICAgICAgIHRoaXMuY29udHJvbD8uaW52YWxpZCA/IHRoaXMuZW5kUmFuZ2VGb3JtQ29udHJvbC5zZXRFcnJvcnModGhpcy5jb250cm9sLmVycm9ycykgOiB0aGlzLmVuZFJhbmdlRm9ybUNvbnRyb2wuc2V0RXJyb3JzKG51bGwpO1xuICAgICAgICAgICAgdGhpcy5jb250cm9sPy5pbnZhbGlkID8gKHRoaXMuaXNJbnZhbGlkID0gdHJ1ZSkgOiAodGhpcy5pc0ludmFsaWQgPSBmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzbG9uZ0RhdGVGb3JtYXQpIHtcbiAgICAgICAgICAgIHRoaXMuc3R5bGVDbGFzcyArPSAnZXVpLWRhdGUtcmFuZ2Utc2VsZWN0b3ItLWxvbmctZGF0ZS1mb3JtYXQnO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzQ2xlYXJhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLnN0eWxlQ2xhc3MgKz0gJ2V1aS1kYXRlLXJhbmdlLXNlbGVjdG9yLS1jbGVhcmFibGUnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlcyAmJiBjaGFuZ2VzWydzdGFydERhdGVEZWZhdWx0VmFsdWUnXSkge1xuICAgICAgICAgICAgdGhpcy5zdGFydFJhbmdlRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5zdGFydERhdGVEZWZhdWx0VmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaGFuZ2VzICYmIGNoYW5nZXNbJ2VuZERhdGVEZWZhdWx0VmFsdWUnXSkge1xuICAgICAgICAgICAgdGhpcy5lbmRSYW5nZUZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMuZW5kRGF0ZURlZmF1bHRWYWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2hhbmdlcyAmJiBjaGFuZ2VzWydpc0Rpc2FibGVkJ10pIHtcbiAgICAgICAgICAgIHRoaXMuc2V0RGlzYWJsZWRTdGF0ZSh0aGlzLmlzRGlzYWJsZWQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkZpcnN0RGF0ZUNoYW5nZShlOiBNYXREYXRlcGlja2VySW5wdXRFdmVudDxhbnk+KTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlcy5zdGFydFJhbmdlID0gZS52YWx1ZTtcbiAgICAgICAgdGhpcy5maXJzdFNlbGVjdGVkRGF0ZS5lbWl0KGUudmFsdWUpO1xuICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLnNlbGVjdGVkRGF0ZXMpO1xuICAgICAgICB0aGlzLnByb3BhZ2F0ZVRvdWNoZWQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25TZWNvbmREYXRlQ2hhbmdlKGU6IE1hdERhdGVwaWNrZXJJbnB1dEV2ZW50PGFueT4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVzLmVuZFJhbmdlID0gZS52YWx1ZTtcbiAgICAgICAgdGhpcy5zZWNvbmRTZWxlY3RlZERhdGUuZW1pdChlLnZhbHVlKTtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5zZWxlY3RlZERhdGVzKTtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVUb3VjaGVkKCk7XG4gICAgfVxuXG4gICAgb25GaXJzdERhdGVDbGVhcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVzLnN0YXJ0UmFuZ2UgPSBudWxsO1xuICAgICAgICB0aGlzLmZpcnN0U2VsZWN0ZWREYXRlLmVtaXQobnVsbCk7XG4gICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMuc2VsZWN0ZWREYXRlcyk7XG4gICAgfVxuICAgIG9uU2Vjb25kRGF0ZUNsZWFyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZXMuZW5kUmFuZ2UgPSBudWxsO1xuICAgICAgICB0aGlzLnNlY29uZFNlbGVjdGVkRGF0ZS5lbWl0KG51bGwpO1xuICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLnNlbGVjdGVkRGF0ZXMpO1xuICAgIH1cblxuICAgIHdyaXRlVmFsdWUodmFsdWVzOiBFdWlEYXRlUmFuZ2VTZWxlY3RvckRhdGVzKTogdm9pZCB7XG4gICAgICAgIGlmICh2YWx1ZXMgJiYgdmFsdWVzLnN0YXJ0UmFuZ2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdzdGFydFJhbmdlIG9mIEV1aURhdGVSYW5nZVNlbGVjdG9yRGF0ZXMgbW9kZWwgbXVzdCBiZSBkZWZpbmVkJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlcyAmJiB2YWx1ZXMuZW5kUmFuZ2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdlbmRSYW5nZSBvZiBFdWlEYXRlUmFuZ2VTZWxlY3RvckRhdGVzIG1vZGVsIG11c3QgYmUgZGVmaW5lZCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zdGFydERhdGVEZWZhdWx0VmFsdWUgPSB2YWx1ZXM/LnN0YXJ0UmFuZ2U7XG4gICAgICAgIHRoaXMuZW5kRGF0ZURlZmF1bHRWYWx1ZSA9IHZhbHVlcz8uZW5kUmFuZ2U7XG4gICAgICAgIHRoaXMuc3RhcnRSYW5nZUZvcm1Db250cm9sLnNldFZhbHVlKHZhbHVlcz8uc3RhcnRSYW5nZSk7XG4gICAgICAgIHRoaXMuZW5kUmFuZ2VGb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZXM/LmVuZFJhbmdlKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVzID0gdmFsdWVzIHx8IHsgc3RhcnRSYW5nZTpudWxsLCBlbmRSYW5nZTogbnVsbCB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNEaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgICAgIGlmICh0aGlzLmlzRGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhcnRSYW5nZUZvcm1Db250cm9sLmRpc2FibGUoKTtcbiAgICAgICAgICAgIHRoaXMuZW5kUmFuZ2VGb3JtQ29udHJvbC5kaXNhYmxlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0UmFuZ2VGb3JtQ29udHJvbC5lbmFibGUoKTtcbiAgICAgICAgICAgIHRoaXMuZW5kUmFuZ2VGb3JtQ29udHJvbC5lbmFibGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVUb3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvbiwgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgcHJpdmF0ZSBwcm9wYWdhdGVDaGFuZ2UgPSAoXzogYW55KTogdm9pZCA9PiB7fTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgICBwcml2YXRlIHByb3BhZ2F0ZVRvdWNoZWQgPSAoKTogdm9pZCA9PiB7fTtcbn1cbiIsIjxkaXZcbiAgICBjbGFzcz1cImV1aS1kYXRlLXJhbmdlLXNlbGVjdG9yIHt7IHN0eWxlQ2xhc3MgfX1cIlxuICAgIGF0dHIuZGF0YS1lMmU9XCJ7eyBlMmVBdHRyIH19XCJcbiAgICBbY2xhc3MuZXVpLWRhdGUtcmFuZ2Utc2VsZWN0b3ItLXJlc3BvbnNpdmVdPVwiaXNSZXNwb25zaXZlXCI+XG4gICAgPG1hdC1kYXRlLXJhbmdlLWlucHV0XG4gICAgICAgIFtjbGFzcy5tYXQtZGF0ZS1yYW5nZS1pbnB1dC0tcmVhZC1vbmx5XT1cImlzUmVhZE9ubHlcIlxuICAgICAgICBbY2xhc3MubWF0LWRhdGUtcmFuZ2UtaW5wdXQtLWRpc2FibGVkXT1cImlzRGlzYWJsZWRcIlxuICAgICAgICBbY2xhc3MubWF0LWRhdGUtcmFuZ2UtaW5wdXQtLWludmFsaWRdPVwiaXNJbnZhbGlkICYmIGlzVG91Y2hlZFwiXG4gICAgICAgIFtyYW5nZVBpY2tlcl09XCJwaWNrZXJcIlxuICAgICAgICBbbWluXT1cIm1pbkRhdGVcIlxuICAgICAgICBbbWF4XT1cIm1heERhdGVcIlxuICAgICAgICBbY29tcGFyaXNvblN0YXJ0XT1cImNvbXBhcmlzb25TdGFydFwiXG4gICAgICAgIFtjb21wYXJpc29uRW5kXT1cImNvbXBhcmlzb25FbmRcIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBjbGFzcz1cImV1aS1kYXRlLXJhbmdlLXNlbGVjdG9yX19zdGFydC1kYXRlXCJcbiAgICAgICAgICAgIGV1aUlucHV0VGV4dFxuICAgICAgICAgICAgW3JlYWRvbmx5XT1cImlzUmVhZE9ubHlcIlxuICAgICAgICAgICAgbWF0U3RhcnREYXRlXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IGZpcnN0SW5wdXRQbGFjZWhvbGRlciB9fVwiXG4gICAgICAgICAgICBhdHRyLmFyaWEtbGFiZWw9XCJ7eyBmaXJzdElucHV0QXJpYUxhYmVsIH19XCJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJzdGFydFJhbmdlRm9ybUNvbnRyb2xcIlxuICAgICAgICAgICAgKGRhdGVJbnB1dCk9XCJvbkZpcnN0RGF0ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIFtldWlDbGVhcmFibGVdPVwiaXNDbGVhcmFibGVcIlxuICAgICAgICAgICAgKGNsZWFyKT1cIm9uRmlyc3REYXRlQ2xlYXIoKVwiIC8+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgY2xhc3M9XCJldWktZGF0ZS1yYW5nZS1zZWxlY3Rvcl9fZW5kLWRhdGVcIlxuICAgICAgICAgICAgZXVpSW5wdXRUZXh0XG4gICAgICAgICAgICBbcmVhZG9ubHldPVwiaXNSZWFkT25seVwiXG4gICAgICAgICAgICBtYXRFbmREYXRlXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IHNlY29uZElucHV0UGxhY2Vob2xkZXIgfX1cIlxuICAgICAgICAgICAgYXR0ci5hcmlhLWxhYmVsPVwie3sgc2Vjb25kSW5wdXRBcmlhTGFiZWwgfX1cIlxuICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImVuZFJhbmdlRm9ybUNvbnRyb2xcIlxuICAgICAgICAgICAgKGRhdGVJbnB1dCk9XCJvblNlY29uZERhdGVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICBbZXVpQ2xlYXJhYmxlXT1cImlzQ2xlYXJhYmxlXCJcbiAgICAgICAgICAgIChjbGVhcik9XCJvblNlY29uZERhdGVDbGVhcigpXCIgLz5cbiAgICA8L21hdC1kYXRlLXJhbmdlLWlucHV0PlxuICAgIDxtYXQtZGF0ZS1yYW5nZS1waWNrZXIgI3BpY2tlciBbc3RhcnRWaWV3XT1cInN0YXJ0Vmlld1wiPiA8L21hdC1kYXRlLXJhbmdlLXBpY2tlcj5cbiAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwiIWlzUmVhZE9ubHlcIlxuICAgICAgICBjbGFzcz1cImV1aS1kYXRlLXJhbmdlLXNlbGVjdG9yX190b2dnbGVyIGV1aS1kYXRlLXJhbmdlLXNlbGVjdG9yX190b2dnbGVyLXt7ICF0b2dnbGVyTGFiZWwgPyAnaWNvbicgOiAnbGFiZWwnIH19XCJcbiAgICAgICAgKGNsaWNrKT1cInBpY2tlci5vcGVuKClcIlxuICAgICAgICBldWlCdXR0b25cbiAgICAgICAgZXVpU2Vjb25kYXJ5XG4gICAgICAgIGV1aUljb25CdXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIFtldWlEaXNhYmxlZF09XCJpc0Rpc2FibGVkXCJcbiAgICAgICAgYXJpYS1oYXNwb3B1cD1cImRpYWxvZ1wiPlxuICAgICAgICA8c3BhbiAqbmdJZj1cIiF0b2dnbGVyTGFiZWwgJiYgdG9nZ2xlckljb25cIiBldWlJY29uIGFyaWEtbGFiZWw9XCJPcGVuIENhbGVuZGFyXCIgaWNvbkNsYXNzPVwie3sgdG9nZ2xlckljb24gfX1cIj48L3NwYW4+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhdG9nZ2xlckxhYmVsICYmICF0b2dnbGVySWNvblwiPlxuICAgICAgICAgICAgPGV1aS1pY29uLXN2ZyBpY29uPVwie3sgdG9nZ2xlckljb25TdmcgfX1cIiBhcmlhLWxhYmVsPVwiT3BlbiBDYWxlbmRhclwiPjwvZXVpLWljb24tc3ZnPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJ0b2dnbGVyTGFiZWxcIj57eyB0b2dnbGVyTGFiZWwgfX08L3NwYW4+XG4gICAgPC9idXR0b24+XG48L2Rpdj5cbiJdfQ==
|