@alauda/ui 6.3.1-beta.2 → 6.3.1-beta.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/checkbox/checkbox-group/checkbox-group.component.d.ts +0 -1
- package/checkbox/checkbox.component.d.ts +0 -1
- package/color-picker/color-picker.component.d.ts +0 -1
- package/esm2020/autocomplete/autocomplete.component.mjs +2 -2
- package/esm2020/checkbox/checkbox-group/checkbox-group.component.mjs +5 -8
- package/esm2020/checkbox/checkbox.component.mjs +13 -15
- package/esm2020/color-picker/color-picker.component.mjs +4 -8
- package/esm2020/date-picker/calendar/date-picker-panel/component.mjs +3 -3
- package/esm2020/date-picker/calendar/range-picker-panel/component.mjs +3 -3
- package/esm2020/date-picker/date-picker/date-picker.component.mjs +4 -4
- package/esm2020/date-picker/range-picker/range-picker.component.mjs +4 -4
- package/esm2020/dialog/dialog.component.mjs +2 -2
- package/esm2020/drawer/component/drawer.component.mjs +2 -2
- package/esm2020/form/common-form.mjs +15 -15
- package/esm2020/input/number-input/number-input.component.mjs +8 -8
- package/esm2020/input/tags-input/tags-input.component.mjs +16 -21
- package/esm2020/notification/notification.component.mjs +3 -3
- package/esm2020/radio/base-radio.mjs +2 -2
- package/esm2020/radio/radio-group/radio-group.component.mjs +2 -5
- package/esm2020/select/base-select.mjs +1 -1
- package/esm2020/select/multi-select/multi-select.component.mjs +49 -32
- package/esm2020/select/option/option.component.mjs +4 -1
- package/esm2020/select/select.component.mjs +10 -10
- package/esm2020/select/select.types.mjs +1 -1
- package/esm2020/switch/switch.component.mjs +4 -7
- package/esm2020/table/table.component.mjs +2 -2
- package/esm2020/time-picker/component.mjs +2 -2
- package/esm2020/time-picker/panel/panel.component.mjs +8 -8
- package/esm2020/tree-select/tree-select.component.mjs +9 -9
- package/fesm2015/alauda-ui.mjs +156 -153
- package/fesm2015/alauda-ui.mjs.map +1 -1
- package/fesm2020/alauda-ui.mjs +156 -153
- package/fesm2020/alauda-ui.mjs.map +1 -1
- package/form/common-form.d.ts +13 -16
- package/input/number-input/number-input.component.d.ts +1 -1
- package/input/tags-input/tags-input.component.d.ts +2 -6
- package/package.json +1 -1
- package/radio/radio-group/radio-group.component.d.ts +0 -1
- package/select/base-select.d.ts +1 -1
- package/select/multi-select/multi-select.component.d.ts +4 -3
- package/select/option/option.component.d.ts +4 -2
- package/select/select.component.d.ts +1 -1
- package/select/select.types.d.ts +1 -0
- package/switch/switch.component.d.ts +0 -1
- package/theme/_mixin.scss +22 -10
- package/theme/style.css +5 -1
- package/tree-select/tree-select.component.d.ts +1 -1
|
@@ -30,7 +30,7 @@ export class TimePickerPanelComponent extends CommonFormControl {
|
|
|
30
30
|
this.enabledColumns = 0;
|
|
31
31
|
// 用于控制初次滚动,是否展示滚动动画效果
|
|
32
32
|
this.firstScrolled = false;
|
|
33
|
-
this.
|
|
33
|
+
this.model$.subscribe(_ => {
|
|
34
34
|
this.cdr.markForCheck();
|
|
35
35
|
});
|
|
36
36
|
}
|
|
@@ -55,7 +55,7 @@ export class TimePickerPanelComponent extends CommonFormControl {
|
|
|
55
55
|
return this.enabledColumns * TIME_PICKER_COLUMN_WIDTH;
|
|
56
56
|
}
|
|
57
57
|
isDisabled(value, type) {
|
|
58
|
-
const currentValue = this.
|
|
58
|
+
const currentValue = this.model;
|
|
59
59
|
if (this.disabled) {
|
|
60
60
|
return true;
|
|
61
61
|
}
|
|
@@ -92,7 +92,7 @@ export class TimePickerPanelComponent extends CommonFormControl {
|
|
|
92
92
|
return;
|
|
93
93
|
}
|
|
94
94
|
this.firstScrolled = true;
|
|
95
|
-
const result = this.syncValue(value, type, this.
|
|
95
|
+
const result = this.syncValue(value, type, this.model);
|
|
96
96
|
this.syncScrollOffset(120, result);
|
|
97
97
|
}
|
|
98
98
|
syncValue(value, type, currentValue) {
|
|
@@ -100,7 +100,7 @@ export class TimePickerPanelComponent extends CommonFormControl {
|
|
|
100
100
|
return;
|
|
101
101
|
}
|
|
102
102
|
const result = (currentValue || dayjs()).set(type, value);
|
|
103
|
-
this.
|
|
103
|
+
this.emitModel(result);
|
|
104
104
|
return result;
|
|
105
105
|
}
|
|
106
106
|
syncScrollOffset(duration, value) {
|
|
@@ -168,7 +168,7 @@ export class TimePickerPanelComponent extends CommonFormControl {
|
|
|
168
168
|
}
|
|
169
169
|
selectNow() {
|
|
170
170
|
this.firstScrolled = true;
|
|
171
|
-
this.
|
|
171
|
+
this.emitModel(dayjs());
|
|
172
172
|
}
|
|
173
173
|
trackBy(_index, content) {
|
|
174
174
|
return content;
|
|
@@ -181,7 +181,7 @@ TimePickerPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0
|
|
|
181
181
|
useExisting: forwardRef(() => TimePickerPanelComponent),
|
|
182
182
|
multi: true,
|
|
183
183
|
},
|
|
184
|
-
], viewQueries: [{ propertyName: "hourRef", first: true, predicate: ["hourRef"], descendants: true }, { propertyName: "minuteRef", first: true, predicate: ["minuteRef"], descendants: true }, { propertyName: "secondRef", first: true, predicate: ["secondRef"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"enabledColumns\" [class]=\"bem.block()\" [style.width.px]=\"totalWidth\">\n <div [class]=\"bem.element('content')\">\n <div [class]=\"bem.element('column')\" #hourRef *ngIf=\"hourEnabled\">\n <ul>\n <li\n *ngFor=\"let item of getControlTypeConfig(TimePickerControlType.Hour)\"\n [class]=\"bem.element('cell')\"\n [style.height.px]=\"CONTROL_ITEM_HEIGHT\"\n [ngClass]=\"{\n disabled: isDisabled(item, TimePickerControlType.Hour),\n selected: matchValue(\n item,\n TimePickerControlType.Hour,\n
|
|
184
|
+
], viewQueries: [{ propertyName: "hourRef", first: true, predicate: ["hourRef"], descendants: true }, { propertyName: "minuteRef", first: true, predicate: ["minuteRef"], descendants: true }, { propertyName: "secondRef", first: true, predicate: ["secondRef"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"enabledColumns\" [class]=\"bem.block()\" [style.width.px]=\"totalWidth\">\n <div [class]=\"bem.element('content')\">\n <div [class]=\"bem.element('column')\" #hourRef *ngIf=\"hourEnabled\">\n <ul>\n <li\n *ngFor=\"let item of getControlTypeConfig(TimePickerControlType.Hour)\"\n [class]=\"bem.element('cell')\"\n [style.height.px]=\"CONTROL_ITEM_HEIGHT\"\n [ngClass]=\"{\n disabled: isDisabled(item, TimePickerControlType.Hour),\n selected: matchValue(\n item,\n TimePickerControlType.Hour,\n model\n )\n }\"\n (click)=\"selectValue(item, TimePickerControlType.Hour)\"\n >\n {{ item | number: '2.0-0' }}\n </li>\n </ul>\n <div [class]=\"bem.element('column-strut')\"></div>\n </div>\n <div [class]=\"bem.element('column')\" #minuteRef *ngIf=\"minuteEnabled\">\n <ul>\n <li\n *ngFor=\"\n let item of getControlTypeConfig(TimePickerControlType.Minute);\n trackBy: trackBy\n \"\n [class]=\"bem.element('cell')\"\n [style.height.px]=\"CONTROL_ITEM_HEIGHT\"\n [ngClass]=\"{\n disabled: isDisabled(item, TimePickerControlType.Minute),\n selected: matchValue(\n item,\n TimePickerControlType.Minute,\n model\n )\n }\"\n (click)=\"selectValue(item, TimePickerControlType.Minute)\"\n >\n {{ item | number: '2.0-0' }}\n </li>\n </ul>\n <div [class]=\"bem.element('column-strut')\"></div>\n </div>\n <div [class]=\"bem.element('column')\" #secondRef *ngIf=\"secondEnabled\">\n <ul>\n <li\n *ngFor=\"\n let item of getControlTypeConfig(TimePickerControlType.Second)\n \"\n [class]=\"bem.element('cell')\"\n [style.height.px]=\"CONTROL_ITEM_HEIGHT\"\n [ngClass]=\"{\n disabled: isDisabled(item, TimePickerControlType.Second),\n selected: matchValue(\n item,\n TimePickerControlType.Second,\n model\n )\n }\"\n (click)=\"selectValue(item, TimePickerControlType.Second)\"\n >\n {{ item | number: '2.0-0' }}\n </li>\n </ul>\n <div [class]=\"bem.element('column-strut')\"></div>\n </div>\n </div>\n\n <ng-container *ngIf=\"!footerTemplate; else customFooter\">\n <div [class]=\"bem.element('footer')\">\n <button\n aui-button=\"inline\"\n (click)=\"selectNow()\"\n [size]=\"ComponentSize.Small\"\n >\n {{ 'now' | auiI18n }}\n </button>\n <button\n aui-button=\"primary\"\n [size]=\"ComponentSize.Small\"\n (click)=\"$event.stopImmediatePropagation(); confirm.next()\"\n >\n {{ 'confirm' | auiI18n }}\n </button>\n </div>\n </ng-container>\n <ng-template #customFooter>\n <ng-container\n [ngTemplateOutlet]=\"footerTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: this }\"\n ></ng-container>\n </ng-template>\n</div>\n", styles: ["@charset \"UTF-8\";.aui-time-picker-panel{display:flex;flex-direction:column;background-color:rgb(var(--aui-color-n-10));border-radius:var(--aui-border-radius-m);overflow:hidden;font-size:var(--aui-font-size-m);line-height:var(--aui-line-height-m)}:root .aui-time-picker-panel{box-shadow:0 2px 8px 0 rgba(var(--aui-color-origin-shadow),.2)}html[aui-theme-mode=light] .aui-time-picker-panel{box-shadow:0 2px 8px 0 rgba(var(--aui-color-origin-shadow),.2)}@media (prefers-color-scheme: dark){html[aui-theme-mode=system] .aui-time-picker-panel{box-shadow:0 2px 8px 0 rgba(var(--aui-color-origin-shadow),.75)}}html[aui-theme-mode=dark] .aui-time-picker-panel{box-shadow:0 2px 8px 0 rgba(var(--aui-color-origin-shadow),.75)}.aui-time-picker-panel ul,.aui-time-picker-panel li{border:none}.aui-time-picker-panel__content{display:flex;flex-direction:row;height:252px;border-bottom:1px solid rgb(var(--aui-color-n-8))}.aui-time-picker-panel__footer{display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding:9px}.aui-time-picker-panel__column{overflow:hidden;flex:1;text-align:center;align-self:stretch}.aui-time-picker-panel__column:hover{overflow-y:auto}.aui-time-picker-panel__column ul{min-height:252px;list-style:none;padding:0;margin:0}.aui-time-picker-panel__column-strut{height:224px;width:1px;visibility:hidden}.aui-time-picker-panel__column+.aui-time-picker-panel__column{border-left:1px solid rgb(var(--aui-color-n-8))}.aui-time-picker-panel__cell{flex:none;width:100%;height:28px;color:rgb(var(--aui-color-main-text));line-height:28px;cursor:pointer}.aui-time-picker-panel__cell:hover{background-color:rgb(var(--aui-color-p-6));color:rgb(var(--aui-color-primary))}.aui-time-picker-panel__cell.selected{background-color:rgb(var(--aui-color-p-7));color:rgb(var(--aui-color-primary));font-weight:var(--aui-font-weight-bold)}.aui-time-picker-panel__cell.disabled{background-color:rgb(var(--aui-color-n-8));color:#c8cacd;cursor:not-allowed}\n"], components: [{ type: i1.ButtonComponent, selector: "button[aui-button]", inputs: ["aui-button", "size", "plain", "loading", "round", "square"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "number": i2.DecimalPipe, "auiI18n": i3.I18nPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
185
185
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: TimePickerPanelComponent, decorators: [{
|
|
186
186
|
type: Component,
|
|
187
187
|
args: [{ selector: 'aui-time-picker-panel', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
@@ -192,7 +192,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImpor
|
|
|
192
192
|
},
|
|
193
193
|
], host: {
|
|
194
194
|
mousedown: '$event.preventDefault()',
|
|
195
|
-
}, template: "<div *ngIf=\"enabledColumns\" [class]=\"bem.block()\" [style.width.px]=\"totalWidth\">\n <div [class]=\"bem.element('content')\">\n <div [class]=\"bem.element('column')\" #hourRef *ngIf=\"hourEnabled\">\n <ul>\n <li\n *ngFor=\"let item of getControlTypeConfig(TimePickerControlType.Hour)\"\n [class]=\"bem.element('cell')\"\n [style.height.px]=\"CONTROL_ITEM_HEIGHT\"\n [ngClass]=\"{\n disabled: isDisabled(item, TimePickerControlType.Hour),\n selected: matchValue(\n item,\n TimePickerControlType.Hour,\n
|
|
195
|
+
}, template: "<div *ngIf=\"enabledColumns\" [class]=\"bem.block()\" [style.width.px]=\"totalWidth\">\n <div [class]=\"bem.element('content')\">\n <div [class]=\"bem.element('column')\" #hourRef *ngIf=\"hourEnabled\">\n <ul>\n <li\n *ngFor=\"let item of getControlTypeConfig(TimePickerControlType.Hour)\"\n [class]=\"bem.element('cell')\"\n [style.height.px]=\"CONTROL_ITEM_HEIGHT\"\n [ngClass]=\"{\n disabled: isDisabled(item, TimePickerControlType.Hour),\n selected: matchValue(\n item,\n TimePickerControlType.Hour,\n model\n )\n }\"\n (click)=\"selectValue(item, TimePickerControlType.Hour)\"\n >\n {{ item | number: '2.0-0' }}\n </li>\n </ul>\n <div [class]=\"bem.element('column-strut')\"></div>\n </div>\n <div [class]=\"bem.element('column')\" #minuteRef *ngIf=\"minuteEnabled\">\n <ul>\n <li\n *ngFor=\"\n let item of getControlTypeConfig(TimePickerControlType.Minute);\n trackBy: trackBy\n \"\n [class]=\"bem.element('cell')\"\n [style.height.px]=\"CONTROL_ITEM_HEIGHT\"\n [ngClass]=\"{\n disabled: isDisabled(item, TimePickerControlType.Minute),\n selected: matchValue(\n item,\n TimePickerControlType.Minute,\n model\n )\n }\"\n (click)=\"selectValue(item, TimePickerControlType.Minute)\"\n >\n {{ item | number: '2.0-0' }}\n </li>\n </ul>\n <div [class]=\"bem.element('column-strut')\"></div>\n </div>\n <div [class]=\"bem.element('column')\" #secondRef *ngIf=\"secondEnabled\">\n <ul>\n <li\n *ngFor=\"\n let item of getControlTypeConfig(TimePickerControlType.Second)\n \"\n [class]=\"bem.element('cell')\"\n [style.height.px]=\"CONTROL_ITEM_HEIGHT\"\n [ngClass]=\"{\n disabled: isDisabled(item, TimePickerControlType.Second),\n selected: matchValue(\n item,\n TimePickerControlType.Second,\n model\n )\n }\"\n (click)=\"selectValue(item, TimePickerControlType.Second)\"\n >\n {{ item | number: '2.0-0' }}\n </li>\n </ul>\n <div [class]=\"bem.element('column-strut')\"></div>\n </div>\n </div>\n\n <ng-container *ngIf=\"!footerTemplate; else customFooter\">\n <div [class]=\"bem.element('footer')\">\n <button\n aui-button=\"inline\"\n (click)=\"selectNow()\"\n [size]=\"ComponentSize.Small\"\n >\n {{ 'now' | auiI18n }}\n </button>\n <button\n aui-button=\"primary\"\n [size]=\"ComponentSize.Small\"\n (click)=\"$event.stopImmediatePropagation(); confirm.next()\"\n >\n {{ 'confirm' | auiI18n }}\n </button>\n </div>\n </ng-container>\n <ng-template #customFooter>\n <ng-container\n [ngTemplateOutlet]=\"footerTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: this }\"\n ></ng-container>\n </ng-template>\n</div>\n", styles: ["@charset \"UTF-8\";.aui-time-picker-panel{display:flex;flex-direction:column;background-color:rgb(var(--aui-color-n-10));border-radius:var(--aui-border-radius-m);overflow:hidden;font-size:var(--aui-font-size-m);line-height:var(--aui-line-height-m)}:root .aui-time-picker-panel{box-shadow:0 2px 8px 0 rgba(var(--aui-color-origin-shadow),.2)}html[aui-theme-mode=light] .aui-time-picker-panel{box-shadow:0 2px 8px 0 rgba(var(--aui-color-origin-shadow),.2)}@media (prefers-color-scheme: dark){html[aui-theme-mode=system] .aui-time-picker-panel{box-shadow:0 2px 8px 0 rgba(var(--aui-color-origin-shadow),.75)}}html[aui-theme-mode=dark] .aui-time-picker-panel{box-shadow:0 2px 8px 0 rgba(var(--aui-color-origin-shadow),.75)}.aui-time-picker-panel ul,.aui-time-picker-panel li{border:none}.aui-time-picker-panel__content{display:flex;flex-direction:row;height:252px;border-bottom:1px solid rgb(var(--aui-color-n-8))}.aui-time-picker-panel__footer{display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding:9px}.aui-time-picker-panel__column{overflow:hidden;flex:1;text-align:center;align-self:stretch}.aui-time-picker-panel__column:hover{overflow-y:auto}.aui-time-picker-panel__column ul{min-height:252px;list-style:none;padding:0;margin:0}.aui-time-picker-panel__column-strut{height:224px;width:1px;visibility:hidden}.aui-time-picker-panel__column+.aui-time-picker-panel__column{border-left:1px solid rgb(var(--aui-color-n-8))}.aui-time-picker-panel__cell{flex:none;width:100%;height:28px;color:rgb(var(--aui-color-main-text));line-height:28px;cursor:pointer}.aui-time-picker-panel__cell:hover{background-color:rgb(var(--aui-color-p-6));color:rgb(var(--aui-color-primary))}.aui-time-picker-panel__cell.selected{background-color:rgb(var(--aui-color-p-7));color:rgb(var(--aui-color-primary));font-weight:var(--aui-font-weight-bold)}.aui-time-picker-panel__cell.disabled{background-color:rgb(var(--aui-color-n-8));color:#c8cacd;cursor:not-allowed}\n"] }]
|
|
196
196
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { format: [{
|
|
197
197
|
type: Input
|
|
198
198
|
}], hourStep: [{
|
|
@@ -221,4 +221,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImpor
|
|
|
221
221
|
type: ViewChild,
|
|
222
222
|
args: ['secondRef', { static: false }]
|
|
223
223
|
}] } });
|
|
224
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFuZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RpbWUtcGlja2VyL3BhbmVsL3BhbmVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy90aW1lLXBpY2tlci9wYW5lbC9wYW5lbC50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUdOLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsVUFBVSxHQUNYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sS0FBZ0IsTUFBTSxPQUFPLENBQUM7QUFFckMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3ZDLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEdBQ2IsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7O0FBRTVELE1BQU0sd0JBQXdCLEdBQUcsRUFBRSxDQUFDO0FBQ3BDLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0FBbUI5QyxNQUFNLE9BQU8sd0JBQ1gsU0FBUSxpQkFBd0I7SUFnRmhDLFlBQStCLEdBQXNCO1FBQ25ELEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQURrQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQWxEckQsYUFBUSxHQUFHLENBQUMsQ0FBQztRQUdiLGVBQVUsR0FBRyxDQUFDLENBQUM7UUFHZixlQUFV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QkFHbEIsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSx5QkFBeUIsQ0FBQzs0QkFDdkQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0YsUUFDSzt3QkFDSixTQUFTLEVBQUUseUJBQXlCO3FCQUNyQzt3R0FPRyxNQUFNO3NCQURULEtBQUs7Z0JBMkJOLFFBQVE7c0JBRFAsS0FBSztnQkFJTixVQUFVO3NCQURULEtBQUs7Z0JBSU4sVUFBVTtzQkFEVCxLQUFLO2dCQUlOLGNBQWM7c0JBRGIsS0FBSztnQkFJTixPQUFPO3NCQUROLE1BQU07Z0JBSVAsWUFBWTtzQkFEWCxLQUFLO2dCQUlOLGNBQWM7c0JBRGIsS0FBSztnQkFJTixjQUFjO3NCQURiLEtBQUs7Z0JBaUJOLE9BQU87c0JBRE4sU0FBUzt1QkFBQyxTQUFTLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUl2QyxTQUFTO3NCQURSLFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFJekMsU0FBUztzQkFEUixTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBmb3J3YXJkUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IGRheWpzLCB7IERheWpzIH0gZnJvbSAnZGF5anMnO1xuXG5pbXBvcnQgeyBDb21tb25Gb3JtQ29udHJvbCB9IGZyb20gJy4uLy4uL2Zvcm0vY29tbW9uLWZvcm0nO1xuaW1wb3J0IHsgQ29tcG9uZW50U2l6ZSB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IGJ1aWxkQmVtIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHtcbiAgQ09OVFJPTF9JVEVNX0hFSUdIVCxcbiAgSE9VUl9JVEVNUyxcbiAgTUlOVVRFX0lURU1TLFxuICBTRUNPTkRfSVRFTVMsXG59IGZyb20gJy4uL2NvbnN0YW50JztcbmltcG9ydCB7IFRpbWVQaWNrZXJDb250cm9sVHlwZSB9IGZyb20gJy4uL3RpbWUtcGlja2VyLnR5cGUnO1xuXG5jb25zdCBUSU1FX1BJQ0tFUl9DT0xVTU5fV0lEVEggPSA4MDtcbmNvbnN0IGJlbSA9IGJ1aWxkQmVtKCdhdWktdGltZS1waWNrZXItcGFuZWwnKTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXVpLXRpbWUtcGlja2VyLXBhbmVsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BhbmVsLnRlbXBsYXRlLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wYW5lbC5zdHlsZS5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFRpbWVQaWNrZXJQYW5lbENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxuICBob3N0OiB7XG4gICAgbW91c2Vkb3duOiAnJGV2ZW50LnByZXZlbnREZWZhdWx0KCknLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBUaW1lUGlja2VyUGFuZWxDb21wb25lbnRcbiAgZXh0ZW5kcyBDb21tb25Gb3JtQ29udHJvbDxEYXlqcz5cbiAgaW1wbGVtZW50cyBPbkNoYW5nZXNcbntcbiAgQElucHV0KClcbiAgc2V0IGZvcm1hdCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgIHRoaXMuX2Zvcm1hdCA9IHZhbHVlO1xuICAgICAgY29uc3QgY2hhclNldCA9IG5ldyBTZXQodmFsdWUpO1xuICAgICAgdGhpcy5ob3VyRW5hYmxlZCA9IGNoYXJTZXQuaGFzKCdIJykgfHwgY2hhclNldC5oYXMoJ2gnKTtcbiAgICAgIHRoaXMubWludXRlRW5hYmxlZCA9IGNoYXJTZXQuaGFzKCdtJyk7XG4gICAgICB0aGlzLnNlY29uZEVuYWJsZWQgPSBjaGFyU2V0LmhhcygncycpO1xuICAgICAgdGhpcy5lbmFibGVkQ29sdW1ucyA9IFtcbiAgICAgICAgdGhpcy5ob3VyRW5hYmxlZCxcbiAgICAgICAgdGhpcy5taW51dGVFbmFibGVkLFxuICAgICAgICB0aGlzLnNlY29uZEVuYWJsZWQsXG4gICAgICBdLmZpbHRlcihpID0+IGkpLmxlbmd0aDtcbiAgICB9XG4gIH1cblxuICBnZXQgZm9ybWF0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2Zvcm1hdDtcbiAgfVxuXG4gIHByaXZhdGUgX2Zvcm1hdDogc3RyaW5nO1xuXG4gIGdldCB0b3RhbFdpZHRoKCkge1xuICAgIHJldHVybiB0aGlzLmVuYWJsZWRDb2x1bW5zICogVElNRV9QSUNLRVJfQ09MVU1OX1dJRFRIO1xuICB9XG5cbiAgQElucHV0KClcbiAgaG91clN0ZXAgPSAxO1xuXG4gIEBJbnB1dCgpXG4gIG1pbnV0ZVN0ZXAgPSAxO1xuXG4gIEBJbnB1dCgpXG4gIHNlY29uZFN0ZXAgPSAxO1xuXG4gIEBJbnB1dCgpXG4gIGZvb3RlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx2b2lkPjtcblxuICBAT3V0cHV0KClcbiAgY29uZmlybSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBASW5wdXQoKVxuICBkaXNhYmxlSG91cnM6ICgpID0+IG51bWJlcltdO1xuXG4gIEBJbnB1dCgpXG4gIGRpc2FibGVNaW51dGVzOiAoaG91cj86IG51bWJlcikgPT4gbnVtYmVyW107XG5cbiAgQElucHV0KClcbiAgZGlzYWJsZVNlY29uZHM6IChob3VyPzogbnVtYmVyLCBtaW51dGU/OiBudW1iZXIpID0+IG51bWJlcltdO1xuXG4gIGhvdXJFbmFibGVkOiBib29sZWFuO1xuICBtaW51dGVFbmFibGVkOiBib29sZWFuO1xuICBzZWNvbmRFbmFibGVkOiBib29sZWFuO1xuXG4gIFRpbWVQaWNrZXJDb250cm9sVHlwZSA9IFRpbWVQaWNrZXJDb250cm9sVHlwZTtcbiAgSE9VUl9JVEVNX0NPTkZJRyA9IEhPVVJfSVRFTVM7XG4gIE1JTlVURV9JVEVNX0NPTkZJRyA9IE1JTlVURV9JVEVNUztcbiAgU0VDT05EX0lURU1fQ09ORklHID0gU0VDT05EX0lURU1TO1xuXG4gIENPTlRST0xfSVRFTV9IRUlHSFQgPSBDT05UUk9MX0lURU1fSEVJR0hUO1xuICBDb21wb25lbnRTaXplID0gQ29tcG9uZW50U2l6ZTtcbiAgYmVtID0gYmVtO1xuXG4gIEBWaWV3Q2hpbGQoJ2hvdXJSZWYnLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgaG91clJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgQFZpZXdDaGlsZCgnbWludXRlUmVmJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIG1pbnV0ZVJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgQFZpZXdDaGlsZCgnc2Vjb25kUmVmJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIHNlY29uZFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgZW5hYmxlZENvbHVtbnMgPSAwO1xuXG4gIC8vIOeUqOS6juaOp+WItuWIneasoea7muWKqO+8jOaYr+WQpuWxleekuua7muWKqOWKqOeUu+aViOaenFxuICBmaXJzdFNjcm9sbGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIG92ZXJyaWRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICBzdXBlcihjZHIpO1xuICAgIHRoaXMudmFsdWUkLnN1YnNjcmliZShfID0+IHtcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pO1xuICB9XG5cbiAgaXNEaXNhYmxlZCh2YWx1ZTogbnVtYmVyLCB0eXBlOiBUaW1lUGlja2VyQ29udHJvbFR5cGUpIHtcbiAgICBjb25zdCBjdXJyZW50VmFsdWUgPSB0aGlzLnNuYXBzaG90LnZhbHVlO1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHR5cGUgPT09IFRpbWVQaWNrZXJDb250cm9sVHlwZS5Ib3VyKSB7XG4gICAgICByZXR1cm4gKCF0aGlzLmRpc2FibGVIb3VycyA/IFtdIDogdGhpcy5kaXNhYmxlSG91cnMoKSkuaW5jbHVkZXModmFsdWUpO1xuICAgIH1cbiAgICBpZiAodHlwZSA9PT0gVGltZVBpY2tlckNvbnRyb2xUeXBlLk1pbnV0ZSkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgIXRoaXMuZGlzYWJsZU1pbnV0ZXMgPyBbXSA6IHRoaXMuZGlzYWJsZU1pbnV0ZXMoY3VycmVudFZhbHVlPy5ob3VyKCkpXG4gICAgICApLmluY2x1ZGVzKHZhbHVlKTtcbiAgICB9XG4gICAgaWYgKHR5cGUgPT09IFRpbWVQaWNrZXJDb250cm9sVHlwZS5TZWNvbmQpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgICF0aGlzLmRpc2FibGVTZWNvbmRzXG4gICAgICAgICAgPyBbXVxuICAgICAgICAgIDogdGhpcy5kaXNhYmxlU2Vjb25kcyhjdXJyZW50VmFsdWU/LmhvdXIoKSwgY3VycmVudFZhbHVlPy5taW51dGUoKSlcbiAgICAgICkuaW5jbHVkZXModmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKHsgaG91clN0ZXAsIG1pbnV0ZVN0ZXAsIHNlY29uZFN0ZXAgfTogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChob3VyU3RlcD8uY3VycmVudFZhbHVlID4gMCkge1xuICAgICAgdGhpcy5IT1VSX0lURU1fQ09ORklHID0gSE9VUl9JVEVNUy5maWx0ZXIoXG4gICAgICAgIGkgPT4gaSAlIGhvdXJTdGVwLmN1cnJlbnRWYWx1ZSA9PT0gMCxcbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChtaW51dGVTdGVwPy5jdXJyZW50VmFsdWUgPiAwKSB7XG4gICAgICB0aGlzLk1JTlVURV9JVEVNX0NPTkZJRyA9IE1JTlVURV9JVEVNUy5maWx0ZXIoXG4gICAgICAgIGkgPT4gaSAlIG1pbnV0ZVN0ZXAuY3VycmVudFZhbHVlID09PSAwLFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHNlY29uZFN0ZXA/LmN1cnJlbnRWYWx1ZSA+IDApIHtcbiAgICAgIHRoaXMuU0VDT05EX0lURU1fQ09ORklHID0gU0VDT05EX0lURU1TLmZpbHRlcihcbiAgICAgICAgaSA9PiBpICUgc2Vjb25kU3RlcC5jdXJyZW50VmFsdWUgPT09IDAsXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG92ZXJyaWRlIHdyaXRlVmFsdWUodmFsdWU6IERheWpzKSB7XG4gICAgc3VwZXIud3JpdGVWYWx1ZSh2YWx1ZSk7XG4gICAgdGhpcy5zeW5jU2Nyb2xsT2Zmc2V0KCF0aGlzLmZpcnN0U2Nyb2xsZWQgPyAwIDogMTIwLCB2YWx1ZSk7XG4gIH1cblxuICBzZWxlY3RWYWx1ZSh2YWx1ZTogbnVtYmVyLCB0eXBlOiBUaW1lUGlja2VyQ29udHJvbFR5cGUpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0Rpc2FibGVkKHZhbHVlLCB0eXBlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmZpcnN0U2Nyb2xsZWQgPSB0cnVlO1xuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuc3luY1ZhbHVlKHZhbHVlLCB0eXBlLCB0aGlzLnNuYXBzaG90LnZhbHVlKTtcbiAgICB0aGlzLnN5bmNTY3JvbGxPZmZzZXQoMTIwLCByZXN1bHQpO1xuICB9XG5cbiAgc3luY1ZhbHVlKHZhbHVlOiBudW1iZXIsIHR5cGU6IFRpbWVQaWNrZXJDb250cm9sVHlwZSwgY3VycmVudFZhbHVlOiBEYXlqcykge1xuICAgIGlmICghdHlwZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQgPSAoY3VycmVudFZhbHVlIHx8IGRheWpzKCkpLnNldCh0eXBlLCB2YWx1ZSk7XG4gICAgdGhpcy5lbWl0VmFsdWUocmVzdWx0KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgc3luY1Njcm9sbE9mZnNldChkdXJhdGlvbjogbnVtYmVyLCB2YWx1ZTogRGF5anMpIHtcbiAgICBjb25zdCBlbXB0eSA9ICF2YWx1ZTtcbiAgICBjb25zdCBjb25maWcgPSBbXG4gICAgICB7XG4gICAgICAgIHJlZjogdGhpcy5ob3VyUmVmLFxuICAgICAgICBlbmFibGVkOiB0aGlzLmhvdXJFbmFibGVkLFxuICAgICAgICBzdGVwOiB0aGlzLmhvdXJTdGVwLFxuICAgICAgICB0eXBlOiAnaG91cicsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICByZWY6IHRoaXMubWludXRlUmVmLFxuICAgICAgICBlbmFibGVkOiB0aGlzLm1pbnV0ZUVuYWJsZWQsXG4gICAgICAgIHN0ZXA6IHRoaXMubWludXRlU3RlcCxcbiAgICAgICAgdHlwZTogJ21pbnV0ZScsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICByZWY6IHRoaXMuc2Vjb25kUmVmLFxuICAgICAgICBlbmFibGVkOiB0aGlzLnNlY29uZEVuYWJsZWQsXG4gICAgICAgIHN0ZXA6IHRoaXMuc2Vjb25kU3RlcCxcbiAgICAgICAgdHlwZTogJ3NlY29uZCcsXG4gICAgICB9LFxuICAgIF0gYXMgY29uc3Q7XG5cbiAgICBjb25maWcuZm9yRWFjaChjZiA9PiB7XG4gICAgICBpZiAoY2YuZW5hYmxlZCAmJiBjZi5yZWYpIHtcbiAgICAgICAgdGhpcy5zY3JvbGxCeVZhbHVlKFxuICAgICAgICAgIGNmLnJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgIGVtcHR5ID8gMCA6IHZhbHVlLmdldChjZi50eXBlKSxcbiAgICAgICAgICBjZi5zdGVwLFxuICAgICAgICAgIGVtcHR5ID8gMCA6IGR1cmF0aW9uLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmICghZW1wdHkpIHtcbiAgICAgIHRoaXMuZmlyc3RTY3JvbGxlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzY3JvbGxCeVZhbHVlKFxuICAgIGVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuICAgIHZhbHVlOiBudW1iZXIsXG4gICAgZGl2aWRlQnk6IG51bWJlcixcbiAgICBkdXJhdGlvbjogbnVtYmVyLFxuICApIHtcbiAgICBjb25zdCB0YXJnZXRPZmZzZXQgPSAodmFsdWUgKiBDT05UUk9MX0lURU1fSEVJR0hUKSAvIGRpdmlkZUJ5O1xuICAgIGNvbnN0IGN1cnJlbnRUb3AgPSBlbGVtZW50LnNjcm9sbFRvcDtcbiAgICBpZiAoY3VycmVudFRvcCA9PT0gdGFyZ2V0T2Zmc2V0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghZHVyYXRpb24pIHtcbiAgICAgIGVsZW1lbnQuc2Nyb2xsVG9wID0gdGFyZ2V0T2Zmc2V0O1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBkaWZmZXJlbmNlID0gdGFyZ2V0T2Zmc2V0IC0gY3VycmVudFRvcDtcbiAgICAgIC8vIOavj+S4qnRpY2vmu5rliqjot53nprtcbiAgICAgIGNvbnN0IHBlclRpY2sgPSAoZGlmZmVyZW5jZSAvIGR1cmF0aW9uKSAqIDEwO1xuXG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBlbGVtZW50LnNjcm9sbFRvcCA9IGN1cnJlbnRUb3AgKyBwZXJUaWNrO1xuICAgICAgICBpZiAoZWxlbWVudC5zY3JvbGxUb3AgPT09IHRhcmdldE9mZnNldCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNjcm9sbEJ5VmFsdWUoZWxlbWVudCwgdmFsdWUsIGRpdmlkZUJ5LCBkdXJhdGlvbiAtIDEwKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG1hdGNoVmFsdWUoXG4gICAgdmFsdWU6IG51bWJlcixcbiAgICB0eXBlOiBUaW1lUGlja2VyQ29udHJvbFR5cGUsXG4gICAgY3VyckRhdGU6IERheWpzLFxuICApOiBib29sZWFuIHtcbiAgICByZXR1cm4gY3VyckRhdGU/LmdldCh0eXBlKSA9PT0gdmFsdWU7XG4gIH1cblxuICBnZXRDb250cm9sVHlwZUNvbmZpZyh0eXBlOiBUaW1lUGlja2VyQ29udHJvbFR5cGUpOiBudW1iZXJbXSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFtUaW1lUGlja2VyQ29udHJvbFR5cGUuSG91cl06IHRoaXMuSE9VUl9JVEVNX0NPTkZJRyxcbiAgICAgIFtUaW1lUGlja2VyQ29udHJvbFR5cGUuTWludXRlXTogdGhpcy5NSU5VVEVfSVRFTV9DT05GSUcsXG4gICAgICBbVGltZVBpY2tlckNvbnRyb2xUeXBlLlNlY29uZF06IHRoaXMuU0VDT05EX0lURU1fQ09ORklHLFxuICAgIH1bdHlwZV07XG4gIH1cblxuICBzZWxlY3ROb3coKSB7XG4gICAgdGhpcy5maXJzdFNjcm9sbGVkID0gdHJ1ZTtcbiAgICB0aGlzLmVtaXRWYWx1ZShkYXlqcygpKTtcbiAgfVxuXG4gIHRyYWNrQnkoX2luZGV4OiBudW1iZXIsIGNvbnRlbnQ6IG51bWJlcikge1xuICAgIHJldHVybiBjb250ZW50O1xuICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwiZW5hYmxlZENvbHVtbnNcIiBbY2xhc3NdPVwiYmVtLmJsb2NrKClcIiBbc3R5bGUud2lkdGgucHhdPVwidG90YWxXaWR0aFwiPlxuICA8ZGl2IFtjbGFzc109XCJiZW0uZWxlbWVudCgnY29udGVudCcpXCI+XG4gICAgPGRpdiBbY2xhc3NdPVwiYmVtLmVsZW1lbnQoJ2NvbHVtbicpXCIgI2hvdXJSZWYgKm5nSWY9XCJob3VyRW5hYmxlZFwiPlxuICAgICAgPHVsPlxuICAgICAgICA8bGlcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBnZXRDb250cm9sVHlwZUNvbmZpZyhUaW1lUGlja2VyQ29udHJvbFR5cGUuSG91cilcIlxuICAgICAgICAgIFtjbGFzc109XCJiZW0uZWxlbWVudCgnY2VsbCcpXCJcbiAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIkNPTlRST0xfSVRFTV9IRUlHSFRcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgIGRpc2FibGVkOiBpc0Rpc2FibGVkKGl0ZW0sIFRpbWVQaWNrZXJDb250cm9sVHlwZS5Ib3VyKSxcbiAgICAgICAgICAgIHNlbGVjdGVkOiBtYXRjaFZhbHVlKFxuICAgICAgICAgICAgICBpdGVtLFxuICAgICAgICAgICAgICBUaW1lUGlja2VyQ29udHJvbFR5cGUuSG91cixcbiAgICAgICAgICAgICAgc25hcHNob3QudmFsdWVcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9XCJcbiAgICAgICAgICAoY2xpY2spPVwic2VsZWN0VmFsdWUoaXRlbSwgVGltZVBpY2tlckNvbnRyb2xUeXBlLkhvdXIpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGl0ZW0gfCBudW1iZXI6ICcyLjAtMCcgfX1cbiAgICAgICAgPC9saT5cbiAgICAgIDwvdWw+XG4gICAgICA8ZGl2IFtjbGFzc109XCJiZW0uZWxlbWVudCgnY29sdW1uLXN0cnV0JylcIj48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IFtjbGFzc109XCJiZW0uZWxlbWVudCgnY29sdW1uJylcIiAjbWludXRlUmVmICpuZ0lmPVwibWludXRlRW5hYmxlZFwiPlxuICAgICAgPHVsPlxuICAgICAgICA8bGlcbiAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgIGxldCBpdGVtIG9mIGdldENvbnRyb2xUeXBlQ29uZmlnKFRpbWVQaWNrZXJDb250cm9sVHlwZS5NaW51dGUpO1xuICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeVxuICAgICAgICAgIFwiXG4gICAgICAgICAgW2NsYXNzXT1cImJlbS5lbGVtZW50KCdjZWxsJylcIlxuICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiQ09OVFJPTF9JVEVNX0hFSUdIVFwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgZGlzYWJsZWQ6IGlzRGlzYWJsZWQoaXRlbSwgVGltZVBpY2tlckNvbnRyb2xUeXBlLk1pbnV0ZSksXG4gICAgICAgICAgICBzZWxlY3RlZDogbWF0Y2hWYWx1ZShcbiAgICAgICAgICAgICAgaXRlbSxcbiAgICAgICAgICAgICAgVGltZVBpY2tlckNvbnRyb2xUeXBlLk1pbnV0ZSxcbiAgICAgICAgICAgICAgc25hcHNob3QudmFsdWVcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9XCJcbiAgICAgICAgICAoY2xpY2spPVwic2VsZWN0VmFsdWUoaXRlbSwgVGltZVBpY2tlckNvbnRyb2xUeXBlLk1pbnV0ZSlcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgaXRlbSB8IG51bWJlcjogJzIuMC0wJyB9fVxuICAgICAgICA8L2xpPlxuICAgICAgPC91bD5cbiAgICAgIDxkaXYgW2NsYXNzXT1cImJlbS5lbGVtZW50KCdjb2x1bW4tc3RydXQnKVwiPjwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgW2NsYXNzXT1cImJlbS5lbGVtZW50KCdjb2x1bW4nKVwiICNzZWNvbmRSZWYgKm5nSWY9XCJzZWNvbmRFbmFibGVkXCI+XG4gICAgICA8dWw+XG4gICAgICAgIDxsaVxuICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgbGV0IGl0ZW0gb2YgZ2V0Q29udHJvbFR5cGVDb25maWcoVGltZVBpY2tlckNvbnRyb2xUeXBlLlNlY29uZClcbiAgICAgICAgICBcIlxuICAgICAgICAgIFtjbGFzc109XCJiZW0uZWxlbWVudCgnY2VsbCcpXCJcbiAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIkNPTlRST0xfSVRFTV9IRUlHSFRcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgIGRpc2FibGVkOiBpc0Rpc2FibGVkKGl0ZW0sIFRpbWVQaWNrZXJDb250cm9sVHlwZS5TZWNvbmQpLFxuICAgICAgICAgICAgc2VsZWN0ZWQ6IG1hdGNoVmFsdWUoXG4gICAgICAgICAgICAgIGl0ZW0sXG4gICAgICAgICAgICAgIFRpbWVQaWNrZXJDb250cm9sVHlwZS5TZWNvbmQsXG4gICAgICAgICAgICAgIHNuYXBzaG90LnZhbHVlXG4gICAgICAgICAgICApXG4gICAgICAgICAgfVwiXG4gICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFZhbHVlKGl0ZW0sIFRpbWVQaWNrZXJDb250cm9sVHlwZS5TZWNvbmQpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGl0ZW0gfCBudW1iZXI6ICcyLjAtMCcgfX1cbiAgICAgICAgPC9saT5cbiAgICAgIDwvdWw+XG4gICAgICA8ZGl2IFtjbGFzc109XCJiZW0uZWxlbWVudCgnY29sdW1uLXN0cnV0JylcIj48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFmb290ZXJUZW1wbGF0ZTsgZWxzZSBjdXN0b21Gb290ZXJcIj5cbiAgICA8ZGl2IFtjbGFzc109XCJiZW0uZWxlbWVudCgnZm9vdGVyJylcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgYXVpLWJ1dHRvbj1cImlubGluZVwiXG4gICAgICAgIChjbGljayk9XCJzZWxlY3ROb3coKVwiXG4gICAgICAgIFtzaXplXT1cIkNvbXBvbmVudFNpemUuU21hbGxcIlxuICAgICAgPlxuICAgICAgICB7eyAnbm93JyB8IGF1aUkxOG4gfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBhdWktYnV0dG9uPVwicHJpbWFyeVwiXG4gICAgICAgIFtzaXplXT1cIkNvbXBvbmVudFNpemUuU21hbGxcIlxuICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpOyBjb25maXJtLm5leHQoKVwiXG4gICAgICA+XG4gICAgICAgIHt7ICdjb25maXJtJyB8IGF1aUkxOG4gfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLXRlbXBsYXRlICNjdXN0b21Gb290ZXI+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZm9vdGVyVGVtcGxhdGVcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiB0aGlzIH1cIlxuICAgID48L25nLWNvbnRhaW5lcj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuIl19
|
|
224
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFuZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RpbWUtcGlja2VyL3BhbmVsL3BhbmVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy90aW1lLXBpY2tlci9wYW5lbC9wYW5lbC50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUdOLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsVUFBVSxHQUNYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sS0FBZ0IsTUFBTSxPQUFPLENBQUM7QUFFckMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3ZDLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEdBQ2IsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7O0FBRTVELE1BQU0sd0JBQXdCLEdBQUcsRUFBRSxDQUFDO0FBQ3BDLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0FBbUI5QyxNQUFNLE9BQU8sd0JBQ1gsU0FBUSxpQkFBd0I7SUFnRmhDLFlBQStCLEdBQXNCO1FBQ25ELEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQURrQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQWxEckQsYUFBUSxHQUFHLENBQUMsQ0FBQztRQUdiLGVBQVUsR0FBRyxDQUFDLENBQUM7UUFHZixlQUFV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QUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUseUJBQXlCLENBQUM7NEJBQ3ZELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGLFFBQ0s7d0JBQ0osU0FBUyxFQUFFLHlCQUF5QjtxQkFDckM7d0dBT0csTUFBTTtzQkFEVCxLQUFLO2dCQTJCTixRQUFRO3NCQURQLEtBQUs7Z0JBSU4sVUFBVTtzQkFEVCxLQUFLO2dCQUlOLFVBQVU7c0JBRFQsS0FBSztnQkFJTixjQUFjO3NCQURiLEtBQUs7Z0JBSU4sT0FBTztzQkFETixNQUFNO2dCQUlQLFlBQVk7c0JBRFgsS0FBSztnQkFJTixjQUFjO3NCQURiLEtBQUs7Z0JBSU4sY0FBYztzQkFEYixLQUFLO2dCQWlCTixPQUFPO3NCQUROLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFJdkMsU0FBUztzQkFEUixTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBSXpDLFNBQVM7c0JBRFIsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgZm9yd2FyZFJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCBkYXlqcywgeyBEYXlqcyB9IGZyb20gJ2RheWpzJztcblxuaW1wb3J0IHsgQ29tbW9uRm9ybUNvbnRyb2wgfSBmcm9tICcuLi8uLi9mb3JtL2NvbW1vbi1mb3JtJztcbmltcG9ydCB7IENvbXBvbmVudFNpemUgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBidWlsZEJlbSB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7XG4gIENPTlRST0xfSVRFTV9IRUlHSFQsXG4gIEhPVVJfSVRFTVMsXG4gIE1JTlVURV9JVEVNUyxcbiAgU0VDT05EX0lURU1TLFxufSBmcm9tICcuLi9jb25zdGFudCc7XG5pbXBvcnQgeyBUaW1lUGlja2VyQ29udHJvbFR5cGUgfSBmcm9tICcuLi90aW1lLXBpY2tlci50eXBlJztcblxuY29uc3QgVElNRV9QSUNLRVJfQ09MVU1OX1dJRFRIID0gODA7XG5jb25zdCBiZW0gPSBidWlsZEJlbSgnYXVpLXRpbWUtcGlja2VyLXBhbmVsJyk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F1aS10aW1lLXBpY2tlci1wYW5lbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9wYW5lbC50ZW1wbGF0ZS5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcGFuZWwuc3R5bGUuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUaW1lUGlja2VyUGFuZWxDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbiAgaG9zdDoge1xuICAgIG1vdXNlZG93bjogJyRldmVudC5wcmV2ZW50RGVmYXVsdCgpJyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgVGltZVBpY2tlclBhbmVsQ29tcG9uZW50XG4gIGV4dGVuZHMgQ29tbW9uRm9ybUNvbnRyb2w8RGF5anM+XG4gIGltcGxlbWVudHMgT25DaGFuZ2VzXG57XG4gIEBJbnB1dCgpXG4gIHNldCBmb3JtYXQodmFsdWU6IHN0cmluZykge1xuICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICB0aGlzLl9mb3JtYXQgPSB2YWx1ZTtcbiAgICAgIGNvbnN0IGNoYXJTZXQgPSBuZXcgU2V0KHZhbHVlKTtcbiAgICAgIHRoaXMuaG91ckVuYWJsZWQgPSBjaGFyU2V0LmhhcygnSCcpIHx8IGNoYXJTZXQuaGFzKCdoJyk7XG4gICAgICB0aGlzLm1pbnV0ZUVuYWJsZWQgPSBjaGFyU2V0LmhhcygnbScpO1xuICAgICAgdGhpcy5zZWNvbmRFbmFibGVkID0gY2hhclNldC5oYXMoJ3MnKTtcbiAgICAgIHRoaXMuZW5hYmxlZENvbHVtbnMgPSBbXG4gICAgICAgIHRoaXMuaG91ckVuYWJsZWQsXG4gICAgICAgIHRoaXMubWludXRlRW5hYmxlZCxcbiAgICAgICAgdGhpcy5zZWNvbmRFbmFibGVkLFxuICAgICAgXS5maWx0ZXIoaSA9PiBpKS5sZW5ndGg7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGZvcm1hdCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9mb3JtYXQ7XG4gIH1cblxuICBwcml2YXRlIF9mb3JtYXQ6IHN0cmluZztcblxuICBnZXQgdG90YWxXaWR0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5lbmFibGVkQ29sdW1ucyAqIFRJTUVfUElDS0VSX0NPTFVNTl9XSURUSDtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIGhvdXJTdGVwID0gMTtcblxuICBASW5wdXQoKVxuICBtaW51dGVTdGVwID0gMTtcblxuICBASW5wdXQoKVxuICBzZWNvbmRTdGVwID0gMTtcblxuICBASW5wdXQoKVxuICBmb290ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dm9pZD47XG5cbiAgQE91dHB1dCgpXG4gIGNvbmZpcm0gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgQElucHV0KClcbiAgZGlzYWJsZUhvdXJzOiAoKSA9PiBudW1iZXJbXTtcblxuICBASW5wdXQoKVxuICBkaXNhYmxlTWludXRlczogKGhvdXI/OiBudW1iZXIpID0+IG51bWJlcltdO1xuXG4gIEBJbnB1dCgpXG4gIGRpc2FibGVTZWNvbmRzOiAoaG91cj86IG51bWJlciwgbWludXRlPzogbnVtYmVyKSA9PiBudW1iZXJbXTtcblxuICBob3VyRW5hYmxlZDogYm9vbGVhbjtcbiAgbWludXRlRW5hYmxlZDogYm9vbGVhbjtcbiAgc2Vjb25kRW5hYmxlZDogYm9vbGVhbjtcblxuICBUaW1lUGlja2VyQ29udHJvbFR5cGUgPSBUaW1lUGlja2VyQ29udHJvbFR5cGU7XG4gIEhPVVJfSVRFTV9DT05GSUcgPSBIT1VSX0lURU1TO1xuICBNSU5VVEVfSVRFTV9DT05GSUcgPSBNSU5VVEVfSVRFTVM7XG4gIFNFQ09ORF9JVEVNX0NPTkZJRyA9IFNFQ09ORF9JVEVNUztcblxuICBDT05UUk9MX0lURU1fSEVJR0hUID0gQ09OVFJPTF9JVEVNX0hFSUdIVDtcbiAgQ29tcG9uZW50U2l6ZSA9IENvbXBvbmVudFNpemU7XG4gIGJlbSA9IGJlbTtcblxuICBAVmlld0NoaWxkKCdob3VyUmVmJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIGhvdXJSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIEBWaWV3Q2hpbGQoJ21pbnV0ZVJlZicsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBtaW51dGVSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIEBWaWV3Q2hpbGQoJ3NlY29uZFJlZicsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBzZWNvbmRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIGVuYWJsZWRDb2x1bW5zID0gMDtcblxuICAvLyDnlKjkuo7mjqfliLbliJ3mrKHmu5rliqjvvIzmmK/lkKblsZXnpLrmu5rliqjliqjnlLvmlYjmnpxcbiAgZmlyc3RTY3JvbGxlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBvdmVycmlkZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgc3VwZXIoY2RyKTtcbiAgICB0aGlzLm1vZGVsJC5zdWJzY3JpYmUoXyA9PiB7XG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcbiAgfVxuXG4gIGlzRGlzYWJsZWQodmFsdWU6IG51bWJlciwgdHlwZTogVGltZVBpY2tlckNvbnRyb2xUeXBlKSB7XG4gICAgY29uc3QgY3VycmVudFZhbHVlID0gdGhpcy5tb2RlbDtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmICh0eXBlID09PSBUaW1lUGlja2VyQ29udHJvbFR5cGUuSG91cikge1xuICAgICAgcmV0dXJuICghdGhpcy5kaXNhYmxlSG91cnMgPyBbXSA6IHRoaXMuZGlzYWJsZUhvdXJzKCkpLmluY2x1ZGVzKHZhbHVlKTtcbiAgICB9XG4gICAgaWYgKHR5cGUgPT09IFRpbWVQaWNrZXJDb250cm9sVHlwZS5NaW51dGUpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgICF0aGlzLmRpc2FibGVNaW51dGVzID8gW10gOiB0aGlzLmRpc2FibGVNaW51dGVzKGN1cnJlbnRWYWx1ZT8uaG91cigpKVxuICAgICAgKS5pbmNsdWRlcyh2YWx1ZSk7XG4gICAgfVxuICAgIGlmICh0eXBlID09PSBUaW1lUGlja2VyQ29udHJvbFR5cGUuU2Vjb25kKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICAhdGhpcy5kaXNhYmxlU2Vjb25kc1xuICAgICAgICAgID8gW11cbiAgICAgICAgICA6IHRoaXMuZGlzYWJsZVNlY29uZHMoY3VycmVudFZhbHVlPy5ob3VyKCksIGN1cnJlbnRWYWx1ZT8ubWludXRlKCkpXG4gICAgICApLmluY2x1ZGVzKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyh7IGhvdXJTdGVwLCBtaW51dGVTdGVwLCBzZWNvbmRTdGVwIH06IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoaG91clN0ZXA/LmN1cnJlbnRWYWx1ZSA+IDApIHtcbiAgICAgIHRoaXMuSE9VUl9JVEVNX0NPTkZJRyA9IEhPVVJfSVRFTVMuZmlsdGVyKFxuICAgICAgICBpID0+IGkgJSBob3VyU3RlcC5jdXJyZW50VmFsdWUgPT09IDAsXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAobWludXRlU3RlcD8uY3VycmVudFZhbHVlID4gMCkge1xuICAgICAgdGhpcy5NSU5VVEVfSVRFTV9DT05GSUcgPSBNSU5VVEVfSVRFTVMuZmlsdGVyKFxuICAgICAgICBpID0+IGkgJSBtaW51dGVTdGVwLmN1cnJlbnRWYWx1ZSA9PT0gMCxcbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChzZWNvbmRTdGVwPy5jdXJyZW50VmFsdWUgPiAwKSB7XG4gICAgICB0aGlzLlNFQ09ORF9JVEVNX0NPTkZJRyA9IFNFQ09ORF9JVEVNUy5maWx0ZXIoXG4gICAgICAgIGkgPT4gaSAlIHNlY29uZFN0ZXAuY3VycmVudFZhbHVlID09PSAwLFxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBvdmVycmlkZSB3cml0ZVZhbHVlKHZhbHVlOiBEYXlqcykge1xuICAgIHN1cGVyLndyaXRlVmFsdWUodmFsdWUpO1xuICAgIHRoaXMuc3luY1Njcm9sbE9mZnNldCghdGhpcy5maXJzdFNjcm9sbGVkID8gMCA6IDEyMCwgdmFsdWUpO1xuICB9XG5cbiAgc2VsZWN0VmFsdWUodmFsdWU6IG51bWJlciwgdHlwZTogVGltZVBpY2tlckNvbnRyb2xUeXBlKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNEaXNhYmxlZCh2YWx1ZSwgdHlwZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5maXJzdFNjcm9sbGVkID0gdHJ1ZTtcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLnN5bmNWYWx1ZSh2YWx1ZSwgdHlwZSwgdGhpcy5tb2RlbCk7XG4gICAgdGhpcy5zeW5jU2Nyb2xsT2Zmc2V0KDEyMCwgcmVzdWx0KTtcbiAgfVxuXG4gIHN5bmNWYWx1ZSh2YWx1ZTogbnVtYmVyLCB0eXBlOiBUaW1lUGlja2VyQ29udHJvbFR5cGUsIGN1cnJlbnRWYWx1ZTogRGF5anMpIHtcbiAgICBpZiAoIXR5cGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcmVzdWx0ID0gKGN1cnJlbnRWYWx1ZSB8fCBkYXlqcygpKS5zZXQodHlwZSwgdmFsdWUpO1xuICAgIHRoaXMuZW1pdE1vZGVsKHJlc3VsdCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHN5bmNTY3JvbGxPZmZzZXQoZHVyYXRpb246IG51bWJlciwgdmFsdWU6IERheWpzKSB7XG4gICAgY29uc3QgZW1wdHkgPSAhdmFsdWU7XG4gICAgY29uc3QgY29uZmlnID0gW1xuICAgICAge1xuICAgICAgICByZWY6IHRoaXMuaG91clJlZixcbiAgICAgICAgZW5hYmxlZDogdGhpcy5ob3VyRW5hYmxlZCxcbiAgICAgICAgc3RlcDogdGhpcy5ob3VyU3RlcCxcbiAgICAgICAgdHlwZTogJ2hvdXInLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcmVmOiB0aGlzLm1pbnV0ZVJlZixcbiAgICAgICAgZW5hYmxlZDogdGhpcy5taW51dGVFbmFibGVkLFxuICAgICAgICBzdGVwOiB0aGlzLm1pbnV0ZVN0ZXAsXG4gICAgICAgIHR5cGU6ICdtaW51dGUnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcmVmOiB0aGlzLnNlY29uZFJlZixcbiAgICAgICAgZW5hYmxlZDogdGhpcy5zZWNvbmRFbmFibGVkLFxuICAgICAgICBzdGVwOiB0aGlzLnNlY29uZFN0ZXAsXG4gICAgICAgIHR5cGU6ICdzZWNvbmQnLFxuICAgICAgfSxcbiAgICBdIGFzIGNvbnN0O1xuXG4gICAgY29uZmlnLmZvckVhY2goY2YgPT4ge1xuICAgICAgaWYgKGNmLmVuYWJsZWQgJiYgY2YucmVmKSB7XG4gICAgICAgIHRoaXMuc2Nyb2xsQnlWYWx1ZShcbiAgICAgICAgICBjZi5yZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICBlbXB0eSA/IDAgOiB2YWx1ZS5nZXQoY2YudHlwZSksXG4gICAgICAgICAgY2Yuc3RlcCxcbiAgICAgICAgICBlbXB0eSA/IDAgOiBkdXJhdGlvbixcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoIWVtcHR5KSB7XG4gICAgICB0aGlzLmZpcnN0U2Nyb2xsZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2Nyb2xsQnlWYWx1ZShcbiAgICBlbGVtZW50OiBIVE1MRWxlbWVudCxcbiAgICB2YWx1ZTogbnVtYmVyLFxuICAgIGRpdmlkZUJ5OiBudW1iZXIsXG4gICAgZHVyYXRpb246IG51bWJlcixcbiAgKSB7XG4gICAgY29uc3QgdGFyZ2V0T2Zmc2V0ID0gKHZhbHVlICogQ09OVFJPTF9JVEVNX0hFSUdIVCkgLyBkaXZpZGVCeTtcbiAgICBjb25zdCBjdXJyZW50VG9wID0gZWxlbWVudC5zY3JvbGxUb3A7XG4gICAgaWYgKGN1cnJlbnRUb3AgPT09IHRhcmdldE9mZnNldCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIWR1cmF0aW9uKSB7XG4gICAgICBlbGVtZW50LnNjcm9sbFRvcCA9IHRhcmdldE9mZnNldDtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZGlmZmVyZW5jZSA9IHRhcmdldE9mZnNldCAtIGN1cnJlbnRUb3A7XG4gICAgICAvLyDmr4/kuKp0aWNr5rua5Yqo6Led56a7XG4gICAgICBjb25zdCBwZXJUaWNrID0gKGRpZmZlcmVuY2UgLyBkdXJhdGlvbikgKiAxMDtcblxuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgZWxlbWVudC5zY3JvbGxUb3AgPSBjdXJyZW50VG9wICsgcGVyVGljaztcbiAgICAgICAgaWYgKGVsZW1lbnQuc2Nyb2xsVG9wID09PSB0YXJnZXRPZmZzZXQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zY3JvbGxCeVZhbHVlKGVsZW1lbnQsIHZhbHVlLCBkaXZpZGVCeSwgZHVyYXRpb24gLSAxMCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBtYXRjaFZhbHVlKFxuICAgIHZhbHVlOiBudW1iZXIsXG4gICAgdHlwZTogVGltZVBpY2tlckNvbnRyb2xUeXBlLFxuICAgIGN1cnJEYXRlOiBEYXlqcyxcbiAgKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGN1cnJEYXRlPy5nZXQodHlwZSkgPT09IHZhbHVlO1xuICB9XG5cbiAgZ2V0Q29udHJvbFR5cGVDb25maWcodHlwZTogVGltZVBpY2tlckNvbnRyb2xUeXBlKTogbnVtYmVyW10ge1xuICAgIHJldHVybiB7XG4gICAgICBbVGltZVBpY2tlckNvbnRyb2xUeXBlLkhvdXJdOiB0aGlzLkhPVVJfSVRFTV9DT05GSUcsXG4gICAgICBbVGltZVBpY2tlckNvbnRyb2xUeXBlLk1pbnV0ZV06IHRoaXMuTUlOVVRFX0lURU1fQ09ORklHLFxuICAgICAgW1RpbWVQaWNrZXJDb250cm9sVHlwZS5TZWNvbmRdOiB0aGlzLlNFQ09ORF9JVEVNX0NPTkZJRyxcbiAgICB9W3R5cGVdO1xuICB9XG5cbiAgc2VsZWN0Tm93KCkge1xuICAgIHRoaXMuZmlyc3RTY3JvbGxlZCA9IHRydWU7XG4gICAgdGhpcy5lbWl0TW9kZWwoZGF5anMoKSk7XG4gIH1cblxuICB0cmFja0J5KF9pbmRleDogbnVtYmVyLCBjb250ZW50OiBudW1iZXIpIHtcbiAgICByZXR1cm4gY29udGVudDtcbiAgfVxufVxuIiwiPGRpdiAqbmdJZj1cImVuYWJsZWRDb2x1bW5zXCIgW2NsYXNzXT1cImJlbS5ibG9jaygpXCIgW3N0eWxlLndpZHRoLnB4XT1cInRvdGFsV2lkdGhcIj5cbiAgPGRpdiBbY2xhc3NdPVwiYmVtLmVsZW1lbnQoJ2NvbnRlbnQnKVwiPlxuICAgIDxkaXYgW2NsYXNzXT1cImJlbS5lbGVtZW50KCdjb2x1bW4nKVwiICNob3VyUmVmICpuZ0lmPVwiaG91ckVuYWJsZWRcIj5cbiAgICAgIDx1bD5cbiAgICAgICAgPGxpXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZ2V0Q29udHJvbFR5cGVDb25maWcoVGltZVBpY2tlckNvbnRyb2xUeXBlLkhvdXIpXCJcbiAgICAgICAgICBbY2xhc3NdPVwiYmVtLmVsZW1lbnQoJ2NlbGwnKVwiXG4gICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJDT05UUk9MX0lURU1fSEVJR0hUXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICBkaXNhYmxlZDogaXNEaXNhYmxlZChpdGVtLCBUaW1lUGlja2VyQ29udHJvbFR5cGUuSG91ciksXG4gICAgICAgICAgICBzZWxlY3RlZDogbWF0Y2hWYWx1ZShcbiAgICAgICAgICAgICAgaXRlbSxcbiAgICAgICAgICAgICAgVGltZVBpY2tlckNvbnRyb2xUeXBlLkhvdXIsXG4gICAgICAgICAgICAgIG1vZGVsXG4gICAgICAgICAgICApXG4gICAgICAgICAgfVwiXG4gICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFZhbHVlKGl0ZW0sIFRpbWVQaWNrZXJDb250cm9sVHlwZS5Ib3VyKVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBpdGVtIHwgbnVtYmVyOiAnMi4wLTAnIH19XG4gICAgICAgIDwvbGk+XG4gICAgICA8L3VsPlxuICAgICAgPGRpdiBbY2xhc3NdPVwiYmVtLmVsZW1lbnQoJ2NvbHVtbi1zdHJ1dCcpXCI+PC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBbY2xhc3NdPVwiYmVtLmVsZW1lbnQoJ2NvbHVtbicpXCIgI21pbnV0ZVJlZiAqbmdJZj1cIm1pbnV0ZUVuYWJsZWRcIj5cbiAgICAgIDx1bD5cbiAgICAgICAgPGxpXG4gICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICBsZXQgaXRlbSBvZiBnZXRDb250cm9sVHlwZUNvbmZpZyhUaW1lUGlja2VyQ29udHJvbFR5cGUuTWludXRlKTtcbiAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlcbiAgICAgICAgICBcIlxuICAgICAgICAgIFtjbGFzc109XCJiZW0uZWxlbWVudCgnY2VsbCcpXCJcbiAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIkNPTlRST0xfSVRFTV9IRUlHSFRcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgIGRpc2FibGVkOiBpc0Rpc2FibGVkKGl0ZW0sIFRpbWVQaWNrZXJDb250cm9sVHlwZS5NaW51dGUpLFxuICAgICAgICAgICAgc2VsZWN0ZWQ6IG1hdGNoVmFsdWUoXG4gICAgICAgICAgICAgIGl0ZW0sXG4gICAgICAgICAgICAgIFRpbWVQaWNrZXJDb250cm9sVHlwZS5NaW51dGUsXG4gICAgICAgICAgICAgIG1vZGVsXG4gICAgICAgICAgICApXG4gICAgICAgICAgfVwiXG4gICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFZhbHVlKGl0ZW0sIFRpbWVQaWNrZXJDb250cm9sVHlwZS5NaW51dGUpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGl0ZW0gfCBudW1iZXI6ICcyLjAtMCcgfX1cbiAgICAgICAgPC9saT5cbiAgICAgIDwvdWw+XG4gICAgICA8ZGl2IFtjbGFzc109XCJiZW0uZWxlbWVudCgnY29sdW1uLXN0cnV0JylcIj48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IFtjbGFzc109XCJiZW0uZWxlbWVudCgnY29sdW1uJylcIiAjc2Vjb25kUmVmICpuZ0lmPVwic2Vjb25kRW5hYmxlZFwiPlxuICAgICAgPHVsPlxuICAgICAgICA8bGlcbiAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgIGxldCBpdGVtIG9mIGdldENvbnRyb2xUeXBlQ29uZmlnKFRpbWVQaWNrZXJDb250cm9sVHlwZS5TZWNvbmQpXG4gICAgICAgICAgXCJcbiAgICAgICAgICBbY2xhc3NdPVwiYmVtLmVsZW1lbnQoJ2NlbGwnKVwiXG4gICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJDT05UUk9MX0lURU1fSEVJR0hUXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICBkaXNhYmxlZDogaXNEaXNhYmxlZChpdGVtLCBUaW1lUGlja2VyQ29udHJvbFR5cGUuU2Vjb25kKSxcbiAgICAgICAgICAgIHNlbGVjdGVkOiBtYXRjaFZhbHVlKFxuICAgICAgICAgICAgICBpdGVtLFxuICAgICAgICAgICAgICBUaW1lUGlja2VyQ29udHJvbFR5cGUuU2Vjb25kLFxuICAgICAgICAgICAgICBtb2RlbFxuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cIlxuICAgICAgICAgIChjbGljayk9XCJzZWxlY3RWYWx1ZShpdGVtLCBUaW1lUGlja2VyQ29udHJvbFR5cGUuU2Vjb25kKVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBpdGVtIHwgbnVtYmVyOiAnMi4wLTAnIH19XG4gICAgICAgIDwvbGk+XG4gICAgICA8L3VsPlxuICAgICAgPGRpdiBbY2xhc3NdPVwiYmVtLmVsZW1lbnQoJ2NvbHVtbi1zdHJ1dCcpXCI+PC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZm9vdGVyVGVtcGxhdGU7IGVsc2UgY3VzdG9tRm9vdGVyXCI+XG4gICAgPGRpdiBbY2xhc3NdPVwiYmVtLmVsZW1lbnQoJ2Zvb3RlcicpXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGF1aS1idXR0b249XCJpbmxpbmVcIlxuICAgICAgICAoY2xpY2spPVwic2VsZWN0Tm93KClcIlxuICAgICAgICBbc2l6ZV09XCJDb21wb25lbnRTaXplLlNtYWxsXCJcbiAgICAgID5cbiAgICAgICAge3sgJ25vdycgfCBhdWlJMThuIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgYXVpLWJ1dHRvbj1cInByaW1hcnlcIlxuICAgICAgICBbc2l6ZV09XCJDb21wb25lbnRTaXplLlNtYWxsXCJcbiAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTsgY29uZmlybS5uZXh0KClcIlxuICAgICAgPlxuICAgICAgICB7eyAnY29uZmlybScgfCBhdWlJMThuIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy10ZW1wbGF0ZSAjY3VzdG9tRm9vdGVyPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImZvb3RlclRlbXBsYXRlXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogdGhpcyB9XCJcbiAgICA+PC9uZy1jb250YWluZXI+XG4gIDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -114,7 +114,7 @@ export class TreeSelectComponent extends CommonFormControl {
|
|
|
114
114
|
}
|
|
115
115
|
selectNode(node) {
|
|
116
116
|
if (!node.selected) {
|
|
117
|
-
this.
|
|
117
|
+
this.emitValue(node.nodeData.value);
|
|
118
118
|
if (this.onChange) {
|
|
119
119
|
this.closeNodes();
|
|
120
120
|
}
|
|
@@ -140,14 +140,14 @@ export class TreeSelectComponent extends CommonFormControl {
|
|
|
140
140
|
}
|
|
141
141
|
}
|
|
142
142
|
clearValue(event) {
|
|
143
|
-
this.
|
|
143
|
+
this.emitValue(null);
|
|
144
144
|
event.stopPropagation();
|
|
145
145
|
event.preventDefault();
|
|
146
146
|
}
|
|
147
|
-
|
|
148
|
-
this.
|
|
149
|
-
this.updateSelectDisplay(value);
|
|
147
|
+
valueIn(v) {
|
|
148
|
+
this.updateSelectDisplay(v);
|
|
150
149
|
this.closeNodes();
|
|
150
|
+
return v;
|
|
151
151
|
}
|
|
152
152
|
getPlaceholder() {
|
|
153
153
|
return this.filterable && this.opened ? this.displayText : this.placeholder;
|
|
@@ -177,7 +177,7 @@ TreeSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
|
|
|
177
177
|
useExisting: forwardRef(() => TreeSelectComponent),
|
|
178
178
|
multi: true,
|
|
179
179
|
},
|
|
180
|
-
], viewQueries: [{ propertyName: "selectRef", first: true, predicate: ["selectRef"], descendants: true, static: true }, { propertyName: "tooltipRef", first: true, predicate: ["tooltipRef"], descendants: true, static: true }, { propertyName: "nodeListRef", first: true, predicate: ["nodeListRef"], descendants: true, static: true }, { propertyName: "inputRef", first: true, predicate: ["inputRef"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div\n class=\"aui-tree-select\"\n [class.isDisabled]=\"disabled\"\n [class.isClearable]=\"isClearable\"\n #selectRef\n #tooltipRef=\"auiTooltip\"\n [auiTooltip]=\"templateRef\"\n [auiTooltipDisabled]=\"disabled\"\n auiTooltipTrigger=\"click\"\n auiTooltipPosition=\"bottom start\"\n auiTooltipType=\"plain\"\n (auiTooltipShow)=\"onShowNodes()\"\n (auiTooltipHide)=\"onHideNodes()\"\n>\n <aui-input-group>\n <input\n #inputRef\n class=\"aui-tree-select__input\"\n autocomplete=\"off\"\n aui-input\n [value]=\"getInputValue()\"\n [disabled]=\"disabled\"\n [placeholder]=\"getPlaceholder()\"\n [readonly]=\"inputReadonly\"\n (input)=\"onInput($event)\"\n (blur)=\"closeNodes()\"\n (keydown)=\"onKeyDown($event)\"\n />\n <span auiInputSuffix class=\"aui-tree-select__icon-container\">\n <aui-icon\n class=\"aui-tree-select__indicator\"\n [icon]=\"loading ? 'spinner' : 'caret_down_s'\"\n ></aui-icon>\n <aui-icon\n class=\"aui-tree-select__clear\"\n icon=\"close_small\"\n (click)=\"clearValue($event)\"\n ></aui-icon>\n </span>\n </aui-input-group>\n</div>\n\n<ng-template #templateRef>\n <div\n class=\"aui-tree-node-container\"\n [style.minWidth]=\"containerWidth\"\n (mousedown)=\"$event.preventDefault()\"\n >\n <div #nodeListRef class=\"aui-tree-node-container__content\">\n <aui-tree-node\n *ngFor=\"let data of nodesData; trackBy: trackByLabel\"\n [nodeData]=\"data\"\n [leafOnly]=\"leafOnly\"\n ></aui-tree-node>\n </div>\n <div\n *ngIf=\"!getVisibleNodeCount()\"\n class=\"aui-tree-node-container__placeholder\"\n >\n <ng-content select=\"aui-tree-node-placeholder\"></ng-content>\n </div>\n </div>\n</ng-template>\n", styles: ["@charset \"UTF-8\";.aui-tree-node-container{padding:8px 0;border-radius:var(--aui-border-radius-m);background-color:rgb(var(--aui-color-popper-bg))}:root .aui-tree-node-container{box-shadow:0 2px 8px 0 rgba(var(--aui-color-origin-shadow),.2)}html[aui-theme-mode=light] .aui-tree-node-container{box-shadow:0 2px 8px 0 rgba(var(--aui-color-origin-shadow),.2)}@media (prefers-color-scheme: dark){html[aui-theme-mode=system] .aui-tree-node-container{box-shadow:0 2px 8px 0 rgba(var(--aui-color-origin-shadow),.75)}}html[aui-theme-mode=dark] .aui-tree-node-container{box-shadow:0 2px 8px 0 rgba(var(--aui-color-origin-shadow),.75)}.aui-tree-node-container__content{max-height:calc(var(--aui-inline-height-s) * 10);position:relative;overflow:auto}.aui-tree-node-container__content::-webkit-scrollbar{width:4px;height:4px}.aui-tree-node-container__content::-webkit-scrollbar-thumb{background-color
|
|
180
|
+
], viewQueries: [{ propertyName: "selectRef", first: true, predicate: ["selectRef"], descendants: true, static: true }, { propertyName: "tooltipRef", first: true, predicate: ["tooltipRef"], descendants: true, static: true }, { propertyName: "nodeListRef", first: true, predicate: ["nodeListRef"], descendants: true, static: true }, { propertyName: "inputRef", first: true, predicate: ["inputRef"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div\n class=\"aui-tree-select\"\n [class.isDisabled]=\"disabled\"\n [class.isClearable]=\"isClearable\"\n #selectRef\n #tooltipRef=\"auiTooltip\"\n [auiTooltip]=\"templateRef\"\n [auiTooltipDisabled]=\"disabled\"\n auiTooltipTrigger=\"click\"\n auiTooltipPosition=\"bottom start\"\n auiTooltipType=\"plain\"\n (auiTooltipShow)=\"onShowNodes()\"\n (auiTooltipHide)=\"onHideNodes()\"\n>\n <aui-input-group>\n <input\n #inputRef\n class=\"aui-tree-select__input\"\n autocomplete=\"off\"\n aui-input\n [value]=\"getInputValue()\"\n [disabled]=\"disabled\"\n [placeholder]=\"getPlaceholder()\"\n [readonly]=\"inputReadonly\"\n (input)=\"onInput($event)\"\n (blur)=\"closeNodes()\"\n (keydown)=\"onKeyDown($event)\"\n />\n <span auiInputSuffix class=\"aui-tree-select__icon-container\">\n <aui-icon\n class=\"aui-tree-select__indicator\"\n [icon]=\"loading ? 'spinner' : 'caret_down_s'\"\n ></aui-icon>\n <aui-icon\n class=\"aui-tree-select__clear\"\n icon=\"close_small\"\n (click)=\"clearValue($event)\"\n ></aui-icon>\n </span>\n </aui-input-group>\n</div>\n\n<ng-template #templateRef>\n <div\n class=\"aui-tree-node-container\"\n [style.minWidth]=\"containerWidth\"\n (mousedown)=\"$event.preventDefault()\"\n >\n <div #nodeListRef class=\"aui-tree-node-container__content\">\n <aui-tree-node\n *ngFor=\"let data of nodesData; trackBy: trackByLabel\"\n [nodeData]=\"data\"\n [leafOnly]=\"leafOnly\"\n ></aui-tree-node>\n </div>\n <div\n *ngIf=\"!getVisibleNodeCount()\"\n class=\"aui-tree-node-container__placeholder\"\n >\n <ng-content select=\"aui-tree-node-placeholder\"></ng-content>\n </div>\n </div>\n</ng-template>\n", styles: ["@charset \"UTF-8\";.aui-tree-node-container{padding:8px 0;border-radius:var(--aui-border-radius-m);background-color:rgb(var(--aui-color-popper-bg))}:root .aui-tree-node-container{box-shadow:0 2px 8px 0 rgba(var(--aui-color-origin-shadow),.2)}html[aui-theme-mode=light] .aui-tree-node-container{box-shadow:0 2px 8px 0 rgba(var(--aui-color-origin-shadow),.2)}@media (prefers-color-scheme: dark){html[aui-theme-mode=system] .aui-tree-node-container{box-shadow:0 2px 8px 0 rgba(var(--aui-color-origin-shadow),.75)}}html[aui-theme-mode=dark] .aui-tree-node-container{box-shadow:0 2px 8px 0 rgba(var(--aui-color-origin-shadow),.75)}.aui-tree-node-container__content{max-height:calc(var(--aui-inline-height-s) * 10);position:relative;overflow:auto}.aui-tree-node-container__content::-webkit-scrollbar{width:4px;height:4px}.aui-tree-node-container__content::-webkit-scrollbar-thumb{border-radius:2px;background-color:rgba(var(--aui-color-n-1),.2)}.aui-tree-node-container__content .divider{border:none;border-top:1px solid rgb(var(--aui-color-n-8))}.aui-tree-node-container__placeholder{color:rgb(var(--aui-color-n-4));font-size:var(--aui-font-size-m);text-align:center}.aui-tree-node-container--small .aui-tree-node-container__content{max-height:calc(var(--aui-inline-height-s) * 10)}.aui-tree-node-container--small .aui-tree-node-container__placeholder{font-size:var(--aui-font-size-s)}.aui-tree-select{display:inline-block;position:relative;width:100%}.aui-tree-select__icon-container{display:block;position:relative;color:rgb(var(--aui-color-n-4))}.aui-tree-select__clear{display:none}.aui-tree-select__clear .aui-icon{border-radius:50%;color:rgb(var(--aui-color-help-text));cursor:pointer;transition:all .3s ease}.aui-tree-select__clear .aui-icon:hover{color:#fff;background-color:rgb(var(--aui-color-help-text))}.aui-tree-select.isClearable:not(.isDisabled):hover .aui-tree-select__indicator{display:none}.aui-tree-select.isClearable:not(.isDisabled):hover .aui-tree-select__clear{display:flex}.aui-tree-select:not(.isDisabled):hover .aui-input{border-color:rgb(var(--aui-color-primary))}.aui-tree-select__input.aui-input[readonly]:not([disabled]){background-color:rgb(var(--aui-color-n-9));cursor:text}aui-tree-select.ng-invalid.ng-dirty .aui-input,.ng-submitted aui-tree-select.ng-invalid .aui-input{border-color:rgb(var(--aui-color-red))!important}:root aui-tree-select.ng-invalid.ng-dirty .aui-input:focus,:root aui-tree-select.ng-invalid.ng-dirty .aui-input.isFocused,:root .ng-submitted aui-tree-select.ng-invalid .aui-input:focus,:root .ng-submitted aui-tree-select.ng-invalid .aui-input.isFocused{box-shadow:0 0 0 2px rgba(var(--aui-color-red),.16)}html[aui-theme-mode=light] aui-tree-select.ng-invalid.ng-dirty .aui-input:focus,html[aui-theme-mode=light] aui-tree-select.ng-invalid.ng-dirty .aui-input.isFocused,html[aui-theme-mode=light] .ng-submitted aui-tree-select.ng-invalid .aui-input:focus,html[aui-theme-mode=light] .ng-submitted aui-tree-select.ng-invalid .aui-input.isFocused{box-shadow:0 0 0 2px rgba(var(--aui-color-red),.16)}@media (prefers-color-scheme: dark){html[aui-theme-mode=system] aui-tree-select.ng-invalid.ng-dirty .aui-input:focus,html[aui-theme-mode=system] aui-tree-select.ng-invalid.ng-dirty .aui-input.isFocused,html[aui-theme-mode=system] .ng-submitted aui-tree-select.ng-invalid .aui-input:focus,html[aui-theme-mode=system] .ng-submitted aui-tree-select.ng-invalid .aui-input.isFocused{box-shadow:0 0 0 2px rgba(var(--aui-color-red),.3)}}html[aui-theme-mode=dark] aui-tree-select.ng-invalid.ng-dirty .aui-input:focus,html[aui-theme-mode=dark] aui-tree-select.ng-invalid.ng-dirty .aui-input.isFocused,html[aui-theme-mode=dark] .ng-submitted aui-tree-select.ng-invalid .aui-input:focus,html[aui-theme-mode=dark] .ng-submitted aui-tree-select.ng-invalid .aui-input.isFocused{box-shadow:0 0 0 2px rgba(var(--aui-color-red),.3)}\n"], components: [{ type: i0.forwardRef(function () { return i1.InputGroupComponent; }), selector: "aui-input-group" }, { type: i0.forwardRef(function () { return i2.InputComponent; }), selector: "input[aui-input],textarea[aui-input]", inputs: ["size", "disabled"] }, { type: i0.forwardRef(function () { return i3.IconComponent; }), selector: "aui-icon", inputs: ["icon", "light", "dark", "link", "margin", "size", "color", "background", "backgroundColor"] }, { type: i0.forwardRef(function () { return TreeNodeComponent; }), selector: "aui-tree-node", inputs: ["nodeData", "leafOnly"] }], directives: [{ type: i0.forwardRef(function () { return i4.TooltipDirective; }), selector: "[auiTooltip]", inputs: ["auiTooltip", "auiTooltipContext", "auiTooltipClass", "auiTooltipType", "auiTooltipPosition", "auiTooltipTrigger", "auiTooltipDisabled", "auiTooltipHideOnClick"], outputs: ["auiTooltipShow", "auiTooltipHide"], exportAs: ["auiTooltip"] }, { type: i0.forwardRef(function () { return i5.InputSuffixDirective; }), selector: "[auiInputSuffix]" }, { type: i0.forwardRef(function () { return i6.NgForOf; }), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i0.forwardRef(function () { return i6.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
181
181
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: TreeSelectComponent, decorators: [{
|
|
182
182
|
type: Component,
|
|
183
183
|
args: [{ selector: 'aui-tree-select', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, preserveWhitespaces: false, providers: [
|
|
@@ -186,7 +186,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImpor
|
|
|
186
186
|
useExisting: forwardRef(() => TreeSelectComponent),
|
|
187
187
|
multi: true,
|
|
188
188
|
},
|
|
189
|
-
], template: "<div\n class=\"aui-tree-select\"\n [class.isDisabled]=\"disabled\"\n [class.isClearable]=\"isClearable\"\n #selectRef\n #tooltipRef=\"auiTooltip\"\n [auiTooltip]=\"templateRef\"\n [auiTooltipDisabled]=\"disabled\"\n auiTooltipTrigger=\"click\"\n auiTooltipPosition=\"bottom start\"\n auiTooltipType=\"plain\"\n (auiTooltipShow)=\"onShowNodes()\"\n (auiTooltipHide)=\"onHideNodes()\"\n>\n <aui-input-group>\n <input\n #inputRef\n class=\"aui-tree-select__input\"\n autocomplete=\"off\"\n aui-input\n [value]=\"getInputValue()\"\n [disabled]=\"disabled\"\n [placeholder]=\"getPlaceholder()\"\n [readonly]=\"inputReadonly\"\n (input)=\"onInput($event)\"\n (blur)=\"closeNodes()\"\n (keydown)=\"onKeyDown($event)\"\n />\n <span auiInputSuffix class=\"aui-tree-select__icon-container\">\n <aui-icon\n class=\"aui-tree-select__indicator\"\n [icon]=\"loading ? 'spinner' : 'caret_down_s'\"\n ></aui-icon>\n <aui-icon\n class=\"aui-tree-select__clear\"\n icon=\"close_small\"\n (click)=\"clearValue($event)\"\n ></aui-icon>\n </span>\n </aui-input-group>\n</div>\n\n<ng-template #templateRef>\n <div\n class=\"aui-tree-node-container\"\n [style.minWidth]=\"containerWidth\"\n (mousedown)=\"$event.preventDefault()\"\n >\n <div #nodeListRef class=\"aui-tree-node-container__content\">\n <aui-tree-node\n *ngFor=\"let data of nodesData; trackBy: trackByLabel\"\n [nodeData]=\"data\"\n [leafOnly]=\"leafOnly\"\n ></aui-tree-node>\n </div>\n <div\n *ngIf=\"!getVisibleNodeCount()\"\n class=\"aui-tree-node-container__placeholder\"\n >\n <ng-content select=\"aui-tree-node-placeholder\"></ng-content>\n </div>\n </div>\n</ng-template>\n", styles: ["@charset \"UTF-8\";.aui-tree-node-container{padding:8px 0;border-radius:var(--aui-border-radius-m);background-color:rgb(var(--aui-color-popper-bg))}:root .aui-tree-node-container{box-shadow:0 2px 8px 0 rgba(var(--aui-color-origin-shadow),.2)}html[aui-theme-mode=light] .aui-tree-node-container{box-shadow:0 2px 8px 0 rgba(var(--aui-color-origin-shadow),.2)}@media (prefers-color-scheme: dark){html[aui-theme-mode=system] .aui-tree-node-container{box-shadow:0 2px 8px 0 rgba(var(--aui-color-origin-shadow),.75)}}html[aui-theme-mode=dark] .aui-tree-node-container{box-shadow:0 2px 8px 0 rgba(var(--aui-color-origin-shadow),.75)}.aui-tree-node-container__content{max-height:calc(var(--aui-inline-height-s) * 10);position:relative;overflow:auto}.aui-tree-node-container__content::-webkit-scrollbar{width:4px;height:4px}.aui-tree-node-container__content::-webkit-scrollbar-thumb{background-color
|
|
189
|
+
], template: "<div\n class=\"aui-tree-select\"\n [class.isDisabled]=\"disabled\"\n [class.isClearable]=\"isClearable\"\n #selectRef\n #tooltipRef=\"auiTooltip\"\n [auiTooltip]=\"templateRef\"\n [auiTooltipDisabled]=\"disabled\"\n auiTooltipTrigger=\"click\"\n auiTooltipPosition=\"bottom start\"\n auiTooltipType=\"plain\"\n (auiTooltipShow)=\"onShowNodes()\"\n (auiTooltipHide)=\"onHideNodes()\"\n>\n <aui-input-group>\n <input\n #inputRef\n class=\"aui-tree-select__input\"\n autocomplete=\"off\"\n aui-input\n [value]=\"getInputValue()\"\n [disabled]=\"disabled\"\n [placeholder]=\"getPlaceholder()\"\n [readonly]=\"inputReadonly\"\n (input)=\"onInput($event)\"\n (blur)=\"closeNodes()\"\n (keydown)=\"onKeyDown($event)\"\n />\n <span auiInputSuffix class=\"aui-tree-select__icon-container\">\n <aui-icon\n class=\"aui-tree-select__indicator\"\n [icon]=\"loading ? 'spinner' : 'caret_down_s'\"\n ></aui-icon>\n <aui-icon\n class=\"aui-tree-select__clear\"\n icon=\"close_small\"\n (click)=\"clearValue($event)\"\n ></aui-icon>\n </span>\n </aui-input-group>\n</div>\n\n<ng-template #templateRef>\n <div\n class=\"aui-tree-node-container\"\n [style.minWidth]=\"containerWidth\"\n (mousedown)=\"$event.preventDefault()\"\n >\n <div #nodeListRef class=\"aui-tree-node-container__content\">\n <aui-tree-node\n *ngFor=\"let data of nodesData; trackBy: trackByLabel\"\n [nodeData]=\"data\"\n [leafOnly]=\"leafOnly\"\n ></aui-tree-node>\n </div>\n <div\n *ngIf=\"!getVisibleNodeCount()\"\n class=\"aui-tree-node-container__placeholder\"\n >\n <ng-content select=\"aui-tree-node-placeholder\"></ng-content>\n </div>\n </div>\n</ng-template>\n", styles: ["@charset \"UTF-8\";.aui-tree-node-container{padding:8px 0;border-radius:var(--aui-border-radius-m);background-color:rgb(var(--aui-color-popper-bg))}:root .aui-tree-node-container{box-shadow:0 2px 8px 0 rgba(var(--aui-color-origin-shadow),.2)}html[aui-theme-mode=light] .aui-tree-node-container{box-shadow:0 2px 8px 0 rgba(var(--aui-color-origin-shadow),.2)}@media (prefers-color-scheme: dark){html[aui-theme-mode=system] .aui-tree-node-container{box-shadow:0 2px 8px 0 rgba(var(--aui-color-origin-shadow),.75)}}html[aui-theme-mode=dark] .aui-tree-node-container{box-shadow:0 2px 8px 0 rgba(var(--aui-color-origin-shadow),.75)}.aui-tree-node-container__content{max-height:calc(var(--aui-inline-height-s) * 10);position:relative;overflow:auto}.aui-tree-node-container__content::-webkit-scrollbar{width:4px;height:4px}.aui-tree-node-container__content::-webkit-scrollbar-thumb{border-radius:2px;background-color:rgba(var(--aui-color-n-1),.2)}.aui-tree-node-container__content .divider{border:none;border-top:1px solid rgb(var(--aui-color-n-8))}.aui-tree-node-container__placeholder{color:rgb(var(--aui-color-n-4));font-size:var(--aui-font-size-m);text-align:center}.aui-tree-node-container--small .aui-tree-node-container__content{max-height:calc(var(--aui-inline-height-s) * 10)}.aui-tree-node-container--small .aui-tree-node-container__placeholder{font-size:var(--aui-font-size-s)}.aui-tree-select{display:inline-block;position:relative;width:100%}.aui-tree-select__icon-container{display:block;position:relative;color:rgb(var(--aui-color-n-4))}.aui-tree-select__clear{display:none}.aui-tree-select__clear .aui-icon{border-radius:50%;color:rgb(var(--aui-color-help-text));cursor:pointer;transition:all .3s ease}.aui-tree-select__clear .aui-icon:hover{color:#fff;background-color:rgb(var(--aui-color-help-text))}.aui-tree-select.isClearable:not(.isDisabled):hover .aui-tree-select__indicator{display:none}.aui-tree-select.isClearable:not(.isDisabled):hover .aui-tree-select__clear{display:flex}.aui-tree-select:not(.isDisabled):hover .aui-input{border-color:rgb(var(--aui-color-primary))}.aui-tree-select__input.aui-input[readonly]:not([disabled]){background-color:rgb(var(--aui-color-n-9));cursor:text}aui-tree-select.ng-invalid.ng-dirty .aui-input,.ng-submitted aui-tree-select.ng-invalid .aui-input{border-color:rgb(var(--aui-color-red))!important}:root aui-tree-select.ng-invalid.ng-dirty .aui-input:focus,:root aui-tree-select.ng-invalid.ng-dirty .aui-input.isFocused,:root .ng-submitted aui-tree-select.ng-invalid .aui-input:focus,:root .ng-submitted aui-tree-select.ng-invalid .aui-input.isFocused{box-shadow:0 0 0 2px rgba(var(--aui-color-red),.16)}html[aui-theme-mode=light] aui-tree-select.ng-invalid.ng-dirty .aui-input:focus,html[aui-theme-mode=light] aui-tree-select.ng-invalid.ng-dirty .aui-input.isFocused,html[aui-theme-mode=light] .ng-submitted aui-tree-select.ng-invalid .aui-input:focus,html[aui-theme-mode=light] .ng-submitted aui-tree-select.ng-invalid .aui-input.isFocused{box-shadow:0 0 0 2px rgba(var(--aui-color-red),.16)}@media (prefers-color-scheme: dark){html[aui-theme-mode=system] aui-tree-select.ng-invalid.ng-dirty .aui-input:focus,html[aui-theme-mode=system] aui-tree-select.ng-invalid.ng-dirty .aui-input.isFocused,html[aui-theme-mode=system] .ng-submitted aui-tree-select.ng-invalid .aui-input:focus,html[aui-theme-mode=system] .ng-submitted aui-tree-select.ng-invalid .aui-input.isFocused{box-shadow:0 0 0 2px rgba(var(--aui-color-red),.3)}}html[aui-theme-mode=dark] aui-tree-select.ng-invalid.ng-dirty .aui-input:focus,html[aui-theme-mode=dark] aui-tree-select.ng-invalid.ng-dirty .aui-input.isFocused,html[aui-theme-mode=dark] .ng-submitted aui-tree-select.ng-invalid .aui-input:focus,html[aui-theme-mode=dark] .ng-submitted aui-tree-select.ng-invalid .aui-input.isFocused{box-shadow:0 0 0 2px rgba(var(--aui-color-red),.3)}\n"] }]
|
|
190
190
|
}], propDecorators: { nodesData: [{
|
|
191
191
|
type: Input
|
|
192
192
|
}], loading: [{
|
|
@@ -236,7 +236,7 @@ export class TreeNodeComponent {
|
|
|
236
236
|
this._leafOnly = true;
|
|
237
237
|
this.select = select;
|
|
238
238
|
this.selected$ = combineLatest([
|
|
239
|
-
this.select.
|
|
239
|
+
this.select.model$,
|
|
240
240
|
this.nodeData$$.pipe(map(data => data.value)),
|
|
241
241
|
]).pipe(map(([selectValue, selfValue]) => selectValue &&
|
|
242
242
|
this.select.trackFn(selectValue) === this.select.trackFn(selfValue)), tap(selected => {
|
|
@@ -340,4 +340,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImpor
|
|
|
340
340
|
type: ViewChildren,
|
|
341
341
|
args: [TreeNodeComponent]
|
|
342
342
|
}] } });
|
|
343
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1zZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3RyZWUtc2VsZWN0L3RyZWUtc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL3NyYy90cmVlLXNlbGVjdC90cmVlLXNlbGVjdC5jb21wb25lbnQuaHRtbCIsIi4uLy4uLy4uL3NyYy90cmVlLXNlbGVjdC90cmVlLW5vZGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNULFlBQVksRUFDWixpQkFBaUIsRUFDakIsVUFBVSxHQUtYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFDTCxlQUFlLEVBQ2YsYUFBYSxFQUNiLEdBQUcsRUFFSCxFQUFFLEVBQ0YsYUFBYSxFQUNiLFFBQVEsRUFDUixTQUFTLEVBQ1QsT0FBTyxFQUNQLFNBQVMsRUFDVCxTQUFTLEVBQ1QsR0FBRyxHQUNKLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFJdkQsT0FBTyxFQUVMLFFBQVEsRUFDUixpQkFBaUIsRUFDakIsWUFBWSxFQUNaLGNBQWMsR0FDZixNQUFNLFVBQVUsQ0FBQzs7Ozs7Ozs7QUFtQmxCLE1BQU0sT0FBTyxtQkFBaUMsU0FBUSxpQkFBb0I7SUFmMUU7O1FBK0JFLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFHaEIsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUE4QmpCLGFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBRzFCLFlBQU8sR0FBZSxJQUFJLENBQUMsUUFBUSxDQUFDO1FBTXBDLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztR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LFFBQVEsQ0FBQyxRQUFRO1lBQzNCLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUk7WUFDbEQsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxZQUFZLENBQUMsQ0FBUyxFQUFFLElBQWlCO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBRUQsWUFBWSxDQUFDLElBQTBCO1FBQ3JDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUU7WUFDM0IsY0FBYyxDQUNaLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFDckMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQzVCLENBQUM7U0FDSDtJQUNILENBQUM7OzhHQTlKVSxpQkFBaUIsa0JBOENsQixtQkFBbUI7a0dBOUNsQixpQkFBaUIsaVBBZ0NkLGlCQUFpQixnREVsVmpDLCtvQ0EwQ0EsNm9DRndRYSxpQkFBaUI7MkZBQWpCLGlCQUFpQjtrQkFSN0IsU0FBUzsrQkFDRSxlQUFlLG1CQUdSLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksdUJBQ2hCLEtBQUs7MERBZ0RoQixtQkFBbUIsMERBdEN6QixRQUFRO3NCQURYLEtBQUs7Z0JBY0YsUUFBUTtzQkFEWCxLQUFLO2dCQVVOLFFBQVE7c0JBRFAsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUl2QyxVQUFVO3NCQURULFlBQVk7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDaGlsZHJlbixcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGZvcndhcmRSZWYsXG4gIFF1ZXJ5TGlzdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIEFmdGVyVmlld0luaXQsXG4gIE9uRGVzdHJveSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgY29tYmluZUxhdGVzdCxcbiAgbWFwLFxuICBPYnNlcnZhYmxlLFxuICBvZixcbiAgcHVibGlzaFJlcGxheSxcbiAgcmVmQ291bnQsXG4gIHN0YXJ0V2l0aCxcbiAgU3ViamVjdCxcbiAgc3dpdGNoTWFwLFxuICB0YWtlVW50aWwsXG4gIHRhcCxcbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IENvbW1vbkZvcm1Db250cm9sIH0gZnJvbSAnLi4vZm9ybS9wdWJsaWMtYXBpJztcbmltcG9ydCB7IElucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vaW5wdXQvcHVibGljLWFwaSc7XG5pbXBvcnQgeyBUcmFja0ZuIH0gZnJvbSAnLi4vc2VsZWN0L3NlbGVjdC50eXBlcyc7XG5pbXBvcnQgeyBUb29sdGlwRGlyZWN0aXZlIH0gZnJvbSAnLi4vdG9vbHRpcC9wdWJsaWMtYXBpJztcbmltcG9ydCB7XG4gIEJlbSxcbiAgYnVpbGRCZW0sXG4gIGNvZXJjZUF0dHJCb29sZWFuLFxuICBjb2VyY2VTdHJpbmcsXG4gIHNjcm9sbEludG9WaWV3LFxufSBmcm9tICcuLi91dGlscyc7XG5cbmltcG9ydCB7IFRyZWVOb2RlIH0gZnJvbSAnLi90cmVlLXNlbGVjdC50eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F1aS10cmVlLXNlbGVjdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi90cmVlLXNlbGVjdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RyZWUtc2VsZWN0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBwcmVzZXJ2ZVdoaXRlc3BhY2VzOiBmYWxzZSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUcmVlU2VsZWN0Q29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFRyZWVTZWxlY3RDb21wb25lbnQ8VCA9IHVua25vd24+IGV4dGVuZHMgQ29tbW9uRm9ybUNvbnRyb2w8VD4ge1xuICBASW5wdXQoKVxuICBnZXQgbm9kZXNEYXRhKCkge1xuICAgIHJldHVybiB0aGlzLl9ub2Rlc0RhdGE7XG4gIH1cblxuICBzZXQgbm9kZXNEYXRhKHZhbCkge1xuICAgIGlmICghdmFsIHx8IHZhbCA9PT0gdGhpcy5fbm9kZXNEYXRhKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX25vZGVzRGF0YSA9IHZhbDtcbiAgICB0aGlzLmZsYXR0ZWROb2RlcyA9IHRoaXMuZmxhdE5vZGVzRGF0YSh2YWwpO1xuICAgIHRoaXMudXBkYXRlU2VsZWN0RGlzcGxheSh0aGlzLnByb3BWYWx1ZSk7XG4gIH1cblxuICBASW5wdXQoKVxuICBsb2FkaW5nID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgcGxhY2Vob2xkZXIgPSAnJztcblxuICBASW5wdXQoKVxuICBnZXQgZmlsdGVyYWJsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyYWJsZTtcbiAgfVxuXG4gIHNldCBmaWx0ZXJhYmxlKHZhbDogYm9vbGVhbiB8ICcnKSB7XG4gICAgdGhpcy5fZmlsdGVyYWJsZSA9IGNvZXJjZUF0dHJCb29sZWFuKHZhbCk7XG4gIH1cblxuICBASW5wdXQoKVxuICBnZXQgY2xlYXJhYmxlKCkge1xuICAgIHJldHVybiB0aGlzLl9jbGVhcmFibGU7XG4gIH1cblxuICBzZXQgY2xlYXJhYmxlKHZhbDogYm9vbGVhbiB8ICcnKSB7XG4gICAgdGhpcy5fY2xlYXJhYmxlID0gY29lcmNlQXR0ckJvb2xlYW4odmFsKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIGdldCBsZWFmT25seSgpIHtcbiAgICByZXR1cm4gdGhpcy5fbGVhZk9ubHk7XG4gIH1cblxuICBzZXQgbGVhZk9ubHkodmFsOiBib29sZWFuIHwgJycpIHtcbiAgICB0aGlzLl9sZWFmT25seSA9IGNvZXJjZUF0dHJCb29sZWFuKHZhbCk7XG4gIH1cblxuICBASW5wdXQoKVxuICBmaWx0ZXJGbiA9IHRoaXMuX2ZpbHRlckZuO1xuXG4gIEBJbnB1dCgpXG4gIHRyYWNrRm46IFRyYWNrRm48VD4gPSB0aGlzLl90cmFja0ZuO1xuXG4gIEBJbnB1dCgpXG4gIGxhYmVsRm4/OiAodmFsdWU6IFQpID0+IHN0cmluZztcblxuICBAT3V0cHV0KClcbiAgZmlsdGVyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHNob3cgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgQE91dHB1dCgpXG4gIGhpZGUgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgQFZpZXdDaGlsZCgnc2VsZWN0UmVmJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgcHJvdGVjdGVkIHNlbGVjdFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgQFZpZXdDaGlsZCgndG9vbHRpcFJlZicsIHsgc3RhdGljOiB0cnVlIH0pXG4gIHByb3RlY3RlZCB0b29sdGlwUmVmOiBUb29sdGlwRGlyZWN0aXZlO1xuXG4gIEBWaWV3Q2hpbGQoJ25vZGVMaXN0UmVmJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgbm9kZUxpc3RSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIEBWaWV3Q2hpbGQoJ2lucHV0UmVmJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgaW5wdXRSZWY6IElucHV0Q29tcG9uZW50O1xuXG4gIHByaXZhdGUgX25vZGVzRGF0YTogQXJyYXk8VHJlZU5vZGU8VD4+ID0gW107XG4gIHByaXZhdGUgX2ZpbHRlclN0cmluZyA9ICcnO1xuICBwcml2YXRlIF9maWx0ZXJhYmxlID0gZmFsc2U7XG4gIHByaXZhdGUgX2NsZWFyYWJsZSA9IGZhbHNlO1xuICBwcml2YXRlIF9sZWFmT25seSA9IGZhbHNlO1xuICBwcml2YXRlIHJlYWRvbmx5IGZpbHRlclN0cmluZyQkID0gbmV3IEJlaGF2aW9yU3ViamVjdCh0aGlzLmZpbHRlclN0cmluZyk7XG5cbiAgZmlsdGVyU3RyaW5nJDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gdGhpcy5maWx0ZXJTdHJpbmckJC5hc09ic2VydmFibGUoKTtcblxuICBjb250YWluZXJXaWR0aDogc3RyaW5nO1xuICBkaXNwbGF5VGV4dCA9ICcnO1xuICBmbGF0dGVkTm9kZXM6IEFycmF5PFRyZWVOb2RlPFQ+PiA9IFtdO1xuXG4gIGdldCBpc0NsZWFyYWJsZSgpIHtcbiAgICByZXR1cm4gIXRoaXMuZGlzYWJsZWQgJiYgdGhpcy5jbGVhcmFibGUgJiYgdGhpcy5nZXRJbnB1dFZhbHVlKCk7XG4gIH1cblxuICBnZXQgb3BlbmVkKCkge1xuICAgIHJldHVybiB0aGlzLnRvb2x0aXBSZWYuaXNDcmVhdGVkO1xuICB9XG5cbiAgZ2V0IGlucHV0UmVhZG9ubHkoKSB7XG4gICAgcmV0dXJuICEodGhpcy5maWx0ZXJhYmxlICYmIHRoaXMub3BlbmVkKTtcbiAgfVxuXG4gIGdldCBmaWx0ZXJTdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlclN0cmluZztcbiAgfVxuXG4gIHNldCBmaWx0ZXJTdHJpbmcodmFsKSB7XG4gICAgaWYgKHZhbCAhPT0gdGhpcy5fZmlsdGVyU3RyaW5nKSB7XG4gICAgICB0aGlzLl9maWx0ZXJTdHJpbmcgPSB2YWw7XG4gICAgICB0aGlzLmZpbHRlclN0cmluZyQkLm5leHQodmFsKTtcbiAgICAgIHRoaXMuZmlsdGVyQ2hhbmdlLmVtaXQodmFsKTtcbiAgICB9XG4gIH1cblxuICBvcGVuTm9kZXMoKSB7XG4gICAgdGhpcy50b29sdGlwUmVmLmNyZWF0ZVRvb2x0aXAoKTtcbiAgfVxuXG4gIGNsb3NlTm9kZXMoKSB7XG4gICAgdGhpcy50b29sdGlwUmVmLmRpc3Bvc2VUb29sdGlwKCk7XG4gIH1cblxuICB1cGRhdGVQb3NpdGlvbigpIHtcbiAgICB0aGlzLnRvb2x0aXBSZWYudXBkYXRlUG9zaXRpb24oKTtcbiAgfVxuXG4gIG9uU2hvd05vZGVzKCkge1xuICAgIHRoaXMuY29udGFpbmVyV2lkdGggPSB0aGlzLnNlbGVjdFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoICsgJ3B4JztcbiAgICB0aGlzLnNob3cuZW1pdCgpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG9uSGlkZU5vZGVzKCkge1xuICAgIGlmICh0aGlzLm9uVG91Y2hlZCkge1xuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICB9XG4gICAgdGhpcy5maWx0ZXJTdHJpbmcgPSAnJztcbiAgICB0aGlzLmhpZGUuZW1pdCgpO1xuICB9XG5cbiAgb25JbnB1dChldmVudDogRXZlbnQpIHtcbiAgICBjb25zdCB2YWx1ZSA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XG4gICAgdGhpcy5maWx0ZXJTdHJpbmcgPSB2YWx1ZTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG9uTm9kZUNsaWNrKG5vZGU6IFRyZWVOb2RlQ29tcG9uZW50PFQ+KSB7XG4gICAgdGhpcy5zZWxlY3ROb2RlKG5vZGUpO1xuICB9XG5cbiAgZ2V0VmlzaWJsZU5vZGVDb3VudCgpIHtcbiAgICByZXR1cm4gdGhpcy5mbGF0dGVkTm9kZXMuZmlsdGVyKG5vZGUgPT5cbiAgICAgIHRoaXMuZmlsdGVyRm4odGhpcy5maWx0ZXJTdHJpbmcsIG5vZGUpLFxuICAgICkubGVuZ3RoO1xuICB9XG5cbiAgc2VsZWN0Tm9kZShub2RlOiBUcmVlTm9kZUNvbXBvbmVudDxUPikge1xuICAgIGlmICghbm9kZS5zZWxlY3RlZCkge1xuICAgICAgdGhpcy5lbWl0VmFsdWVDaGFuZ2Uobm9kZS5ub2RlRGF0YS52YWx1ZSk7XG4gICAgICBpZiAodGhpcy5vbkNoYW5nZSkge1xuICAgICAgICB0aGlzLmNsb3NlTm9kZXMoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgdGhpcy5jbG9zZU9wdGlvbigpO1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfVxuXG4gIGNsb3NlT3B0aW9uKCkge1xuICAgIHRoaXMudG9vbHRpcFJlZi5kaXNwb3NlVG9vbHRpcCgpO1xuICB9XG5cbiAgdXBkYXRlU2VsZWN0RGlzcGxheSh2YWx1ZTogYW55KSB7XG4gICAgY29uc3QgcGlja2VkTm9kZSA9IHRoaXMuZmxhdHRlZE5vZGVzLmZpbmQoXG4gICAgICBub2RlID0+IHRoaXMudHJhY2tGbihub2RlLnZhbHVlKSA9PT0gdGhpcy50cmFja0ZuKHZhbHVlKSxcbiAgICApO1xuICAgIGlmIChwaWNrZWROb2RlKSB7XG4gICAgICB0aGlzLmRpc3BsYXlUZXh0ID0gdGhpcy5nZXRMYWJlbEZyb21Ob2RlKHBpY2tlZE5vZGUpLnRvU3RyaW5nKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGlzcGxheVRleHQgPSBjb2VyY2VTdHJpbmcodGhpcy50cmFja0ZuKHZhbHVlKSk7XG4gICAgfVxuICB9XG5cbiAgY2xlYXJWYWx1ZShldmVudDogRXZlbnQpIHtcbiAgICB0aGlzLmVtaXRWYWx1ZUNoYW5nZShudWxsKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG5cbiAgb3ZlcnJpZGUgd3JpdGVWYWx1ZSh2YWx1ZTogVCkge1xuICAgIHRoaXMudmFsdWUkJC5uZXh0KHZhbHVlKTtcbiAgICB0aGlzLnVwZGF0ZVNlbGVjdERpc3BsYXkodmFsdWUpO1xuICAgIHRoaXMuY2xvc2VOb2RlcygpO1xuICB9XG5cbiAgZ2V0UGxhY2Vob2xkZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyYWJsZSAmJiB0aGlzLm9wZW5lZCA/IHRoaXMuZGlzcGxheVRleHQgOiB0aGlzLnBsYWNlaG9sZGVyO1xuICB9XG5cbiAgZ2V0SW5wdXRWYWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJhYmxlICYmIHRoaXMub3BlbmVkID8gJycgOiB0aGlzLmRpc3BsYXlUZXh0O1xuICB9XG5cbiAgLy8gYHRoaXNgIGlzIG5vdCBhdmFpbGFibGUgaW4gYHRyYWNrQnlgLi4uXG4gIHRyYWNrQnlMYWJlbCA9IChfOiBudW1iZXIsIG5vZGU6IFRyZWVOb2RlPFQ+KSA9PiB0aGlzLmdldExhYmVsRnJvbU5vZGUobm9kZSk7XG5cbiAgcHJpdmF0ZSBmbGF0Tm9kZXNEYXRhKG5vZGVzOiBBcnJheTxUcmVlTm9kZTxUPj4gPSBbXSk6IEFycmF5PFRyZWVOb2RlPFQ+PiB7XG4gICAgcmV0dXJuIG5vZGVzLnJlZHVjZShcbiAgICAgIChwcmV2VmFsdWU6IEFycmF5PFRyZWVOb2RlPFQ+PiwgY3VycmVudE5vZGUpID0+XG4gICAgICAgIHByZXZWYWx1ZS5jb25jYXQoY3VycmVudE5vZGUsIHRoaXMuZmxhdE5vZGVzRGF0YShjdXJyZW50Tm9kZS5jaGlsZHJlbikpLFxuICAgICAgW10sXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TGFiZWxGcm9tTm9kZShub2RlOiBUcmVlTm9kZTxUPikge1xuICAgIHJldHVybiAoXG4gICAgICBub2RlLmxhYmVsIHx8XG4gICAgICB0aGlzLmxhYmVsRm4/Lihub2RlLnZhbHVlKSB8fFxuICAgICAgY29lcmNlU3RyaW5nKHRoaXMudHJhY2tGbihub2RlLnZhbHVlKSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfZmlsdGVyRm4oZmlsdGVyU3RyaW5nOiBzdHJpbmcsIG5vZGU6IFRyZWVOb2RlPFQ+KSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0TGFiZWxGcm9tTm9kZShub2RlKT8uaW5jbHVkZXMoZmlsdGVyU3RyaW5nID8/ICcnKTtcbiAgfVxuXG4gIHByaXZhdGUgX3RyYWNrRm48VD4odmFsdWU6IFQpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXVpLXRyZWUtbm9kZScsXG4gIHRlbXBsYXRlVXJsOiAnLi90cmVlLW5vZGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90cmVlLW5vZGUuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHByZXNlcnZlV2hpdGVzcGFjZXM6IGZhbHNlLFxufSlcbmV4cG9ydCBjbGFzcyBUcmVlTm9kZUNvbXBvbmVudDxUPiBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIGJlbTogQmVtID0gYnVpbGRCZW0oJ2F1aS10cmVlLW5vZGUnKTtcblxuICBwcml2YXRlIF9ub2RlRGF0YTogVHJlZU5vZGU8VD47XG4gIHByaXZhdGUgcmVhZG9ubHkgbm9kZURhdGEkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VHJlZU5vZGU8VD4+KHRoaXMubm9kZURhdGEpO1xuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgQElucHV0KClcbiAgZ2V0IG5vZGVEYXRhKCkge1xuICAgIHJldHVybiB0aGlzLl9ub2RlRGF0YTtcbiAgfVxuXG4gIHNldCBub2RlRGF0YSh2YWwpIHtcbiAgICBpZiAodmFsID09PSB0aGlzLl9ub2RlRGF0YSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9ub2RlRGF0YSA9IHZhbDtcbiAgICB0aGlzLm5vZGVEYXRhJCQubmV4dCh2YWwpO1xuICB9XG5cbiAgQElucHV0KClcbiAgZ2V0IGxlYWZPbmx5KCkge1xuICAgIHJldHVybiB0aGlzLl9sZWFmT25seTtcbiAgfVxuXG4gIHNldCBsZWFmT25seSh2YWw6IGJvb2xlYW4gfCAnJykge1xuICAgIHRoaXMuX2xlYWZPbmx5ID0gY29lcmNlQXR0ckJvb2xlYW4odmFsKTtcbiAgfVxuXG4gIEBWaWV3Q2hpbGQoJ3RpdGxlUmVmJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgdGl0bGVSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIEBWaWV3Q2hpbGRyZW4oVHJlZU5vZGVDb21wb25lbnQpXG4gIGNoaWxkTm9kZXM6IFF1ZXJ5TGlzdDxUcmVlTm9kZUNvbXBvbmVudDxUPj47XG5cbiAgc2VsZWN0ZWQgPSBmYWxzZTtcbiAgdmlzaWJsZSA9IHRydWU7XG4gIGlzTGVhZiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX2xlYWZPbmx5ID0gdHJ1ZTtcbiAgcHJpdmF0ZSByZWFkb25seSBzZWxlY3Q6IFRyZWVTZWxlY3RDb21wb25lbnQ8VD47XG4gIHNlbGVjdGVkJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgc2VsZlZpc2libGUkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICB2aXNpYmxlJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBzZWxlY3Q6IFRyZWVTZWxlY3RDb21wb25lbnQ8VD4sXG4gICAgcHJpdmF0ZSByZWFkb25seSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICApIHtcbiAgICB0aGlzLnNlbGVjdCA9IHNlbGVjdDtcbiAgICB0aGlzLnNlbGVjdGVkJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5zZWxlY3QudmFsdWUkLFxuICAgICAgdGhpcy5ub2RlRGF0YSQkLnBpcGUobWFwKGRhdGEgPT4gZGF0YS52YWx1ZSkpLFxuICAgIF0pLnBpcGUoXG4gICAgICBtYXAoXG4gICAgICAgIChbc2VsZWN0VmFsdWUsIHNlbGZWYWx1ZV0pID0+XG4gICAgICAgICAgc2VsZWN0VmFsdWUgJiZcbiAgICAgICAgICB0aGlzLnNlbGVjdC50cmFja0ZuKHNlbGVjdFZhbHVlKSA9PT0gdGhpcy5zZWxlY3QudHJhY2tGbihzZWxmVmFsdWUpLFxuICAgICAgKSxcbiAgICAgIHRhcChzZWxlY3RlZCA9PiB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWQgPSBzZWxlY3RlZDtcbiAgICAgIH0pLFxuICAgICAgcHVibGlzaFJlcGxheSgxKSxcbiAgICAgIHJlZkNvdW50KCksXG4gICAgKTtcbiAgICB0aGlzLnNlbGZWaXNpYmxlJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5zZWxlY3QuZmlsdGVyU3RyaW5nJCxcbiAgICAgIHRoaXMubm9kZURhdGEkJCxcbiAgICBdKS5waXBlKFxuICAgICAgbWFwKChbZmlsdGVyU3RyaW5nLCBub2RlRGF0YV0pID0+XG4gICAgICAgIHRoaXMuc2VsZWN0LmZpbHRlckZuKGZpbHRlclN0cmluZywgbm9kZURhdGEpLFxuICAgICAgKSxcbiAgICAgIHB1Ymxpc2hSZXBsYXkoMSksXG4gICAgICByZWZDb3VudCgpLFxuICAgICk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgY29uc3QgaGFzVmlzaWJsZUNoaWxkTm9kZXMkID0gdGhpcy5jaGlsZE5vZGVzLmNoYW5nZXMucGlwZShcbiAgICAgIHN0YXJ0V2l0aCh0aGlzLmNoaWxkTm9kZXMpLFxuICAgICAgc3dpdGNoTWFwKChub2RlczogUXVlcnlMaXN0PFRyZWVOb2RlQ29tcG9uZW50PFQ+PikgPT5cbiAgICAgICAgbm9kZXMubGVuZ3RoID4gMFxuICAgICAgICAgID8gY29tYmluZUxhdGVzdChub2Rlcy5tYXAobm9kZSA9PiBub2RlLnZpc2libGUkKSlcbiAgICAgICAgICA6IG9mKFtmYWxzZV0pLFxuICAgICAgKSxcbiAgICAgIG1hcCh2aXNpYmxlID0+IHZpc2libGUuc29tZSh2YWx1ZSA9PiB2YWx1ZSkpLFxuICAgICAgdGFwKGhhc1Zpc2libGVDaGlsZHJlbiA9PiAodGhpcy5pc0xlYWYgPSAhaGFzVmlzaWJsZUNoaWxkcmVuKSksXG4gICAgKTtcbiAgICB0aGlzLnZpc2libGUkID0gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLnNlbGZWaXNpYmxlJCxcbiAgICAgIGhhc1Zpc2libGVDaGlsZE5vZGVzJCxcbiAgICBdKS5waXBlKFxuICAgICAgbWFwKHZpc2libGUgPT4gdmlzaWJsZS5zb21lKHZhbHVlID0+IHZhbHVlKSksXG4gICAgICBwdWJsaXNoUmVwbGF5KDEpLFxuICAgICAgcmVmQ291bnQoKSxcbiAgICApO1xuXG4gICAgdGhpcy52aXNpYmxlJC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkJCkpLnN1YnNjcmliZSh2aXNpYmxlID0+IHtcbiAgICAgIHRoaXMudmlzaWJsZSA9IHZpc2libGU7XG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcbiAgICB0aGlzLnNlbGVjdGVkJC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkJCkpLnN1YnNjcmliZShzZWxlY3RlZCA9PiB7XG4gICAgICB0aGlzLnNlbGVjdGVkID0gc2VsZWN0ZWQ7XG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLnNlbGVjdGVkKSB7XG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICB0aGlzLnNjcm9sbFRvTm9kZSh0aGlzKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveSQkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkJC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgb25DbGljaygpIHtcbiAgICBpZiAodGhpcy5ub2RlRGF0YS5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5sZWFmT25seSAmJiAhdGhpcy5pc0xlYWYpIHtcbiAgICAgIHRoaXMuc3dpdGNoRXhwYW5kZWQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3Qub25Ob2RlQ2xpY2sodGhpcyk7XG4gIH1cblxuICBzd2l0Y2hFeHBhbmRlZCgpIHtcbiAgICB0aGlzLm5vZGVEYXRhLmV4cGFuZGVkID0gIXRoaXMubm9kZURhdGEuZXhwYW5kZWQ7XG4gICAgaWYgKHRoaXMubm9kZURhdGEuZXhwYW5kZWQgJiYgdGhpcy5jaGlsZE5vZGVzLmxhc3QpIHtcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuc2Nyb2xsVG9Ob2RlKHRoaXMuY2hpbGROb2Rlcy5sYXN0KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgdGhpcy5zZWxlY3QudXBkYXRlUG9zaXRpb24oKTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldEljb24oKSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZURhdGEuZXhwYW5kZWRcbiAgICAgID8gdGhpcy5ub2RlRGF0YS5leHBhbmRlZEljb24gfHwgdGhpcy5ub2RlRGF0YS5pY29uXG4gICAgICA6IHRoaXMubm9kZURhdGEuaWNvbjtcbiAgfVxuXG4gIHRyYWNrQnlMYWJlbChfOiBudW1iZXIsIGRhdGE6IFRyZWVOb2RlPFQ+KSB7XG4gICAgcmV0dXJuIGRhdGEubGFiZWw7XG4gIH1cblxuICBzY3JvbGxUb05vZGUobm9kZTogVHJlZU5vZGVDb21wb25lbnQ8VD4pIHtcbiAgICBpZiAodGhpcy5zZWxlY3Qubm9kZUxpc3RSZWYpIHtcbiAgICAgIHNjcm9sbEludG9WaWV3KFxuICAgICAgICB0aGlzLnNlbGVjdC5ub2RlTGlzdFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICBub2RlLnRpdGxlUmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cImF1aS10cmVlLXNlbGVjdFwiXG4gIFtjbGFzcy5pc0Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgW2NsYXNzLmlzQ2xlYXJhYmxlXT1cImlzQ2xlYXJhYmxlXCJcbiAgI3NlbGVjdFJlZlxuICAjdG9vbHRpcFJlZj1cImF1aVRvb2x0aXBcIlxuICBbYXVpVG9vbHRpcF09XCJ0ZW1wbGF0ZVJlZlwiXG4gIFthdWlUb29sdGlwRGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICBhdWlUb29sdGlwVHJpZ2dlcj1cImNsaWNrXCJcbiAgYXVpVG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tIHN0YXJ0XCJcbiAgYXVpVG9vbHRpcFR5cGU9XCJwbGFpblwiXG4gIChhdWlUb29sdGlwU2hvdyk9XCJvblNob3dOb2RlcygpXCJcbiAgKGF1aVRvb2x0aXBIaWRlKT1cIm9uSGlkZU5vZGVzKClcIlxuPlxuICA8YXVpLWlucHV0LWdyb3VwPlxuICAgIDxpbnB1dFxuICAgICAgI2lucHV0UmVmXG4gICAgICBjbGFzcz1cImF1aS10cmVlLXNlbGVjdF9faW5wdXRcIlxuICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgIGF1aS1pbnB1dFxuICAgICAgW3ZhbHVlXT1cImdldElucHV0VmFsdWUoKVwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cImdldFBsYWNlaG9sZGVyKClcIlxuICAgICAgW3JlYWRvbmx5XT1cImlucHV0UmVhZG9ubHlcIlxuICAgICAgKGlucHV0KT1cIm9uSW5wdXQoJGV2ZW50KVwiXG4gICAgICAoYmx1cik9XCJjbG9zZU5vZGVzKClcIlxuICAgICAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIlxuICAgIC8+XG4gICAgPHNwYW4gYXVpSW5wdXRTdWZmaXggY2xhc3M9XCJhdWktdHJlZS1zZWxlY3RfX2ljb24tY29udGFpbmVyXCI+XG4gICAgICA8YXVpLWljb25cbiAgICAgICAgY2xhc3M9XCJhdWktdHJlZS1zZWxlY3RfX2luZGljYXRvclwiXG4gICAgICAgIFtpY29uXT1cImxvYWRpbmcgPyAnc3Bpbm5lcicgOiAnY2FyZXRfZG93bl9zJ1wiXG4gICAgICA+PC9hdWktaWNvbj5cbiAgICAgIDxhdWktaWNvblxuICAgICAgICBjbGFzcz1cImF1aS10cmVlLXNlbGVjdF9fY2xlYXJcIlxuICAgICAgICBpY29uPVwiY2xvc2Vfc21hbGxcIlxuICAgICAgICAoY2xpY2spPVwiY2xlYXJWYWx1ZSgkZXZlbnQpXCJcbiAgICAgID48L2F1aS1pY29uPlxuICAgIDwvc3Bhbj5cbiAgPC9hdWktaW5wdXQtZ3JvdXA+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZVJlZj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiYXVpLXRyZWUtbm9kZS1jb250YWluZXJcIlxuICAgIFtzdHlsZS5taW5XaWR0aF09XCJjb250YWluZXJXaWR0aFwiXG4gICAgKG1vdXNlZG93bik9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXG4gID5cbiAgICA8ZGl2ICNub2RlTGlzdFJlZiBjbGFzcz1cImF1aS10cmVlLW5vZGUtY29udGFpbmVyX19jb250ZW50XCI+XG4gICAgICA8YXVpLXRyZWUtbm9kZVxuICAgICAgICAqbmdGb3I9XCJsZXQgZGF0YSBvZiBub2Rlc0RhdGE7IHRyYWNrQnk6IHRyYWNrQnlMYWJlbFwiXG4gICAgICAgIFtub2RlRGF0YV09XCJkYXRhXCJcbiAgICAgICAgW2xlYWZPbmx5XT1cImxlYWZPbmx5XCJcbiAgICAgID48L2F1aS10cmVlLW5vZGU+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCIhZ2V0VmlzaWJsZU5vZGVDb3VudCgpXCJcbiAgICAgIGNsYXNzPVwiYXVpLXRyZWUtbm9kZS1jb250YWluZXJfX3BsYWNlaG9sZGVyXCJcbiAgICA+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJhdWktdHJlZS1ub2RlLXBsYWNlaG9sZGVyXCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iLCI8ZGl2XG4gIFtoaWRkZW5dPVwiIXZpc2libGVcIlxuICBjbGFzcz1cImF1aS10cmVlLW5vZGVcIlxuICBbY2xhc3MuaXNEaXNhYmxlZF09XCJub2RlRGF0YS5kaXNhYmxlZFwiXG4gIFtjbGFzcy5pc1NlbGVjdGVkXT1cInNlbGVjdGVkXCJcbiAgW2F0dHIuZGF0YS12YWx1ZV09XCJub2RlRGF0YS52YWx1ZVwiXG4+XG4gIDxkaXYgY2xhc3M9XCJhdWktdHJlZS1ub2RlX19jb250ZW50XCI+XG4gICAgPGF1aS1pY29uXG4gICAgICAqbmdJZj1cIm5vZGVEYXRhLmNoaWxkcmVuXCJcbiAgICAgIGNsYXNzPVwiYXVpLXRyZWUtbm9kZV9faW5kaWNhdG9yXCJcbiAgICAgIFtpY29uXT1cIm5vZGVEYXRhLmV4cGFuZGVkID8gJ2FuZ2xlX2Rvd24nIDogJ2FuZ2xlX3JpZ2h0J1wiXG4gICAgICAoY2xpY2spPVwic3dpdGNoRXhwYW5kZWQoKVwiXG4gICAgPjwvYXVpLWljb24+XG4gICAgPHNwYW5cbiAgICAgICN0aXRsZVJlZlxuICAgICAgY2xhc3M9XCJhdWktdHJlZS1ub2RlX190aXRsZVwiXG4gICAgICBbY2xhc3MuaXNEaXNhYmxlZF09XCJub2RlRGF0YS5kaXNhYmxlZFwiXG4gICAgICBbY2xhc3MuaXNTZWxlY3RlZF09XCJzZWxlY3RlZFwiXG4gICAgICBbY2xhc3MudW5zZWxlY3RhYmxlXT1cImxlYWZPbmx5ICYmICFpc0xlYWZcIlxuICAgICAgKGNsaWNrKT1cIm9uQ2xpY2soKVwiXG4gICAgPlxuICAgICAgPGF1aS1pY29uXG4gICAgICAgICpuZ0lmPVwibm9kZURhdGEuaWNvblwiXG4gICAgICAgIG1hcmdpbj1cInJpZ2h0XCJcbiAgICAgICAgW2ljb25dPVwiZ2V0SWNvbigpXCJcbiAgICAgID48L2F1aS1pY29uPlxuICAgICAge3sgbm9kZURhdGEubGFiZWwgfX1cbiAgICA8L3NwYW4+XG4gIDwvZGl2PlxuICA8ZGl2XG4gICAgKm5nSWY9XCJub2RlRGF0YS5jaGlsZHJlblwiXG4gICAgW2hpZGRlbl09XCIhbm9kZURhdGEuZXhwYW5kZWRcIlxuICAgIGNsYXNzPVwiYXVpLXRyZWUtbm9kZV9fY2hpbGRyZW5cIlxuICA+XG4gICAgPGF1aS10cmVlLW5vZGVcbiAgICAgICpuZ0Zvcj1cImxldCBkYXRhIG9mIG5vZGVEYXRhLmNoaWxkcmVuOyB0cmFja0J5OiB0cmFja0J5TGFiZWxcIlxuICAgICAgW25vZGVEYXRhXT1cImRhdGFcIlxuICAgICAgW2xlYWZPbmx5XT1cImxlYWZPbmx5XCJcbiAgICA+PC9hdWktdHJlZS1ub2RlPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
343
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1zZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3RyZWUtc2VsZWN0L3RyZWUtc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL3NyYy90cmVlLXNlbGVjdC90cmVlLXNlbGVjdC5jb21wb25lbnQuaHRtbCIsIi4uLy4uLy4uL3NyYy90cmVlLXNlbGVjdC90cmVlLW5vZGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNULFlBQVksRUFDWixpQkFBaUIsRUFDakIsVUFBVSxHQUtYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFDTCxlQUFlLEVBQ2YsYUFBYSxFQUNiLEdBQUcsRUFFSCxFQUFFLEVBQ0YsYUFBYSxFQUNiLFFBQVEsRUFDUixTQUFTLEVBQ1QsT0FBTyxFQUNQLFNBQVMsRUFDVCxTQUFTLEVBQ1QsR0FBRyxHQUNKLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFJdkQsT0FBTyxFQUVMLFFBQVEsRUFDUixpQkFBaUIsRUFDakIsWUFBWSxFQUNaLGNBQWMsR0FDZixNQUFNLFVBQVUsQ0FBQzs7Ozs7Ozs7QUFtQmxCLE1BQU0sT0FBTyxtQkFBaUMsU0FBUSxpQkFBb0I7SUFmMUU7O1FBK0JFLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFHaEIsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUE4QmpCLGFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBRzFCLFlBQU8sR0FBZSxJQUFJLENBQUMsUUFBUSxDQUFDO1FBTXBDLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztR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QyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUk7WUFDbEQsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxZQUFZLENBQUMsQ0FBUyxFQUFFLElBQWlCO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBRUQsWUFBWSxDQUFDLElBQTBCO1FBQ3JDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUU7WUFDM0IsY0FBYyxDQUNaLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFDckMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQzVCLENBQUM7U0FDSDtJQUNILENBQUM7OzhHQTlKVSxpQkFBaUIsa0JBOENsQixtQkFBbUI7a0dBOUNsQixpQkFBaUIsaVBBZ0NkLGlCQUFpQixnREVsVmpDLCtvQ0EwQ0EsNm9DRndRYSxpQkFBaUI7MkZBQWpCLGlCQUFpQjtrQkFSN0IsU0FBUzsrQkFDRSxlQUFlLG1CQUdSLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksdUJBQ2hCLEtBQUs7MERBZ0RoQixtQkFBbUIsMERBdEN6QixRQUFRO3NCQURYLEtBQUs7Z0JBY0YsUUFBUTtzQkFEWCxLQUFLO2dCQVVOLFFBQVE7c0JBRFAsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUl2QyxVQUFVO3NCQURULFlBQVk7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDaGlsZHJlbixcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGZvcndhcmRSZWYsXG4gIFF1ZXJ5TGlzdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIEFmdGVyVmlld0luaXQsXG4gIE9uRGVzdHJveSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgY29tYmluZUxhdGVzdCxcbiAgbWFwLFxuICBPYnNlcnZhYmxlLFxuICBvZixcbiAgcHVibGlzaFJlcGxheSxcbiAgcmVmQ291bnQsXG4gIHN0YXJ0V2l0aCxcbiAgU3ViamVjdCxcbiAgc3dpdGNoTWFwLFxuICB0YWtlVW50aWwsXG4gIHRhcCxcbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IENvbW1vbkZvcm1Db250cm9sIH0gZnJvbSAnLi4vZm9ybS9wdWJsaWMtYXBpJztcbmltcG9ydCB7IElucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vaW5wdXQvcHVibGljLWFwaSc7XG5pbXBvcnQgeyBUcmFja0ZuIH0gZnJvbSAnLi4vc2VsZWN0L3NlbGVjdC50eXBlcyc7XG5pbXBvcnQgeyBUb29sdGlwRGlyZWN0aXZlIH0gZnJvbSAnLi4vdG9vbHRpcC9wdWJsaWMtYXBpJztcbmltcG9ydCB7XG4gIEJlbSxcbiAgYnVpbGRCZW0sXG4gIGNvZXJjZUF0dHJCb29sZWFuLFxuICBjb2VyY2VTdHJpbmcsXG4gIHNjcm9sbEludG9WaWV3LFxufSBmcm9tICcuLi91dGlscyc7XG5cbmltcG9ydCB7IFRyZWVOb2RlIH0gZnJvbSAnLi90cmVlLXNlbGVjdC50eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F1aS10cmVlLXNlbGVjdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi90cmVlLXNlbGVjdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RyZWUtc2VsZWN0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBwcmVzZXJ2ZVdoaXRlc3BhY2VzOiBmYWxzZSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUcmVlU2VsZWN0Q29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFRyZWVTZWxlY3RDb21wb25lbnQ8VCA9IHVua25vd24+IGV4dGVuZHMgQ29tbW9uRm9ybUNvbnRyb2w8VD4ge1xuICBASW5wdXQoKVxuICBnZXQgbm9kZXNEYXRhKCkge1xuICAgIHJldHVybiB0aGlzLl9ub2Rlc0RhdGE7XG4gIH1cblxuICBzZXQgbm9kZXNEYXRhKHZhbCkge1xuICAgIGlmICghdmFsIHx8IHZhbCA9PT0gdGhpcy5fbm9kZXNEYXRhKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX25vZGVzRGF0YSA9IHZhbDtcbiAgICB0aGlzLmZsYXR0ZWROb2RlcyA9IHRoaXMuZmxhdE5vZGVzRGF0YSh2YWwpO1xuICAgIHRoaXMudXBkYXRlU2VsZWN0RGlzcGxheSh0aGlzLnByb3BWYWx1ZSk7XG4gIH1cblxuICBASW5wdXQoKVxuICBsb2FkaW5nID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgcGxhY2Vob2xkZXIgPSAnJztcblxuICBASW5wdXQoKVxuICBnZXQgZmlsdGVyYWJsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyYWJsZTtcbiAgfVxuXG4gIHNldCBmaWx0ZXJhYmxlKHZhbDogYm9vbGVhbiB8ICcnKSB7XG4gICAgdGhpcy5fZmlsdGVyYWJsZSA9IGNvZXJjZUF0dHJCb29sZWFuKHZhbCk7XG4gIH1cblxuICBASW5wdXQoKVxuICBnZXQgY2xlYXJhYmxlKCkge1xuICAgIHJldHVybiB0aGlzLl9jbGVhcmFibGU7XG4gIH1cblxuICBzZXQgY2xlYXJhYmxlKHZhbDogYm9vbGVhbiB8ICcnKSB7XG4gICAgdGhpcy5fY2xlYXJhYmxlID0gY29lcmNlQXR0ckJvb2xlYW4odmFsKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIGdldCBsZWFmT25seSgpIHtcbiAgICByZXR1cm4gdGhpcy5fbGVhZk9ubHk7XG4gIH1cblxuICBzZXQgbGVhZk9ubHkodmFsOiBib29sZWFuIHwgJycpIHtcbiAgICB0aGlzLl9sZWFmT25seSA9IGNvZXJjZUF0dHJCb29sZWFuKHZhbCk7XG4gIH1cblxuICBASW5wdXQoKVxuICBmaWx0ZXJGbiA9IHRoaXMuX2ZpbHRlckZuO1xuXG4gIEBJbnB1dCgpXG4gIHRyYWNrRm46IFRyYWNrRm48VD4gPSB0aGlzLl90cmFja0ZuO1xuXG4gIEBJbnB1dCgpXG4gIGxhYmVsRm4/OiAodmFsdWU6IFQpID0+IHN0cmluZztcblxuICBAT3V0cHV0KClcbiAgZmlsdGVyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHNob3cgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgQE91dHB1dCgpXG4gIGhpZGUgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgQFZpZXdDaGlsZCgnc2VsZWN0UmVmJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgcHJvdGVjdGVkIHNlbGVjdFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgQFZpZXdDaGlsZCgndG9vbHRpcFJlZicsIHsgc3RhdGljOiB0cnVlIH0pXG4gIHByb3RlY3RlZCB0b29sdGlwUmVmOiBUb29sdGlwRGlyZWN0aXZlO1xuXG4gIEBWaWV3Q2hpbGQoJ25vZGVMaXN0UmVmJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgbm9kZUxpc3RSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIEBWaWV3Q2hpbGQoJ2lucHV0UmVmJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgaW5wdXRSZWY6IElucHV0Q29tcG9uZW50O1xuXG4gIHByaXZhdGUgX25vZGVzRGF0YTogQXJyYXk8VHJlZU5vZGU8VD4+ID0gW107XG4gIHByaXZhdGUgX2ZpbHRlclN0cmluZyA9ICcnO1xuICBwcml2YXRlIF9maWx0ZXJhYmxlID0gZmFsc2U7XG4gIHByaXZhdGUgX2NsZWFyYWJsZSA9IGZhbHNlO1xuICBwcml2YXRlIF9sZWFmT25seSA9IGZhbHNlO1xuICBwcml2YXRlIHJlYWRvbmx5IGZpbHRlclN0cmluZyQkID0gbmV3IEJlaGF2aW9yU3ViamVjdCh0aGlzLmZpbHRlclN0cmluZyk7XG5cbiAgZmlsdGVyU3RyaW5nJDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gdGhpcy5maWx0ZXJTdHJpbmckJC5hc09ic2VydmFibGUoKTtcblxuICBjb250YWluZXJXaWR0aDogc3RyaW5nO1xuICBkaXNwbGF5VGV4dCA9ICcnO1xuICBmbGF0dGVkTm9kZXM6IEFycmF5PFRyZWVOb2RlPFQ+PiA9IFtdO1xuXG4gIGdldCBpc0NsZWFyYWJsZSgpIHtcbiAgICByZXR1cm4gIXRoaXMuZGlzYWJsZWQgJiYgdGhpcy5jbGVhcmFibGUgJiYgdGhpcy5nZXRJbnB1dFZhbHVlKCk7XG4gIH1cblxuICBnZXQgb3BlbmVkKCkge1xuICAgIHJldHVybiB0aGlzLnRvb2x0aXBSZWYuaXNDcmVhdGVkO1xuICB9XG5cbiAgZ2V0IGlucHV0UmVhZG9ubHkoKSB7XG4gICAgcmV0dXJuICEodGhpcy5maWx0ZXJhYmxlICYmIHRoaXMub3BlbmVkKTtcbiAgfVxuXG4gIGdldCBmaWx0ZXJTdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlclN0cmluZztcbiAgfVxuXG4gIHNldCBmaWx0ZXJTdHJpbmcodmFsKSB7XG4gICAgaWYgKHZhbCAhPT0gdGhpcy5fZmlsdGVyU3RyaW5nKSB7XG4gICAgICB0aGlzLl9maWx0ZXJTdHJpbmcgPSB2YWw7XG4gICAgICB0aGlzLmZpbHRlclN0cmluZyQkLm5leHQodmFsKTtcbiAgICAgIHRoaXMuZmlsdGVyQ2hhbmdlLmVtaXQodmFsKTtcbiAgICB9XG4gIH1cblxuICBvcGVuTm9kZXMoKSB7XG4gICAgdGhpcy50b29sdGlwUmVmLmNyZWF0ZVRvb2x0aXAoKTtcbiAgfVxuXG4gIGNsb3NlTm9kZXMoKSB7XG4gICAgdGhpcy50b29sdGlwUmVmLmRpc3Bvc2VUb29sdGlwKCk7XG4gIH1cblxuICB1cGRhdGVQb3NpdGlvbigpIHtcbiAgICB0aGlzLnRvb2x0aXBSZWYudXBkYXRlUG9zaXRpb24oKTtcbiAgfVxuXG4gIG9uU2hvd05vZGVzKCkge1xuICAgIHRoaXMuY29udGFpbmVyV2lkdGggPSB0aGlzLnNlbGVjdFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoICsgJ3B4JztcbiAgICB0aGlzLnNob3cuZW1pdCgpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG9uSGlkZU5vZGVzKCkge1xuICAgIGlmICh0aGlzLm9uVG91Y2hlZCkge1xuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICB9XG4gICAgdGhpcy5maWx0ZXJTdHJpbmcgPSAnJztcbiAgICB0aGlzLmhpZGUuZW1pdCgpO1xuICB9XG5cbiAgb25JbnB1dChldmVudDogRXZlbnQpIHtcbiAgICBjb25zdCB2YWx1ZSA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XG4gICAgdGhpcy5maWx0ZXJTdHJpbmcgPSB2YWx1ZTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG9uTm9kZUNsaWNrKG5vZGU6IFRyZWVOb2RlQ29tcG9uZW50PFQ+KSB7XG4gICAgdGhpcy5zZWxlY3ROb2RlKG5vZGUpO1xuICB9XG5cbiAgZ2V0VmlzaWJsZU5vZGVDb3VudCgpIHtcbiAgICByZXR1cm4gdGhpcy5mbGF0dGVkTm9kZXMuZmlsdGVyKG5vZGUgPT5cbiAgICAgIHRoaXMuZmlsdGVyRm4odGhpcy5maWx0ZXJTdHJpbmcsIG5vZGUpLFxuICAgICkubGVuZ3RoO1xuICB9XG5cbiAgc2VsZWN0Tm9kZShub2RlOiBUcmVlTm9kZUNvbXBvbmVudDxUPikge1xuICAgIGlmICghbm9kZS5zZWxlY3RlZCkge1xuICAgICAgdGhpcy5lbWl0VmFsdWUobm9kZS5ub2RlRGF0YS52YWx1ZSk7XG4gICAgICBpZiAodGhpcy5vbkNoYW5nZSkge1xuICAgICAgICB0aGlzLmNsb3NlTm9kZXMoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgdGhpcy5jbG9zZU9wdGlvbigpO1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfVxuXG4gIGNsb3NlT3B0aW9uKCkge1xuICAgIHRoaXMudG9vbHRpcFJlZi5kaXNwb3NlVG9vbHRpcCgpO1xuICB9XG5cbiAgdXBkYXRlU2VsZWN0RGlzcGxheSh2YWx1ZTogYW55KSB7XG4gICAgY29uc3QgcGlja2VkTm9kZSA9IHRoaXMuZmxhdHRlZE5vZGVzLmZpbmQoXG4gICAgICBub2RlID0+IHRoaXMudHJhY2tGbihub2RlLnZhbHVlKSA9PT0gdGhpcy50cmFja0ZuKHZhbHVlKSxcbiAgICApO1xuICAgIGlmIChwaWNrZWROb2RlKSB7XG4gICAgICB0aGlzLmRpc3BsYXlUZXh0ID0gdGhpcy5nZXRMYWJlbEZyb21Ob2RlKHBpY2tlZE5vZGUpLnRvU3RyaW5nKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGlzcGxheVRleHQgPSBjb2VyY2VTdHJpbmcodGhpcy50cmFja0ZuKHZhbHVlKSk7XG4gICAgfVxuICB9XG5cbiAgY2xlYXJWYWx1ZShldmVudDogRXZlbnQpIHtcbiAgICB0aGlzLmVtaXRWYWx1ZShudWxsKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHZhbHVlSW4odjogVCk6IFQge1xuICAgIHRoaXMudXBkYXRlU2VsZWN0RGlzcGxheSh2KTtcbiAgICB0aGlzLmNsb3NlTm9kZXMoKTtcbiAgICByZXR1cm4gdjtcbiAgfVxuXG4gIGdldFBsYWNlaG9sZGVyKCkge1xuICAgIHJldHVybiB0aGlzLmZpbHRlcmFibGUgJiYgdGhpcy5vcGVuZWQgPyB0aGlzLmRpc3BsYXlUZXh0IDogdGhpcy5wbGFjZWhvbGRlcjtcbiAgfVxuXG4gIGdldElucHV0VmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyYWJsZSAmJiB0aGlzLm9wZW5lZCA/ICcnIDogdGhpcy5kaXNwbGF5VGV4dDtcbiAgfVxuXG4gIC8vIGB0aGlzYCBpcyBub3QgYXZhaWxhYmxlIGluIGB0cmFja0J5YC4uLlxuICB0cmFja0J5TGFiZWwgPSAoXzogbnVtYmVyLCBub2RlOiBUcmVlTm9kZTxUPikgPT4gdGhpcy5nZXRMYWJlbEZyb21Ob2RlKG5vZGUpO1xuXG4gIHByaXZhdGUgZmxhdE5vZGVzRGF0YShub2RlczogQXJyYXk8VHJlZU5vZGU8VD4+ID0gW10pOiBBcnJheTxUcmVlTm9kZTxUPj4ge1xuICAgIHJldHVybiBub2Rlcy5yZWR1Y2UoXG4gICAgICAocHJldlZhbHVlOiBBcnJheTxUcmVlTm9kZTxUPj4sIGN1cnJlbnROb2RlKSA9PlxuICAgICAgICBwcmV2VmFsdWUuY29uY2F0KGN1cnJlbnROb2RlLCB0aGlzLmZsYXROb2Rlc0RhdGEoY3VycmVudE5vZGUuY2hpbGRyZW4pKSxcbiAgICAgIFtdLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldExhYmVsRnJvbU5vZGUobm9kZTogVHJlZU5vZGU8VD4pIHtcbiAgICByZXR1cm4gKFxuICAgICAgbm9kZS5sYWJlbCB8fFxuICAgICAgdGhpcy5sYWJlbEZuPy4obm9kZS52YWx1ZSkgfHxcbiAgICAgIGNvZXJjZVN0cmluZyh0aGlzLnRyYWNrRm4obm9kZS52YWx1ZSkpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ZpbHRlckZuKGZpbHRlclN0cmluZzogc3RyaW5nLCBub2RlOiBUcmVlTm9kZTxUPikge1xuICAgIHJldHVybiB0aGlzLmdldExhYmVsRnJvbU5vZGUobm9kZSk/LmluY2x1ZGVzKGZpbHRlclN0cmluZyA/PyAnJyk7XG4gIH1cblxuICBwcml2YXRlIF90cmFja0ZuPFQ+KHZhbHVlOiBUKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F1aS10cmVlLW5vZGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vdHJlZS1ub2RlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdHJlZS1ub2RlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBwcmVzZXJ2ZVdoaXRlc3BhY2VzOiBmYWxzZSxcbn0pXG5leHBvcnQgY2xhc3MgVHJlZU5vZGVDb21wb25lbnQ8VD4gaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBiZW06IEJlbSA9IGJ1aWxkQmVtKCdhdWktdHJlZS1ub2RlJyk7XG5cbiAgcHJpdmF0ZSBfbm9kZURhdGE6IFRyZWVOb2RlPFQ+O1xuICBwcml2YXRlIHJlYWRvbmx5IG5vZGVEYXRhJCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRyZWVOb2RlPFQ+Pih0aGlzLm5vZGVEYXRhKTtcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBub2RlRGF0YSgpIHtcbiAgICByZXR1cm4gdGhpcy5fbm9kZURhdGE7XG4gIH1cblxuICBzZXQgbm9kZURhdGEodmFsKSB7XG4gICAgaWYgKHZhbCA9PT0gdGhpcy5fbm9kZURhdGEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fbm9kZURhdGEgPSB2YWw7XG4gICAgdGhpcy5ub2RlRGF0YSQkLm5leHQodmFsKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIGdldCBsZWFmT25seSgpIHtcbiAgICByZXR1cm4gdGhpcy5fbGVhZk9ubHk7XG4gIH1cblxuICBzZXQgbGVhZk9ubHkodmFsOiBib29sZWFuIHwgJycpIHtcbiAgICB0aGlzLl9sZWFmT25seSA9IGNvZXJjZUF0dHJCb29sZWFuKHZhbCk7XG4gIH1cblxuICBAVmlld0NoaWxkKCd0aXRsZVJlZicsIHsgc3RhdGljOiB0cnVlIH0pXG4gIHRpdGxlUmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICBAVmlld0NoaWxkcmVuKFRyZWVOb2RlQ29tcG9uZW50KVxuICBjaGlsZE5vZGVzOiBRdWVyeUxpc3Q8VHJlZU5vZGVDb21wb25lbnQ8VD4+O1xuXG4gIHNlbGVjdGVkID0gZmFsc2U7XG4gIHZpc2libGUgPSB0cnVlO1xuICBpc0xlYWYgPSBmYWxzZTtcblxuICBwcml2YXRlIF9sZWFmT25seSA9IHRydWU7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2VsZWN0OiBUcmVlU2VsZWN0Q29tcG9uZW50PFQ+O1xuICBzZWxlY3RlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIHNlbGZWaXNpYmxlJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgdmlzaWJsZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2VsZWN0OiBUcmVlU2VsZWN0Q29tcG9uZW50PFQ+LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgKSB7XG4gICAgdGhpcy5zZWxlY3QgPSBzZWxlY3Q7XG4gICAgdGhpcy5zZWxlY3RlZCQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuc2VsZWN0Lm1vZGVsJCxcbiAgICAgIHRoaXMubm9kZURhdGEkJC5waXBlKG1hcChkYXRhID0+IGRhdGEudmFsdWUpKSxcbiAgICBdKS5waXBlKFxuICAgICAgbWFwKFxuICAgICAgICAoW3NlbGVjdFZhbHVlLCBzZWxmVmFsdWVdKSA9PlxuICAgICAgICAgIHNlbGVjdFZhbHVlICYmXG4gICAgICAgICAgdGhpcy5zZWxlY3QudHJhY2tGbihzZWxlY3RWYWx1ZSkgPT09IHRoaXMuc2VsZWN0LnRyYWNrRm4oc2VsZlZhbHVlKSxcbiAgICAgICksXG4gICAgICB0YXAoc2VsZWN0ZWQgPT4ge1xuICAgICAgICB0aGlzLnNlbGVjdGVkID0gc2VsZWN0ZWQ7XG4gICAgICB9KSxcbiAgICAgIHB1Ymxpc2hSZXBsYXkoMSksXG4gICAgICByZWZDb3VudCgpLFxuICAgICk7XG4gICAgdGhpcy5zZWxmVmlzaWJsZSQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuc2VsZWN0LmZpbHRlclN0cmluZyQsXG4gICAgICB0aGlzLm5vZGVEYXRhJCQsXG4gICAgXSkucGlwZShcbiAgICAgIG1hcCgoW2ZpbHRlclN0cmluZywgbm9kZURhdGFdKSA9PlxuICAgICAgICB0aGlzLnNlbGVjdC5maWx0ZXJGbihmaWx0ZXJTdHJpbmcsIG5vZGVEYXRhKSxcbiAgICAgICksXG4gICAgICBwdWJsaXNoUmVwbGF5KDEpLFxuICAgICAgcmVmQ291bnQoKSxcbiAgICApO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGNvbnN0IGhhc1Zpc2libGVDaGlsZE5vZGVzJCA9IHRoaXMuY2hpbGROb2Rlcy5jaGFuZ2VzLnBpcGUoXG4gICAgICBzdGFydFdpdGgodGhpcy5jaGlsZE5vZGVzKSxcbiAgICAgIHN3aXRjaE1hcCgobm9kZXM6IFF1ZXJ5TGlzdDxUcmVlTm9kZUNvbXBvbmVudDxUPj4pID0+XG4gICAgICAgIG5vZGVzLmxlbmd0aCA+IDBcbiAgICAgICAgICA/IGNvbWJpbmVMYXRlc3Qobm9kZXMubWFwKG5vZGUgPT4gbm9kZS52aXNpYmxlJCkpXG4gICAgICAgICAgOiBvZihbZmFsc2VdKSxcbiAgICAgICksXG4gICAgICBtYXAodmlzaWJsZSA9PiB2aXNpYmxlLnNvbWUodmFsdWUgPT4gdmFsdWUpKSxcbiAgICAgIHRhcChoYXNWaXNpYmxlQ2hpbGRyZW4gPT4gKHRoaXMuaXNMZWFmID0gIWhhc1Zpc2libGVDaGlsZHJlbikpLFxuICAgICk7XG4gICAgdGhpcy52aXNpYmxlJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5zZWxmVmlzaWJsZSQsXG4gICAgICBoYXNWaXNpYmxlQ2hpbGROb2RlcyQsXG4gICAgXSkucGlwZShcbiAgICAgIG1hcCh2aXNpYmxlID0+IHZpc2libGUuc29tZSh2YWx1ZSA9PiB2YWx1ZSkpLFxuICAgICAgcHVibGlzaFJlcGxheSgxKSxcbiAgICAgIHJlZkNvdW50KCksXG4gICAgKTtcblxuICAgIHRoaXMudmlzaWJsZSQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCQpKS5zdWJzY3JpYmUodmlzaWJsZSA9PiB7XG4gICAgICB0aGlzLnZpc2libGUgPSB2aXNpYmxlO1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG4gICAgdGhpcy5zZWxlY3RlZCQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCQpKS5zdWJzY3JpYmUoc2VsZWN0ZWQgPT4ge1xuICAgICAgdGhpcy5zZWxlY3RlZCA9IHNlbGVjdGVkO1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5zZWxlY3RlZCkge1xuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgdGhpcy5zY3JvbGxUb05vZGUodGhpcyk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3kkJC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JCQuY29tcGxldGUoKTtcbiAgfVxuXG4gIG9uQ2xpY2soKSB7XG4gICAgaWYgKHRoaXMubm9kZURhdGEuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMubGVhZk9ubHkgJiYgIXRoaXMuaXNMZWFmKSB7XG4gICAgICB0aGlzLnN3aXRjaEV4cGFuZGVkKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0Lm9uTm9kZUNsaWNrKHRoaXMpO1xuICB9XG5cbiAgc3dpdGNoRXhwYW5kZWQoKSB7XG4gICAgdGhpcy5ub2RlRGF0YS5leHBhbmRlZCA9ICF0aGlzLm5vZGVEYXRhLmV4cGFuZGVkO1xuICAgIGlmICh0aGlzLm5vZGVEYXRhLmV4cGFuZGVkICYmIHRoaXMuY2hpbGROb2Rlcy5sYXN0KSB7XG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICB0aGlzLnNjcm9sbFRvTm9kZSh0aGlzLmNoaWxkTm9kZXMubGFzdCk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgIHRoaXMuc2VsZWN0LnVwZGF0ZVBvc2l0aW9uKCk7XG4gICAgfSk7XG4gIH1cblxuICBnZXRJY29uKCkge1xuICAgIHJldHVybiB0aGlzLm5vZGVEYXRhLmV4cGFuZGVkXG4gICAgICA/IHRoaXMubm9kZURhdGEuZXhwYW5kZWRJY29uIHx8IHRoaXMubm9kZURhdGEuaWNvblxuICAgICAgOiB0aGlzLm5vZGVEYXRhLmljb247XG4gIH1cblxuICB0cmFja0J5TGFiZWwoXzogbnVtYmVyLCBkYXRhOiBUcmVlTm9kZTxUPikge1xuICAgIHJldHVybiBkYXRhLmxhYmVsO1xuICB9XG5cbiAgc2Nyb2xsVG9Ob2RlKG5vZGU6IFRyZWVOb2RlQ29tcG9uZW50PFQ+KSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0Lm5vZGVMaXN0UmVmKSB7XG4gICAgICBzY3JvbGxJbnRvVmlldyhcbiAgICAgICAgdGhpcy5zZWxlY3Qubm9kZUxpc3RSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgbm9kZS50aXRsZVJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJhdWktdHJlZS1zZWxlY3RcIlxuICBbY2xhc3MuaXNEaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gIFtjbGFzcy5pc0NsZWFyYWJsZV09XCJpc0NsZWFyYWJsZVwiXG4gICNzZWxlY3RSZWZcbiAgI3Rvb2x0aXBSZWY9XCJhdWlUb29sdGlwXCJcbiAgW2F1aVRvb2x0aXBdPVwidGVtcGxhdGVSZWZcIlxuICBbYXVpVG9vbHRpcERpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgYXVpVG9vbHRpcFRyaWdnZXI9XCJjbGlja1wiXG4gIGF1aVRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbSBzdGFydFwiXG4gIGF1aVRvb2x0aXBUeXBlPVwicGxhaW5cIlxuICAoYXVpVG9vbHRpcFNob3cpPVwib25TaG93Tm9kZXMoKVwiXG4gIChhdWlUb29sdGlwSGlkZSk9XCJvbkhpZGVOb2RlcygpXCJcbj5cbiAgPGF1aS1pbnB1dC1ncm91cD5cbiAgICA8aW5wdXRcbiAgICAgICNpbnB1dFJlZlxuICAgICAgY2xhc3M9XCJhdWktdHJlZS1zZWxlY3RfX2lucHV0XCJcbiAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICBhdWktaW5wdXRcbiAgICAgIFt2YWx1ZV09XCJnZXRJbnB1dFZhbHVlKClcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJnZXRQbGFjZWhvbGRlcigpXCJcbiAgICAgIFtyZWFkb25seV09XCJpbnB1dFJlYWRvbmx5XCJcbiAgICAgIChpbnB1dCk9XCJvbklucHV0KCRldmVudClcIlxuICAgICAgKGJsdXIpPVwiY2xvc2VOb2RlcygpXCJcbiAgICAgIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCJcbiAgICAvPlxuICAgIDxzcGFuIGF1aUlucHV0U3VmZml4IGNsYXNzPVwiYXVpLXRyZWUtc2VsZWN0X19pY29uLWNvbnRhaW5lclwiPlxuICAgICAgPGF1aS1pY29uXG4gICAgICAgIGNsYXNzPVwiYXVpLXRyZWUtc2VsZWN0X19pbmRpY2F0b3JcIlxuICAgICAgICBbaWNvbl09XCJsb2FkaW5nID8gJ3NwaW5uZXInIDogJ2NhcmV0X2Rvd25fcydcIlxuICAgICAgPjwvYXVpLWljb24+XG4gICAgICA8YXVpLWljb25cbiAgICAgICAgY2xhc3M9XCJhdWktdHJlZS1zZWxlY3RfX2NsZWFyXCJcbiAgICAgICAgaWNvbj1cImNsb3NlX3NtYWxsXCJcbiAgICAgICAgKGNsaWNrKT1cImNsZWFyVmFsdWUoJGV2ZW50KVwiXG4gICAgICA+PC9hdWktaWNvbj5cbiAgICA8L3NwYW4+XG4gIDwvYXVpLWlucHV0LWdyb3VwPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjdGVtcGxhdGVSZWY+XG4gIDxkaXZcbiAgICBjbGFzcz1cImF1aS10cmVlLW5vZGUtY29udGFpbmVyXCJcbiAgICBbc3R5bGUubWluV2lkdGhdPVwiY29udGFpbmVyV2lkdGhcIlxuICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxuICA+XG4gICAgPGRpdiAjbm9kZUxpc3RSZWYgY2xhc3M9XCJhdWktdHJlZS1ub2RlLWNvbnRhaW5lcl9fY29udGVudFwiPlxuICAgICAgPGF1aS10cmVlLW5vZGVcbiAgICAgICAgKm5nRm9yPVwibGV0IGRhdGEgb2Ygbm9kZXNEYXRhOyB0cmFja0J5OiB0cmFja0J5TGFiZWxcIlxuICAgICAgICBbbm9kZURhdGFdPVwiZGF0YVwiXG4gICAgICAgIFtsZWFmT25seV09XCJsZWFmT25seVwiXG4gICAgICA+PC9hdWktdHJlZS1ub2RlPlxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgICpuZ0lmPVwiIWdldFZpc2libGVOb2RlQ291bnQoKVwiXG4gICAgICBjbGFzcz1cImF1aS10cmVlLW5vZGUtY29udGFpbmVyX19wbGFjZWhvbGRlclwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXVpLXRyZWUtbm9kZS1wbGFjZWhvbGRlclwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIiwiPGRpdlxuICBbaGlkZGVuXT1cIiF2aXNpYmxlXCJcbiAgY2xhc3M9XCJhdWktdHJlZS1ub2RlXCJcbiAgW2NsYXNzLmlzRGlzYWJsZWRdPVwibm9kZURhdGEuZGlzYWJsZWRcIlxuICBbY2xhc3MuaXNTZWxlY3RlZF09XCJzZWxlY3RlZFwiXG4gIFthdHRyLmRhdGEtdmFsdWVdPVwibm9kZURhdGEudmFsdWVcIlxuPlxuICA8ZGl2IGNsYXNzPVwiYXVpLXRyZWUtbm9kZV9fY29udGVudFwiPlxuICAgIDxhdWktaWNvblxuICAgICAgKm5nSWY9XCJub2RlRGF0YS5jaGlsZHJlblwiXG4gICAgICBjbGFzcz1cImF1aS10cmVlLW5vZGVfX2luZGljYXRvclwiXG4gICAgICBbaWNvbl09XCJub2RlRGF0YS5leHBhbmRlZCA/ICdhbmdsZV9kb3duJyA6ICdhbmdsZV9yaWdodCdcIlxuICAgICAgKGNsaWNrKT1cInN3aXRjaEV4cGFuZGVkKClcIlxuICAgID48L2F1aS1pY29uPlxuICAgIDxzcGFuXG4gICAgICAjdGl0bGVSZWZcbiAgICAgIGNsYXNzPVwiYXVpLXRyZWUtbm9kZV9fdGl0bGVcIlxuICAgICAgW2NsYXNzLmlzRGlzYWJsZWRdPVwibm9kZURhdGEuZGlzYWJsZWRcIlxuICAgICAgW2NsYXNzLmlzU2VsZWN0ZWRdPVwic2VsZWN0ZWRcIlxuICAgICAgW2NsYXNzLnVuc2VsZWN0YWJsZV09XCJsZWFmT25seSAmJiAhaXNMZWFmXCJcbiAgICAgIChjbGljayk9XCJvbkNsaWNrKClcIlxuICAgID5cbiAgICAgIDxhdWktaWNvblxuICAgICAgICAqbmdJZj1cIm5vZGVEYXRhLmljb25cIlxuICAgICAgICBtYXJnaW49XCJyaWdodFwiXG4gICAgICAgIFtpY29uXT1cImdldEljb24oKVwiXG4gICAgICA+PC9hdWktaWNvbj5cbiAgICAgIHt7IG5vZGVEYXRhLmxhYmVsIH19XG4gICAgPC9zcGFuPlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgICpuZ0lmPVwibm9kZURhdGEuY2hpbGRyZW5cIlxuICAgIFtoaWRkZW5dPVwiIW5vZGVEYXRhLmV4cGFuZGVkXCJcbiAgICBjbGFzcz1cImF1aS10cmVlLW5vZGVfX2NoaWxkcmVuXCJcbiAgPlxuICAgIDxhdWktdHJlZS1ub2RlXG4gICAgICAqbmdGb3I9XCJsZXQgZGF0YSBvZiBub2RlRGF0YS5jaGlsZHJlbjsgdHJhY2tCeTogdHJhY2tCeUxhYmVsXCJcbiAgICAgIFtub2RlRGF0YV09XCJkYXRhXCJcbiAgICAgIFtsZWFmT25seV09XCJsZWFmT25seVwiXG4gICAgPjwvYXVpLXRyZWUtbm9kZT5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|