@ardium-ui/ui 4.2.2-alpha.0 → 4.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/_internal/ngmodel-component.mjs +1 -2
- package/esm2022/lib/calendar/calendar.component.mjs +18 -15
- package/esm2022/lib/calendar/calendar.directives.mjs +107 -0
- package/esm2022/lib/calendar/calendar.internal-directives.mjs +22 -0
- package/esm2022/lib/calendar/calendar.module.mjs +51 -4
- package/esm2022/lib/calendar/index.mjs +2 -1
- package/esm2022/lib/calendar/views/days-view/days-view.component.mjs +4 -4
- package/esm2022/lib/checkbox/checkbox.component.mjs +17 -5
- package/esm2022/lib/checkbox/checkbox.directives.mjs +14 -0
- package/esm2022/lib/checkbox/checkbox.internal-directives.mjs +15 -0
- package/esm2022/lib/checkbox/checkbox.module.mjs +9 -7
- package/esm2022/lib/checkbox/checkbox.types.mjs +1 -1
- package/esm2022/lib/checkbox/index.mjs +2 -1
- package/esm2022/lib/checkbox-list/checkbox-list.component.mjs +8 -4
- package/esm2022/lib/checkbox-list/checkbox-list.directives.mjs +14 -0
- package/esm2022/lib/checkbox-list/checkbox-list.module.mjs +9 -7
- package/esm2022/lib/checkbox-list/index.mjs +2 -1
- package/esm2022/lib/file-inputs/file-input-base.defaults.mjs +3 -3
- package/esm2022/lib/inputs/date-input/date-input.component.mjs +17 -6
- package/esm2022/lib/inputs/date-input/date-input.directive.mjs +107 -3
- package/esm2022/lib/inputs/date-input/date-input.module.mjs +62 -4
- package/esm2022/lib/inputs/digit-input/digit-input.component.mjs +7 -7
- package/esm2022/lib/radio/radio-group.component.mjs +4 -4
- package/fesm2022/ardium-ui-ui.mjs +438 -49
- package/fesm2022/ardium-ui-ui.mjs.map +1 -1
- package/lib/_internal/ngmodel-component.d.ts +0 -1
- package/lib/calendar/calendar.component.d.ts +13 -11
- package/lib/calendar/calendar.directives.d.ts +51 -0
- package/lib/calendar/calendar.internal-directives.d.ts +17 -0
- package/lib/calendar/calendar.module.d.ts +6 -5
- package/lib/calendar/index.d.ts +1 -0
- package/lib/checkbox/checkbox.component.d.ts +12 -2
- package/lib/checkbox/checkbox.directives.d.ts +9 -0
- package/lib/checkbox/checkbox.internal-directives.d.ts +10 -0
- package/lib/checkbox/checkbox.module.d.ts +4 -2
- package/lib/checkbox/checkbox.types.d.ts +5 -0
- package/lib/checkbox/index.d.ts +1 -0
- package/lib/checkbox-list/checkbox-list.component.d.ts +3 -1
- package/lib/checkbox-list/checkbox-list.directives.d.ts +9 -0
- package/lib/checkbox-list/checkbox-list.module.d.ts +5 -3
- package/lib/checkbox-list/index.d.ts +1 -0
- package/lib/file-inputs/file-input-base.defaults.d.ts +2 -2
- package/lib/inputs/date-input/date-input.component.d.ts +11 -2
- package/lib/inputs/date-input/date-input.directive.d.ts +50 -1
- package/lib/inputs/date-input/date-input.module.d.ts +10 -8
- package/lib/inputs/digit-input/digit-input.component.d.ts +0 -1
- package/lib/radio/radio-group.component.d.ts +2 -2
- package/package.json +1 -1
- package/prebuilt-themes/default/calendar.css +0 -1
- package/prebuilt-themes/default/calendar.css.map +1 -1
- package/themes/default/calendar.scss +1 -1
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export * from './checkbox.component';
|
|
2
2
|
export * from './checkbox.defaults';
|
|
3
|
+
export * from './checkbox.directives';
|
|
3
4
|
export * from './checkbox.module';
|
|
4
5
|
export * from './checkbox.types';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NoZWNrYm94L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxrQkFBa0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY2hlY2tib3guY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9jaGVja2JveC5kZWZhdWx0cyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vY2hlY2tib3guZGlyZWN0aXZlcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vY2hlY2tib3gubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9jaGVja2JveC50eXBlcyc7XHJcblxyXG4iXX0=
|
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, HostBinding, Inject, Input, ViewEncapsulation, computed, input, output, signal, } from '@angular/core';
|
|
1
|
+
import { ChangeDetectionStrategy, Component, HostBinding, Inject, Input, ViewEncapsulation, computed, contentChild, input, output, signal, } from '@angular/core';
|
|
2
2
|
import { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';
|
|
3
3
|
import { SimpleItemStorage } from '../_internal/item-storages/simple-item-storage';
|
|
4
4
|
import { _NgModelComponentBase } from '../_internal/ngmodel-component';
|
|
5
5
|
import { ARD_CHECKBOX_LIST_DEFAULTS } from './checkbox-list.defaults';
|
|
6
|
+
import { ArdCheckboxListCheckboxTemplateDirective } from './checkbox-list.directives';
|
|
6
7
|
import * as i0 from "@angular/core";
|
|
7
8
|
import * as i1 from "@angular/common";
|
|
8
9
|
import * as i2 from "../checkbox/checkbox.component";
|
|
10
|
+
import * as i3 from "../checkbox/checkbox.internal-directives";
|
|
9
11
|
export class ArdiumCheckboxListComponent extends _NgModelComponentBase {
|
|
10
12
|
constructor(defaults) {
|
|
11
13
|
super(defaults);
|
|
@@ -32,6 +34,8 @@ export class ArdiumCheckboxListComponent extends _NgModelComponentBase {
|
|
|
32
34
|
this.valueChange = output();
|
|
33
35
|
this.changeEvent = output({ alias: 'change' });
|
|
34
36
|
this._isViewInit = false;
|
|
37
|
+
//! templates
|
|
38
|
+
this.checkboxTemplate = contentChild(ArdCheckboxListCheckboxTemplateDirective);
|
|
35
39
|
}
|
|
36
40
|
get _htmlIdHostAttribute() {
|
|
37
41
|
return this.htmlId();
|
|
@@ -93,11 +97,11 @@ export class ArdiumCheckboxListComponent extends _NgModelComponentBase {
|
|
|
93
97
|
this.selectItem(v);
|
|
94
98
|
}
|
|
95
99
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdiumCheckboxListComponent, deps: [{ token: ARD_CHECKBOX_LIST_DEFAULTS }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
96
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ArdiumCheckboxListComponent, selector: "ard-checkbox-list", inputs: { valueFrom: { classPropertyName: "valueFrom", publicName: "valueFrom", isSignal: true, isRequired: false, transformFunction: null }, labelFrom: { classPropertyName: "labelFrom", publicName: "labelFrom", isSignal: true, isRequired: false, transformFunction: null }, disabledFrom: { classPropertyName: "disabledFrom", publicName: "disabledFrom", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: false, isRequired: false, transformFunction: null }, compareWith: { classPropertyName: "compareWith", publicName: "compareWith", isSignal: true, isRequired: false, transformFunction: null }, invertDisabled: { classPropertyName: "invertDisabled", publicName: "invertDisabled", isSignal: true, isRequired: false, transformFunction: null }, maxSelectedItems: { classPropertyName: "maxSelectedItems", publicName: "maxSelectedItems", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, compact: { classPropertyName: "compact", publicName: "compact", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange", changeEvent: "change" }, host: { properties: { "attr.id": "this._htmlIdHostAttribute" } }, usesInheritance: true, ngImport: i0, template: "<div\r\n class=\"ard-checkbox-list\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n @for (item of items; track item.index) {\r\n <div\r\n class=\"ard-checkbox-list__item\"\r\n [class.ard-item-highlighted]=\"item.highlighted()\"\r\n [class.ard-item-disabled]=\"item.disabled()\"\r\n (mouseover)=\"onItemHighlight(item)\"\r\n (mouseleave)=\"onItemBlur()\"\r\n (click)=\"toggleItem(item)\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <ard-checkbox\r\n [selected]=\"item.selected()\"\r\n [disabled]=\"item.disabled()\"\r\n [color]=\"color()\"\r\n [htmlId]=\"htmlId() + item.index\"\r\n [tabIndex]=\"tabIndex()\"\r\n (focus)=\"onFocus($event)\"\r\n (focus)=\"onItemFocus(item)\"\r\n (blur)=\"onBlur($event)\"\r\n (blur)=\"onItemBlur()\"\r\n (select)=\"selectItem(item)\"\r\n (unselect)=\"unselectItem(item)\"\r\n (click)=\"$event.stopPropagation()\"\r\n />\r\n <label [for]=\"htmlId() + item.index\">\r\n {{ item.label() }}\r\n </label>\r\n </div>\r\n }\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i2.ArdiumCheckboxComponent, selector: "ard-checkbox", inputs: ["color", "unselectedColor", "state"], outputs: ["stateChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
100
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ArdiumCheckboxListComponent, selector: "ard-checkbox-list", inputs: { valueFrom: { classPropertyName: "valueFrom", publicName: "valueFrom", isSignal: true, isRequired: false, transformFunction: null }, labelFrom: { classPropertyName: "labelFrom", publicName: "labelFrom", isSignal: true, isRequired: false, transformFunction: null }, disabledFrom: { classPropertyName: "disabledFrom", publicName: "disabledFrom", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: false, isRequired: false, transformFunction: null }, compareWith: { classPropertyName: "compareWith", publicName: "compareWith", isSignal: true, isRequired: false, transformFunction: null }, invertDisabled: { classPropertyName: "invertDisabled", publicName: "invertDisabled", isSignal: true, isRequired: false, transformFunction: null }, maxSelectedItems: { classPropertyName: "maxSelectedItems", publicName: "maxSelectedItems", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, compact: { classPropertyName: "compact", publicName: "compact", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange", changeEvent: "change" }, host: { properties: { "attr.id": "this._htmlIdHostAttribute" } }, queries: [{ propertyName: "checkboxTemplate", first: true, predicate: ArdCheckboxListCheckboxTemplateDirective, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div\r\n class=\"ard-checkbox-list\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n @for (item of items; track item.index) {\r\n <div\r\n class=\"ard-checkbox-list__item\"\r\n [class.ard-item-highlighted]=\"item.highlighted()\"\r\n [class.ard-item-disabled]=\"item.disabled()\"\r\n (mouseover)=\"onItemHighlight(item)\"\r\n (mouseleave)=\"onItemBlur()\"\r\n (click)=\"toggleItem(item)\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <ard-checkbox\r\n [selected]=\"item.selected()\"\r\n [disabled]=\"item.disabled()\"\r\n [color]=\"color()\"\r\n [htmlId]=\"htmlId() + item.index\"\r\n [tabIndex]=\"tabIndex()\"\r\n (focus)=\"onFocus($event)\"\r\n (focus)=\"onItemFocus(item)\"\r\n (blur)=\"onBlur($event)\"\r\n (blur)=\"onItemBlur()\"\r\n (select)=\"selectItem(item)\"\r\n (unselect)=\"unselectItem(item)\"\r\n (click)=\"$event.stopPropagation()\"\r\n >\r\n <ng-template _ard-tmp-repository [checkboxTmp]=\"checkboxTemplate()\" />\r\n </ard-checkbox>\r\n <label [for]=\"htmlId() + item.index\">\r\n {{ item.label() }}\r\n </label>\r\n </div>\r\n }\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i2.ArdiumCheckboxComponent, selector: "ard-checkbox", inputs: ["color", "unselectedColor", "state"], outputs: ["stateChange"] }, { kind: "directive", type: i3._CheckboxTemplateRepositoryDirective, selector: "ard-checkbox > ng-template[_ard-tmp-repository]", inputs: ["checkboxTmp"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
97
101
|
}
|
|
98
102
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdiumCheckboxListComponent, decorators: [{
|
|
99
103
|
type: Component,
|
|
100
|
-
args: [{ selector: 'ard-checkbox-list', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n class=\"ard-checkbox-list\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n @for (item of items; track item.index) {\r\n <div\r\n class=\"ard-checkbox-list__item\"\r\n [class.ard-item-highlighted]=\"item.highlighted()\"\r\n [class.ard-item-disabled]=\"item.disabled()\"\r\n (mouseover)=\"onItemHighlight(item)\"\r\n (mouseleave)=\"onItemBlur()\"\r\n (click)=\"toggleItem(item)\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <ard-checkbox\r\n [selected]=\"item.selected()\"\r\n [disabled]=\"item.disabled()\"\r\n [color]=\"color()\"\r\n [htmlId]=\"htmlId() + item.index\"\r\n [tabIndex]=\"tabIndex()\"\r\n (focus)=\"onFocus($event)\"\r\n (focus)=\"onItemFocus(item)\"\r\n (blur)=\"onBlur($event)\"\r\n (blur)=\"onItemBlur()\"\r\n (select)=\"selectItem(item)\"\r\n (unselect)=\"unselectItem(item)\"\r\n (click)=\"$event.stopPropagation()\"\r\n />\r\n <label [for]=\"htmlId() + item.index\">\r\n {{ item.label() }}\r\n </label>\r\n </div>\r\n }\r\n</div>\r\n" }]
|
|
104
|
+
args: [{ selector: 'ard-checkbox-list', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n class=\"ard-checkbox-list\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n @for (item of items; track item.index) {\r\n <div\r\n class=\"ard-checkbox-list__item\"\r\n [class.ard-item-highlighted]=\"item.highlighted()\"\r\n [class.ard-item-disabled]=\"item.disabled()\"\r\n (mouseover)=\"onItemHighlight(item)\"\r\n (mouseleave)=\"onItemBlur()\"\r\n (click)=\"toggleItem(item)\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <ard-checkbox\r\n [selected]=\"item.selected()\"\r\n [disabled]=\"item.disabled()\"\r\n [color]=\"color()\"\r\n [htmlId]=\"htmlId() + item.index\"\r\n [tabIndex]=\"tabIndex()\"\r\n (focus)=\"onFocus($event)\"\r\n (focus)=\"onItemFocus(item)\"\r\n (blur)=\"onBlur($event)\"\r\n (blur)=\"onItemBlur()\"\r\n (select)=\"selectItem(item)\"\r\n (unselect)=\"unselectItem(item)\"\r\n (click)=\"$event.stopPropagation()\"\r\n >\r\n <ng-template _ard-tmp-repository [checkboxTmp]=\"checkboxTemplate()\" />\r\n </ard-checkbox>\r\n <label [for]=\"htmlId() + item.index\">\r\n {{ item.label() }}\r\n </label>\r\n </div>\r\n }\r\n</div>\r\n" }]
|
|
101
105
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
102
106
|
type: Inject,
|
|
103
107
|
args: [ARD_CHECKBOX_LIST_DEFAULTS]
|
|
@@ -109,4 +113,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
109
113
|
}], value: [{
|
|
110
114
|
type: Input
|
|
111
115
|
}] } });
|
|
112
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NoZWNrYm94LWxpc3QvY2hlY2tib3gtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NoZWNrYm94LWxpc3QvY2hlY2tib3gtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFDTCxpQkFBaUIsRUFDakIsUUFBUSxFQUNSLEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxpQkFBaUIsRUFBeUIsTUFBTSxnREFBZ0QsQ0FBQztBQUMxRyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUl2RSxPQUFPLEVBQUUsMEJBQTBCLEVBQTJCLE1BQU0sMEJBQTBCLENBQUM7Ozs7QUFVL0YsTUFBTSxPQUFPLDJCQUE0QixTQUFRLHFCQUFxQjtJQUVwRSxZQUFnRCxRQUFpQztRQUMvRSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFRVCxhQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUNuQywwQ0FBMEM7UUFDakMsb0JBQWUsR0FBRyxNQUFNLENBQU8sSUFBSSxDQUFDLENBQUM7UUFDckMsb0JBQWUsR0FBRyxNQUFNLENBQVEsS0FBSyxDQUFDLENBQUM7UUFDdkMsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDckIsbUJBQWMsR0FBRyxlQUFlLENBQUM7UUFFekIsaUJBQVksR0FBRyxJQUFJLGlCQUFpQixDQUFDLElBQUks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Q0FBQyxDQUFDLENBQUM7SUFDckIsQ0FBQzsrR0E5R1UsMkJBQTJCLGtCQUVsQiwwQkFBMEI7bUdBRm5DLDJCQUEyQix5b0RDN0J4QyxxbUNBa0NBOzs0RkRMYSwyQkFBMkI7a0JBUHZDLFNBQVM7K0JBQ0UsbUJBQW1CLGlCQUdkLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU07OzBCQUlsQyxNQUFNOzJCQUFDLDBCQUEwQjt5Q0FLMUMsb0JBQW9CO3NCQUR2QixXQUFXO3VCQUFDLFNBQVM7Z0JBbUJsQixLQUFLO3NCQURSLEtBQUs7Z0JBNEJGLEtBQUs7c0JBRFIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDb21wb25lbnQsXHJcbiAgSG9zdEJpbmRpbmcsXHJcbiAgSW5qZWN0LFxyXG4gIElucHV0LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIGNvbXB1dGVkLFxyXG4gIGlucHV0LFxyXG4gIG91dHB1dCxcclxuICBzaWduYWwsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgY29lcmNlTnVtYmVyUHJvcGVydHkgfSBmcm9tICdAYXJkaXVtLXVpL2RldmtpdCc7XHJcbmltcG9ydCB7IFNpbXBsZUl0ZW1TdG9yYWdlLCBTaW1wbGVJdGVtU3RvcmFnZUhvc3QgfSBmcm9tICcuLi9faW50ZXJuYWwvaXRlbS1zdG9yYWdlcy9zaW1wbGUtaXRlbS1zdG9yYWdlJztcclxuaW1wb3J0IHsgX05nTW9kZWxDb21wb25lbnRCYXNlIH0gZnJvbSAnLi4vX2ludGVybmFsL25nbW9kZWwtY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29tcG9uZW50Q29sb3IgfSBmcm9tICcuLi90eXBlcy9jb2xvcnMudHlwZXMnO1xyXG5pbXBvcnQgeyBBcmRPcHRpb25TaW1wbGUsIENvbXBhcmVXaXRoRm4gfSBmcm9tICcuLi90eXBlcy9pdGVtLXN0b3JhZ2UudHlwZXMnO1xyXG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJy4uL3R5cGVzL3V0aWxpdHkudHlwZXMnO1xyXG5pbXBvcnQgeyBBUkRfQ0hFQ0tCT1hfTElTVF9ERUZBVUxUUywgQXJkQ2hlY2tib3hMaXN0RGVmYXVsdHMgfSBmcm9tICcuL2NoZWNrYm94LWxpc3QuZGVmYXVsdHMnO1xyXG5pbXBvcnQgeyBDaGVja2JveExpc3RBbGlnblR5cGUgfSBmcm9tICcuL2NoZWNrYm94LWxpc3QudHlwZXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcmQtY2hlY2tib3gtbGlzdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NoZWNrYm94LWxpc3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NoZWNrYm94LWxpc3QuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXJkaXVtQ2hlY2tib3hMaXN0Q29tcG9uZW50IGV4dGVuZHMgX05nTW9kZWxDb21wb25lbnRCYXNlIGltcGxlbWVudHMgU2ltcGxlSXRlbVN0b3JhZ2VIb3N0LCBBZnRlclZpZXdJbml0IHtcclxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVhZG9ubHkgX0RFRkFVTFRTITogQXJkQ2hlY2tib3hMaXN0RGVmYXVsdHM7XHJcbiAgY29uc3RydWN0b3IoQEluamVjdChBUkRfQ0hFQ0tCT1hfTElTVF9ERUZBVUxUUykgZGVmYXVsdHM6IEFyZENoZWNrYm94TGlzdERlZmF1bHRzKSB7XHJcbiAgICBzdXBlcihkZWZhdWx0cyk7XHJcbiAgfVxyXG5cclxuICBASG9zdEJpbmRpbmcoJ2F0dHIuaWQnKVxyXG4gIGdldCBfaHRtbElkSG9zdEF0dHJpYnV0ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmh0bWxJZCgpO1xyXG4gIH1cclxuXHJcbiAgcmVhZG9ubHkgREVGQVVMVFMgPSB0aGlzLl9ERUZBVUxUUztcclxuICAvLyBzdGF0aWMgdmFsdWVzLiBOb3QgbWVhbnQgdG8gYmUgY2hhbmdlZC5cclxuICByZWFkb25seSBtdWx0aXNlbGVjdGFibGUgPSBzaWduYWw8dHJ1ZT4odHJ1ZSk7XHJcbiAgcmVhZG9ubHkgaXNWYWx1ZVJlcXVpcmVkID0gc2lnbmFsPGZhbHNlPihmYWxzZSk7XHJcbiAgcmVhZG9ubHkgX2NvbXBvbmVudElkID0gJzMwMCc7XHJcbiAgcmVhZG9ubHkgX2NvbXBvbmVudE5hbWUgPSAnY2hlY2tib3gtbGlzdCc7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2l0ZW1TdG9yYWdlID0gbmV3IFNpbXBsZUl0ZW1TdG9yYWdlKHRoaXMpO1xyXG5cclxuICByZWFkb25seSB2YWx1ZUZyb20gPSBpbnB1dDxzdHJpbmc+KHRoaXMuREVGQVVMVFMudmFsdWVGcm9tKTtcclxuICByZWFkb25seSBsYWJlbEZyb20gPSBpbnB1dDxzdHJpbmc+KHRoaXMuREVGQVVMVFMubGFiZWxGcm9tKTtcclxuICByZWFkb25seSBkaXNhYmxlZEZyb20gPSBpbnB1dDxzdHJpbmc+KHRoaXMuREVGQVVMVFMuZGlzYWJsZWRGcm9tKTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgaXRlbXModjogYW55W10pIHtcclxuICAgIHRoaXMuX2l0ZW1TdG9yYWdlLnNldEl0ZW1zKHYpO1xyXG4gIH1cclxuICBnZXQgaXRlbXMoKTogQXJkT3B0aW9uU2ltcGxlW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1TdG9yYWdlLml0ZW1zKCk7XHJcbiAgfVxyXG5cclxuICByZWFkb25seSBjb21wYXJlV2l0aCA9IGlucHV0PE51bGxhYmxlPENvbXBhcmVXaXRoRm4+Pih0aGlzLl9ERUZBVUxUUy5jb21wYXJlV2l0aCk7XHJcblxyXG4gIHJlYWRvbmx5IGludmVydERpc2FibGVkID0gaW5wdXQ8Ym9vbGVhbiwgYW55Pih0aGlzLl9ERUZBVUxUUy5pbnZlcnREaXNhYmxlZCwgeyB0cmFuc2Zvcm06IHYgPT4gY29lcmNlQm9vbGVhblByb3BlcnR5KHYpIH0pO1xyXG5cclxuICByZWFkb25seSBtYXhTZWxlY3RlZEl0ZW1zID0gaW5wdXQ8bnVtYmVyLCBhbnk+KHRoaXMuX0RFRkFVTFRTLm1heFNlbGVjdGVkSXRlbXMsIHtcclxuICAgIHRyYW5zZm9ybTogdiA9PiBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2LCB0aGlzLl9ERUZBVUxUUy5tYXhTZWxlY3RlZEl0ZW1zKSxcclxuICB9KTtcclxuXHJcbiAgLy8hIGFwcGVhcmFuY2VcclxuICByZWFkb25seSBjb2xvciA9IGlucHV0PENvbXBvbmVudENvbG9yPih0aGlzLl9ERUZBVUxUUy5jb2xvcik7XHJcbiAgcmVhZG9ubHkgYWxpZ24gPSBpbnB1dDxDaGVja2JveExpc3RBbGlnblR5cGU+KHRoaXMuX0RFRkFVTFRTLmFsaWduKTtcclxuXHJcbiAgcmVhZG9ubHkgY29tcGFjdCA9IGlucHV0PGJvb2xlYW4sIGFueT4odGhpcy5fREVGQVVMVFMuY29tcGFjdCwgeyB0cmFuc2Zvcm06IHYgPT4gY29lcmNlQm9vbGVhblByb3BlcnR5KHYpIH0pO1xyXG5cclxuICByZWFkb25seSBuZ0NsYXNzZXMgPSBjb21wdXRlZCgoKSA9PlxyXG4gICAgW2BhcmQtY29sb3ItJHt0aGlzLmNvbG9yKCl9YCwgYGFyZC1hbGlnbi0ke3RoaXMuYWxpZ24oKX1gLCB0aGlzLmNvbXBhY3QoKSA/ICdhcmQtY29tcGFjdCcgOiAnJ10uam9pbignICcpXHJcbiAgKTtcclxuXHJcbiAgLy8hIHZhbHVlXHJcbiAgQElucHV0KClcclxuICBnZXQgdmFsdWUoKTogYW55IHtcclxuICAgIHJldHVybiB0aGlzLl9pdGVtU3RvcmFnZS52YWx1ZSgpO1xyXG4gIH1cclxuICBzZXQgdmFsdWUodjogYW55KSB7XHJcbiAgICB0aGlzLndyaXRlVmFsdWUodik7XHJcbiAgfVxyXG5cclxuICByZWFkb25seSB2YWx1ZUNoYW5nZSA9IG91dHB1dDxhbnk+KCk7XHJcbiAgcmVhZG9ubHkgY2hhbmdlRXZlbnQgPSBvdXRwdXQ8YW55Pih7IGFsaWFzOiAnY2hhbmdlJyB9KTtcclxuXHJcbiAgcHJpdmF0ZSBfdmFsdWVCZWZvcmVJbml0OiBhbnk7XHJcbiAgd3JpdGVWYWx1ZSh2OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5faXNWaWV3SW5pdCkge1xyXG4gICAgICB0aGlzLl92YWx1ZUJlZm9yZUluaXQgPSB2O1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLl9pdGVtU3RvcmFnZS53cml0ZVZhbHVlKHYpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaXNWaWV3SW5pdCA9IGZhbHNlO1xyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2lzVmlld0luaXQgPSB0cnVlO1xyXG5cclxuICAgIGlmICh0aGlzLl92YWx1ZUJlZm9yZUluaXQpIHtcclxuICAgICAgdGhpcy53cml0ZVZhbHVlKHRoaXMuX3ZhbHVlQmVmb3JlSW5pdCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgX2VtaXRDaGFuZ2UoKTogdm9pZCB7XHJcbiAgICBjb25zdCB2ID0gdGhpcy52YWx1ZTtcclxuICAgIHRoaXMuX29uQ2hhbmdlUmVnaXN0ZXJlZD8uKHYpO1xyXG4gICAgdGhpcy5jaGFuZ2VFdmVudC5lbWl0KHYpO1xyXG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHYpO1xyXG4gIH1cclxuXHJcbiAgb25JdGVtSGlnaGxpZ2h0KHY6IEFyZE9wdGlvblNpbXBsZSk6IHZvaWQge1xyXG4gICAgdGhpcy5faXRlbVN0b3JhZ2UuaGlnaGxpZ2h0U2luZ2xlSXRlbSh2KTtcclxuICB9XHJcbiAgb25JdGVtRm9jdXModjogQXJkT3B0aW9uU2ltcGxlKTogdm9pZCB7XHJcbiAgICB0aGlzLl9pdGVtU3RvcmFnZS5oaWdobGlnaHRTaW5nbGVJdGVtKHYpO1xyXG4gIH1cclxuICBvbkl0ZW1CbHVyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5faXRlbVN0b3JhZ2UudW5oaWdobGlnaHRBbGwoKTtcclxuICB9XHJcbiAgc2VsZWN0SXRlbSh2OiBBcmRPcHRpb25TaW1wbGUpOiB2b2lkIHtcclxuICAgIHRoaXMuX2l0ZW1TdG9yYWdlLnNlbGVjdEl0ZW0odik7XHJcbiAgICB0aGlzLl9lbWl0Q2hhbmdlKCk7XHJcbiAgfVxyXG4gIHVuc2VsZWN0SXRlbSh2OiBBcmRPcHRpb25TaW1wbGUpOiB2b2lkIHtcclxuICAgIHRoaXMuX2l0ZW1TdG9yYWdlLnVuc2VsZWN0SXRlbSh2KTtcclxuICAgIHRoaXMuX2VtaXRDaGFuZ2UoKTtcclxuICB9XHJcbiAgdG9nZ2xlSXRlbSh2OiBBcmRPcHRpb25TaW1wbGUpOiB2b2lkIHtcclxuICAgIGlmICh2LnNlbGVjdGVkKCkpIHtcclxuICAgICAgdGhpcy51bnNlbGVjdEl0ZW0odik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuc2VsZWN0SXRlbSh2KTtcclxuICB9XHJcbn1cclxuIiwiPGRpdlxyXG4gIGNsYXNzPVwiYXJkLWNoZWNrYm94LWxpc3RcIlxyXG4gIFtuZ0NsYXNzXT1cIm5nQ2xhc3NlcygpXCJcclxuPlxyXG4gIEBmb3IgKGl0ZW0gb2YgaXRlbXM7IHRyYWNrIGl0ZW0uaW5kZXgpIHtcclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJhcmQtY2hlY2tib3gtbGlzdF9faXRlbVwiXHJcbiAgICAgIFtjbGFzcy5hcmQtaXRlbS1oaWdobGlnaHRlZF09XCJpdGVtLmhpZ2hsaWdodGVkKClcIlxyXG4gICAgICBbY2xhc3MuYXJkLWl0ZW0tZGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZCgpXCJcclxuICAgICAgKG1vdXNlb3Zlcik9XCJvbkl0ZW1IaWdobGlnaHQoaXRlbSlcIlxyXG4gICAgICAobW91c2VsZWF2ZSk9XCJvbkl0ZW1CbHVyKClcIlxyXG4gICAgICAoY2xpY2spPVwidG9nZ2xlSXRlbShpdGVtKVwiXHJcbiAgICA+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJhcmQtZm9jdXMtb3ZlcmxheVwiPjwvZGl2PlxyXG4gICAgICA8YXJkLWNoZWNrYm94XHJcbiAgICAgICAgW3NlbGVjdGVkXT1cIml0ZW0uc2VsZWN0ZWQoKVwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cIml0ZW0uZGlzYWJsZWQoKVwiXHJcbiAgICAgICAgW2NvbG9yXT1cImNvbG9yKClcIlxyXG4gICAgICAgIFtodG1sSWRdPVwiaHRtbElkKCkgKyBpdGVtLmluZGV4XCJcclxuICAgICAgICBbdGFiSW5kZXhdPVwidGFiSW5kZXgoKVwiXHJcbiAgICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoJGV2ZW50KVwiXHJcbiAgICAgICAgKGZvY3VzKT1cIm9uSXRlbUZvY3VzKGl0ZW0pXCJcclxuICAgICAgICAoYmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiXHJcbiAgICAgICAgKGJsdXIpPVwib25JdGVtQmx1cigpXCJcclxuICAgICAgICAoc2VsZWN0KT1cInNlbGVjdEl0ZW0oaXRlbSlcIlxyXG4gICAgICAgICh1bnNlbGVjdCk9XCJ1bnNlbGVjdEl0ZW0oaXRlbSlcIlxyXG4gICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgICAvPlxyXG4gICAgICA8bGFiZWwgW2Zvcl09XCJodG1sSWQoKSArIGl0ZW0uaW5kZXhcIj5cclxuICAgICAgICB7eyBpdGVtLmxhYmVsKCkgfX1cclxuICAgICAgPC9sYWJlbD5cclxuICAgIDwvZGl2PlxyXG4gIH1cclxuPC9kaXY+XHJcbiJdfQ==
|
|
116
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NoZWNrYm94LWxpc3QvY2hlY2tib3gtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NoZWNrYm94LWxpc3QvY2hlY2tib3gtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFDTCxpQkFBaUIsRUFDakIsUUFBUSxFQUNSLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRixPQUFPLEVBQUUsaUJBQWlCLEVBQXlCLE1BQU0sZ0RBQWdELENBQUM7QUFDMUcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFJdkUsT0FBTyxFQUFFLDBCQUEwQixFQUEyQixNQUFNLDBCQUEwQixDQUFDO0FBQy9GLE9BQU8sRUFBRSx3Q0FBd0MsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7OztBQVV0RixNQUFNLE9BQU8sMkJBQTRCLFNBQVEscUJBQXFCO0lBRXBFLFlBQWdELFFBQWlDO1FBQy9FLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQVFULGFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ25DLDBDQUEwQztRQUNqQyxvQkFBZSxHQUFHLE1BQU0sQ0FBTyxJQUFJLENBQUMsQ0FBQztRQUNyQyxvQkFBZSxHQUFHLE1BQU0sQ0FBUSxLQUFLLENBQUMsQ0FBQztRQUN2QyxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQixtQkFB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Q0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDckIsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7K0dBOUdVLDJCQUEyQixrQkFFbEIsMEJBQTBCO21HQUZuQywyQkFBMkIsZ3FEQWlIRyx3Q0FBd0MsdUZDaEpuRixpdENBb0NBOzs0RkRMYSwyQkFBMkI7a0JBUHZDLFNBQVM7K0JBQ0UsbUJBQW1CLGlCQUdkLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU07OzBCQUlsQyxNQUFNOzJCQUFDLDBCQUEwQjt5Q0FLMUMsb0JBQW9CO3NCQUR2QixXQUFXO3VCQUFDLFNBQVM7Z0JBbUJsQixLQUFLO3NCQURSLEtBQUs7Z0JBNEJGLEtBQUs7c0JBRFIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDb21wb25lbnQsXHJcbiAgSG9zdEJpbmRpbmcsXHJcbiAgSW5qZWN0LFxyXG4gIElucHV0LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIGNvbXB1dGVkLFxyXG4gIGNvbnRlbnRDaGlsZCxcclxuICBpbnB1dCxcclxuICBvdXRwdXQsXHJcbiAgc2lnbmFsLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHksIGNvZXJjZU51bWJlclByb3BlcnR5IH0gZnJvbSAnQGFyZGl1bS11aS9kZXZraXQnO1xyXG5pbXBvcnQgeyBTaW1wbGVJdGVtU3RvcmFnZSwgU2ltcGxlSXRlbVN0b3JhZ2VIb3N0IH0gZnJvbSAnLi4vX2ludGVybmFsL2l0ZW0tc3RvcmFnZXMvc2ltcGxlLWl0ZW0tc3RvcmFnZSc7XHJcbmltcG9ydCB7IF9OZ01vZGVsQ29tcG9uZW50QmFzZSB9IGZyb20gJy4uL19pbnRlcm5hbC9uZ21vZGVsLWNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvbXBvbmVudENvbG9yIH0gZnJvbSAnLi4vdHlwZXMvY29sb3JzLnR5cGVzJztcclxuaW1wb3J0IHsgQXJkT3B0aW9uU2ltcGxlLCBDb21wYXJlV2l0aEZuIH0gZnJvbSAnLi4vdHlwZXMvaXRlbS1zdG9yYWdlLnR5cGVzJztcclxuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICcuLi90eXBlcy91dGlsaXR5LnR5cGVzJztcclxuaW1wb3J0IHsgQVJEX0NIRUNLQk9YX0xJU1RfREVGQVVMVFMsIEFyZENoZWNrYm94TGlzdERlZmF1bHRzIH0gZnJvbSAnLi9jaGVja2JveC1saXN0LmRlZmF1bHRzJztcclxuaW1wb3J0IHsgQXJkQ2hlY2tib3hMaXN0Q2hlY2tib3hUZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJy4vY2hlY2tib3gtbGlzdC5kaXJlY3RpdmVzJztcclxuaW1wb3J0IHsgQ2hlY2tib3hMaXN0QWxpZ25UeXBlIH0gZnJvbSAnLi9jaGVja2JveC1saXN0LnR5cGVzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXJkLWNoZWNrYm94LWxpc3QnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGVja2JveC1saXN0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jaGVja2JveC1saXN0LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFyZGl1bUNoZWNrYm94TGlzdENvbXBvbmVudCBleHRlbmRzIF9OZ01vZGVsQ29tcG9uZW50QmFzZSBpbXBsZW1lbnRzIFNpbXBsZUl0ZW1TdG9yYWdlSG9zdCwgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlYWRvbmx5IF9ERUZBVUxUUyE6IEFyZENoZWNrYm94TGlzdERlZmF1bHRzO1xyXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoQVJEX0NIRUNLQk9YX0xJU1RfREVGQVVMVFMpIGRlZmF1bHRzOiBBcmRDaGVja2JveExpc3REZWZhdWx0cykge1xyXG4gICAgc3VwZXIoZGVmYXVsdHMpO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmlkJylcclxuICBnZXQgX2h0bWxJZEhvc3RBdHRyaWJ1dGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odG1sSWQoKTtcclxuICB9XHJcblxyXG4gIHJlYWRvbmx5IERFRkFVTFRTID0gdGhpcy5fREVGQVVMVFM7XHJcbiAgLy8gc3RhdGljIHZhbHVlcy4gTm90IG1lYW50IHRvIGJlIGNoYW5nZWQuXHJcbiAgcmVhZG9ubHkgbXVsdGlzZWxlY3RhYmxlID0gc2lnbmFsPHRydWU+KHRydWUpO1xyXG4gIHJlYWRvbmx5IGlzVmFsdWVSZXF1aXJlZCA9IHNpZ25hbDxmYWxzZT4oZmFsc2UpO1xyXG4gIHJlYWRvbmx5IF9jb21wb25lbnRJZCA9ICczMDAnO1xyXG4gIHJlYWRvbmx5IF9jb21wb25lbnROYW1lID0gJ2NoZWNrYm94LWxpc3QnO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF9pdGVtU3RvcmFnZSA9IG5ldyBTaW1wbGVJdGVtU3RvcmFnZSh0aGlzKTtcclxuXHJcbiAgcmVhZG9ubHkgdmFsdWVGcm9tID0gaW5wdXQ8c3RyaW5nPih0aGlzLkRFRkFVTFRTLnZhbHVlRnJvbSk7XHJcbiAgcmVhZG9ubHkgbGFiZWxGcm9tID0gaW5wdXQ8c3RyaW5nPih0aGlzLkRFRkFVTFRTLmxhYmVsRnJvbSk7XHJcbiAgcmVhZG9ubHkgZGlzYWJsZWRGcm9tID0gaW5wdXQ8c3RyaW5nPih0aGlzLkRFRkFVTFRTLmRpc2FibGVkRnJvbSk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGl0ZW1zKHY6IGFueVtdKSB7XHJcbiAgICB0aGlzLl9pdGVtU3RvcmFnZS5zZXRJdGVtcyh2KTtcclxuICB9XHJcbiAgZ2V0IGl0ZW1zKCk6IEFyZE9wdGlvblNpbXBsZVtdIHtcclxuICAgIHJldHVybiB0aGlzLl9pdGVtU3RvcmFnZS5pdGVtcygpO1xyXG4gIH1cclxuXHJcbiAgcmVhZG9ubHkgY29tcGFyZVdpdGggPSBpbnB1dDxOdWxsYWJsZTxDb21wYXJlV2l0aEZuPj4odGhpcy5fREVGQVVMVFMuY29tcGFyZVdpdGgpO1xyXG5cclxuICByZWFkb25seSBpbnZlcnREaXNhYmxlZCA9IGlucHV0PGJvb2xlYW4sIGFueT4odGhpcy5fREVGQVVMVFMuaW52ZXJ0RGlzYWJsZWQsIHsgdHJhbnNmb3JtOiB2ID0+IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KSB9KTtcclxuXHJcbiAgcmVhZG9ubHkgbWF4U2VsZWN0ZWRJdGVtcyA9IGlucHV0PG51bWJlciwgYW55Pih0aGlzLl9ERUZBVUxUUy5tYXhTZWxlY3RlZEl0ZW1zLCB7XHJcbiAgICB0cmFuc2Zvcm06IHYgPT4gY29lcmNlTnVtYmVyUHJvcGVydHkodiwgdGhpcy5fREVGQVVMVFMubWF4U2VsZWN0ZWRJdGVtcyksXHJcbiAgfSk7XHJcblxyXG4gIC8vISBhcHBlYXJhbmNlXHJcbiAgcmVhZG9ubHkgY29sb3IgPSBpbnB1dDxDb21wb25lbnRDb2xvcj4odGhpcy5fREVGQVVMVFMuY29sb3IpO1xyXG4gIHJlYWRvbmx5IGFsaWduID0gaW5wdXQ8Q2hlY2tib3hMaXN0QWxpZ25UeXBlPih0aGlzLl9ERUZBVUxUUy5hbGlnbik7XHJcblxyXG4gIHJlYWRvbmx5IGNvbXBhY3QgPSBpbnB1dDxib29sZWFuLCBhbnk+KHRoaXMuX0RFRkFVTFRTLmNvbXBhY3QsIHsgdHJhbnNmb3JtOiB2ID0+IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KSB9KTtcclxuXHJcbiAgcmVhZG9ubHkgbmdDbGFzc2VzID0gY29tcHV0ZWQoKCkgPT5cclxuICAgIFtgYXJkLWNvbG9yLSR7dGhpcy5jb2xvcigpfWAsIGBhcmQtYWxpZ24tJHt0aGlzLmFsaWduKCl9YCwgdGhpcy5jb21wYWN0KCkgPyAnYXJkLWNvbXBhY3QnIDogJyddLmpvaW4oJyAnKVxyXG4gICk7XHJcblxyXG4gIC8vISB2YWx1ZVxyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IHZhbHVlKCk6IGFueSB7XHJcbiAgICByZXR1cm4gdGhpcy5faXRlbVN0b3JhZ2UudmFsdWUoKTtcclxuICB9XHJcbiAgc2V0IHZhbHVlKHY6IGFueSkge1xyXG4gICAgdGhpcy53cml0ZVZhbHVlKHYpO1xyXG4gIH1cclxuXHJcbiAgcmVhZG9ubHkgdmFsdWVDaGFuZ2UgPSBvdXRwdXQ8YW55PigpO1xyXG4gIHJlYWRvbmx5IGNoYW5nZUV2ZW50ID0gb3V0cHV0PGFueT4oeyBhbGlhczogJ2NoYW5nZScgfSk7XHJcblxyXG4gIHByaXZhdGUgX3ZhbHVlQmVmb3JlSW5pdDogYW55O1xyXG4gIHdyaXRlVmFsdWUodjogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuX2lzVmlld0luaXQpIHtcclxuICAgICAgdGhpcy5fdmFsdWVCZWZvcmVJbml0ID0gdjtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5faXRlbVN0b3JhZ2Uud3JpdGVWYWx1ZSh2KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2lzVmlld0luaXQgPSBmYWxzZTtcclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9pc1ZpZXdJbml0ID0gdHJ1ZTtcclxuXHJcbiAgICBpZiAodGhpcy5fdmFsdWVCZWZvcmVJbml0KSB7XHJcbiAgICAgIHRoaXMud3JpdGVWYWx1ZSh0aGlzLl92YWx1ZUJlZm9yZUluaXQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIF9lbWl0Q2hhbmdlKCk6IHZvaWQge1xyXG4gICAgY29uc3QgdiA9IHRoaXMudmFsdWU7XHJcbiAgICB0aGlzLl9vbkNoYW5nZVJlZ2lzdGVyZWQ/Lih2KTtcclxuICAgIHRoaXMuY2hhbmdlRXZlbnQuZW1pdCh2KTtcclxuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2KTtcclxuICB9XHJcblxyXG4gIG9uSXRlbUhpZ2hsaWdodCh2OiBBcmRPcHRpb25TaW1wbGUpOiB2b2lkIHtcclxuICAgIHRoaXMuX2l0ZW1TdG9yYWdlLmhpZ2hsaWdodFNpbmdsZUl0ZW0odik7XHJcbiAgfVxyXG4gIG9uSXRlbUZvY3VzKHY6IEFyZE9wdGlvblNpbXBsZSk6IHZvaWQge1xyXG4gICAgdGhpcy5faXRlbVN0b3JhZ2UuaGlnaGxpZ2h0U2luZ2xlSXRlbSh2KTtcclxuICB9XHJcbiAgb25JdGVtQmx1cigpOiB2b2lkIHtcclxuICAgIHRoaXMuX2l0ZW1TdG9yYWdlLnVuaGlnaGxpZ2h0QWxsKCk7XHJcbiAgfVxyXG4gIHNlbGVjdEl0ZW0odjogQXJkT3B0aW9uU2ltcGxlKTogdm9pZCB7XHJcbiAgICB0aGlzLl9pdGVtU3RvcmFnZS5zZWxlY3RJdGVtKHYpO1xyXG4gICAgdGhpcy5fZW1pdENoYW5nZSgpO1xyXG4gIH1cclxuICB1bnNlbGVjdEl0ZW0odjogQXJkT3B0aW9uU2ltcGxlKTogdm9pZCB7XHJcbiAgICB0aGlzLl9pdGVtU3RvcmFnZS51bnNlbGVjdEl0ZW0odik7XHJcbiAgICB0aGlzLl9lbWl0Q2hhbmdlKCk7XHJcbiAgfVxyXG4gIHRvZ2dsZUl0ZW0odjogQXJkT3B0aW9uU2ltcGxlKTogdm9pZCB7XHJcbiAgICBpZiAodi5zZWxlY3RlZCgpKSB7XHJcbiAgICAgIHRoaXMudW5zZWxlY3RJdGVtKHYpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnNlbGVjdEl0ZW0odik7XHJcbiAgfVxyXG5cclxuICAvLyEgdGVtcGxhdGVzXHJcbiAgcmVhZG9ubHkgY2hlY2tib3hUZW1wbGF0ZSA9IGNvbnRlbnRDaGlsZChBcmRDaGVja2JveExpc3RDaGVja2JveFRlbXBsYXRlRGlyZWN0aXZlKTtcclxufVxyXG4iLCI8ZGl2XHJcbiAgY2xhc3M9XCJhcmQtY2hlY2tib3gtbGlzdFwiXHJcbiAgW25nQ2xhc3NdPVwibmdDbGFzc2VzKClcIlxyXG4+XHJcbiAgQGZvciAoaXRlbSBvZiBpdGVtczsgdHJhY2sgaXRlbS5pbmRleCkge1xyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImFyZC1jaGVja2JveC1saXN0X19pdGVtXCJcclxuICAgICAgW2NsYXNzLmFyZC1pdGVtLWhpZ2hsaWdodGVkXT1cIml0ZW0uaGlnaGxpZ2h0ZWQoKVwiXHJcbiAgICAgIFtjbGFzcy5hcmQtaXRlbS1kaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkKClcIlxyXG4gICAgICAobW91c2VvdmVyKT1cIm9uSXRlbUhpZ2hsaWdodChpdGVtKVwiXHJcbiAgICAgIChtb3VzZWxlYXZlKT1cIm9uSXRlbUJsdXIoKVwiXHJcbiAgICAgIChjbGljayk9XCJ0b2dnbGVJdGVtKGl0ZW0pXCJcclxuICAgID5cclxuICAgICAgPGRpdiBjbGFzcz1cImFyZC1mb2N1cy1vdmVybGF5XCI+PC9kaXY+XHJcbiAgICAgIDxhcmQtY2hlY2tib3hcclxuICAgICAgICBbc2VsZWN0ZWRdPVwiaXRlbS5zZWxlY3RlZCgpXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZCgpXCJcclxuICAgICAgICBbY29sb3JdPVwiY29sb3IoKVwiXHJcbiAgICAgICAgW2h0bWxJZF09XCJodG1sSWQoKSArIGl0ZW0uaW5kZXhcIlxyXG4gICAgICAgIFt0YWJJbmRleF09XCJ0YWJJbmRleCgpXCJcclxuICAgICAgICAoZm9jdXMpPVwib25Gb2N1cygkZXZlbnQpXCJcclxuICAgICAgICAoZm9jdXMpPVwib25JdGVtRm9jdXMoaXRlbSlcIlxyXG4gICAgICAgIChibHVyKT1cIm9uQmx1cigkZXZlbnQpXCJcclxuICAgICAgICAoYmx1cik9XCJvbkl0ZW1CbHVyKClcIlxyXG4gICAgICAgIChzZWxlY3QpPVwic2VsZWN0SXRlbShpdGVtKVwiXHJcbiAgICAgICAgKHVuc2VsZWN0KT1cInVuc2VsZWN0SXRlbShpdGVtKVwiXHJcbiAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgID5cclxuICAgICAgICA8bmctdGVtcGxhdGUgX2FyZC10bXAtcmVwb3NpdG9yeSBbY2hlY2tib3hUbXBdPVwiY2hlY2tib3hUZW1wbGF0ZSgpXCIgLz5cclxuICAgICAgPC9hcmQtY2hlY2tib3g+XHJcbiAgICAgIDxsYWJlbCBbZm9yXT1cImh0bWxJZCgpICsgaXRlbS5pbmRleFwiPlxyXG4gICAgICAgIHt7IGl0ZW0ubGFiZWwoKSB9fVxyXG4gICAgICA8L2xhYmVsPlxyXG4gICAgPC9kaXY+XHJcbiAgfVxyXG48L2Rpdj5cclxuIl19
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Directive } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class ArdCheckboxListCheckboxTemplateDirective {
|
|
4
|
+
constructor(template) {
|
|
5
|
+
this.template = template;
|
|
6
|
+
}
|
|
7
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdCheckboxListCheckboxTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
8
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: ArdCheckboxListCheckboxTemplateDirective, selector: "ard-checkbox-list > ng-template[ard-checkbox-tmp]", ngImport: i0 }); }
|
|
9
|
+
}
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdCheckboxListCheckboxTemplateDirective, decorators: [{
|
|
11
|
+
type: Directive,
|
|
12
|
+
args: [{ selector: 'ard-checkbox-list > ng-template[ard-checkbox-tmp]' }]
|
|
13
|
+
}], ctorParameters: () => [{ type: i0.TemplateRef }] });
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtbGlzdC5kaXJlY3RpdmVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jaGVja2JveC1saXN0L2NoZWNrYm94LWxpc3QuZGlyZWN0aXZlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFlLE1BQU0sZUFBZSxDQUFDOztBQUl2RCxNQUFNLE9BQU8sd0NBQXdDO0lBQ25ELFlBQW1CLFFBQThDO1FBQTlDLGFBQVEsR0FBUixRQUFRLENBQXNDO0lBQUcsQ0FBQzsrR0FEMUQsd0NBQXdDO21HQUF4Qyx3Q0FBd0M7OzRGQUF4Qyx3Q0FBd0M7a0JBRHBELFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsbURBQW1ELEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENoZWNrYm94VGVtcGxhdGVDb250ZXh0IH0gZnJvbSAnLi4vY2hlY2tib3gvY2hlY2tib3gudHlwZXMnO1xyXG5cclxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnYXJkLWNoZWNrYm94LWxpc3QgPiBuZy10ZW1wbGF0ZVthcmQtY2hlY2tib3gtdG1wXScgfSlcclxuZXhwb3J0IGNsYXNzIEFyZENoZWNrYm94TGlzdENoZWNrYm94VGVtcGxhdGVEaXJlY3RpdmUge1xyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8Q2hlY2tib3hUZW1wbGF0ZUNvbnRleHQ+KSB7fVxyXG59XHJcbiJdfQ==
|
|
@@ -1,19 +1,21 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
1
|
import { CommonModule } from '@angular/common';
|
|
3
|
-
import {
|
|
2
|
+
import { NgModule } from '@angular/core';
|
|
3
|
+
import { _CheckboxTemplateRepositoryDirective } from '../checkbox/checkbox.internal-directives';
|
|
4
4
|
import { ArdiumCheckboxModule } from '../checkbox/checkbox.module';
|
|
5
|
+
import { ArdiumCheckboxListComponent } from './checkbox-list.component';
|
|
6
|
+
import { ArdCheckboxListCheckboxTemplateDirective } from './checkbox-list.directives';
|
|
5
7
|
import * as i0 from "@angular/core";
|
|
6
8
|
export class ArdiumCheckboxListModule {
|
|
7
9
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdiumCheckboxListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
8
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: ArdiumCheckboxListModule, declarations: [ArdiumCheckboxListComponent], imports: [CommonModule, ArdiumCheckboxModule], exports: [ArdiumCheckboxListComponent] }); }
|
|
10
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: ArdiumCheckboxListModule, declarations: [ArdiumCheckboxListComponent, ArdCheckboxListCheckboxTemplateDirective], imports: [CommonModule, ArdiumCheckboxModule, _CheckboxTemplateRepositoryDirective], exports: [ArdiumCheckboxListComponent, ArdCheckboxListCheckboxTemplateDirective] }); }
|
|
9
11
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdiumCheckboxListModule, imports: [CommonModule, ArdiumCheckboxModule] }); }
|
|
10
12
|
}
|
|
11
13
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdiumCheckboxListModule, decorators: [{
|
|
12
14
|
type: NgModule,
|
|
13
15
|
args: [{
|
|
14
|
-
declarations: [ArdiumCheckboxListComponent],
|
|
15
|
-
imports: [CommonModule, ArdiumCheckboxModule],
|
|
16
|
-
exports: [ArdiumCheckboxListComponent],
|
|
16
|
+
declarations: [ArdiumCheckboxListComponent, ArdCheckboxListCheckboxTemplateDirective],
|
|
17
|
+
imports: [CommonModule, ArdiumCheckboxModule, _CheckboxTemplateRepositoryDirective],
|
|
18
|
+
exports: [ArdiumCheckboxListComponent, ArdCheckboxListCheckboxTemplateDirective],
|
|
17
19
|
}]
|
|
18
20
|
}] });
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtbGlzdC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NoZWNrYm94LWxpc3QvY2hlY2tib3gtbGlzdC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDaEcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbkUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDeEUsT0FBTyxFQUFFLHdDQUF3QyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBT3RGLE1BQU0sT0FBTyx3QkFBd0I7K0dBQXhCLHdCQUF3QjtnSEFBeEIsd0JBQXdCLGlCQUpwQiwyQkFBMkIsRUFBRSx3Q0FBd0MsYUFDMUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLG9DQUFvQyxhQUN4RSwyQkFBMkIsRUFBRSx3Q0FBd0M7Z0hBRXBFLHdCQUF3QixZQUh6QixZQUFZLEVBQUUsb0JBQW9COzs0RkFHakMsd0JBQXdCO2tCQUxwQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLDJCQUEyQixFQUFFLHdDQUF3QyxDQUFDO29CQUNyRixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsb0NBQW9DLENBQUM7b0JBQ25GLE9BQU8sRUFBRSxDQUFDLDJCQUEyQixFQUFFLHdDQUF3QyxDQUFDO2lCQUNqRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IF9DaGVja2JveFRlbXBsYXRlUmVwb3NpdG9yeURpcmVjdGl2ZSB9IGZyb20gJy4uL2NoZWNrYm94L2NoZWNrYm94LmludGVybmFsLWRpcmVjdGl2ZXMnO1xyXG5pbXBvcnQgeyBBcmRpdW1DaGVja2JveE1vZHVsZSB9IGZyb20gJy4uL2NoZWNrYm94L2NoZWNrYm94Lm1vZHVsZSc7XHJcbmltcG9ydCB7IEFyZGl1bUNoZWNrYm94TGlzdENvbXBvbmVudCB9IGZyb20gJy4vY2hlY2tib3gtbGlzdC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBcmRDaGVja2JveExpc3RDaGVja2JveFRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi9jaGVja2JveC1saXN0LmRpcmVjdGl2ZXMnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtBcmRpdW1DaGVja2JveExpc3RDb21wb25lbnQsIEFyZENoZWNrYm94TGlzdENoZWNrYm94VGVtcGxhdGVEaXJlY3RpdmVdLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEFyZGl1bUNoZWNrYm94TW9kdWxlLCBfQ2hlY2tib3hUZW1wbGF0ZVJlcG9zaXRvcnlEaXJlY3RpdmVdLFxyXG4gIGV4cG9ydHM6IFtBcmRpdW1DaGVja2JveExpc3RDb21wb25lbnQsIEFyZENoZWNrYm94TGlzdENoZWNrYm94VGVtcGxhdGVEaXJlY3RpdmVdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXJkaXVtQ2hlY2tib3hMaXN0TW9kdWxlIHt9XHJcbiJdfQ==
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export * from './checkbox-list.component';
|
|
2
2
|
export * from './checkbox-list.defaults';
|
|
3
|
+
export * from './checkbox-list.directives';
|
|
3
4
|
export * from './checkbox-list.module';
|
|
4
5
|
export * from './checkbox-list.types';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NoZWNrYm94LWxpc3QvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLHVCQUF1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jaGVja2JveC1saXN0LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vY2hlY2tib3gtbGlzdC5kZWZhdWx0cyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vY2hlY2tib3gtbGlzdC5kaXJlY3RpdmVzJztcclxuZXhwb3J0ICogZnJvbSAnLi9jaGVja2JveC1saXN0Lm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vY2hlY2tib3gtbGlzdC50eXBlcyc7XHJcblxyXG4iXX0=
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { _formFieldComponentDefaults } from '../_internal/form-field-component';
|
|
2
2
|
export const _fileInputBaseDefaults = {
|
|
3
|
-
...
|
|
3
|
+
..._formFieldComponentDefaults,
|
|
4
4
|
compact: false,
|
|
5
5
|
multiple: false,
|
|
6
6
|
blockAfterUpload: false,
|
|
7
7
|
};
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1pbnB1dC1iYXNlLmRlZmF1bHRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9maWxlLWlucHV0cy9maWxlLWlucHV0LWJhc2UuZGVmYXVsdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLDJCQUEyQixFQUErQixNQUFNLG1DQUFtQyxDQUFDO0FBUTdHLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUEyQjtJQUM1RCxHQUFHLDJCQUEyQjtJQUM5QixPQUFPLEVBQUUsS0FBSztJQUNkLFFBQVEsRUFBRSxLQUFLO0lBQ2YsZ0JBQWdCLEVBQUUsS0FBSztDQUN4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX2Zvcm1GaWVsZENvbXBvbmVudERlZmF1bHRzLCBfRm9ybUZpZWxkQ29tcG9uZW50RGVmYXVsdHMgfSBmcm9tICcuLi9faW50ZXJuYWwvZm9ybS1maWVsZC1jb21wb25lbnQnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBfRmlsZUlucHV0QmFzZURlZmF1bHRzIGV4dGVuZHMgX0Zvcm1GaWVsZENvbXBvbmVudERlZmF1bHRzIHtcclxuICBjb21wYWN0OiBib29sZWFuO1xyXG4gIG11bHRpcGxlOiBib29sZWFuO1xyXG4gIGJsb2NrQWZ0ZXJVcGxvYWQ6IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBfZmlsZUlucHV0QmFzZURlZmF1bHRzOiBfRmlsZUlucHV0QmFzZURlZmF1bHRzID0ge1xyXG4gIC4uLl9mb3JtRmllbGRDb21wb25lbnREZWZhdWx0cyxcclxuICBjb21wYWN0OiBmYWxzZSxcclxuICBtdWx0aXBsZTogZmFsc2UsXHJcbiAgYmxvY2tBZnRlclVwbG9hZDogZmFsc2UsXHJcbn07XHJcbiJdfQ==
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Overlay, OverlayConfig, ScrollStrategyOptions } from '@angular/cdk/overlay';
|
|
2
2
|
import { TemplatePortal } from '@angular/cdk/portal';
|
|
3
|
-
import { ChangeDetectionStrategy, Component,
|
|
3
|
+
import { ChangeDetectionStrategy, Component, computed, contentChild, effect, ElementRef, forwardRef, Inject, inject, input, model, output, signal, viewChild, ViewContainerRef, ViewEncapsulation, } from '@angular/core';
|
|
4
4
|
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
5
5
|
import { coerceBooleanProperty, coerceDateProperty, coerceNumberProperty } from '@ardium-ui/devkit';
|
|
6
6
|
import { isDefined, isNull } from 'simple-bool';
|
|
@@ -8,7 +8,7 @@ import { _FormFieldComponentBase } from '../../_internal/form-field-component';
|
|
|
8
8
|
import { ArdiumDropdownPanelComponent, DropdownPanelAppearance, DropdownPanelVariant } from '../../dropdown-panel';
|
|
9
9
|
import { FormElementAppearance, FormElementVariant } from '../../types/theming.types';
|
|
10
10
|
import { ARD_DATE_INPUT_DEFAULTS } from './date-input.defaults';
|
|
11
|
-
import { ArdDateInputAcceptButtonsTemplateDirective, ArdDateInputCalendarIconTemplateDirective, ArdDateInputPrefixTemplateDirective, ArdDateInputSuffixTemplateDirective, ArdDateInputValueTemplateDirective, } from './date-input.directive';
|
|
11
|
+
import { ArdDateInputAcceptButtonsTemplateDirective, ArdDateInputCalendarIconTemplateDirective, ArdDateInputDaysViewHeaderTemplateDirective, ArdDateInputDayTemplateDirective, ArdDateInputFloatingMonthTemplateDirective, ArdDateInputMonthsViewHeaderTemplateDirective, ArdDateInputMonthTemplateDirective, ArdDateInputPrefixTemplateDirective, ArdDateInputSuffixTemplateDirective, ArdDateInputValueTemplateDirective, ArdDateInputWeekdayTemplateDirective, ArdDateInputYearsViewHeaderTemplateDirective, ArdDateInputYearTemplateDirective, } from './date-input.directive';
|
|
12
12
|
import { ArdDateInputMinMaxStrategy, } from './date-input.types';
|
|
13
13
|
import * as i0 from "@angular/core";
|
|
14
14
|
import * as i1 from "@angular/common";
|
|
@@ -18,6 +18,7 @@ import * as i4 from "@ardium-ui/devkit";
|
|
|
18
18
|
import * as i5 from "../../calendar/calendar.component";
|
|
19
19
|
import * as i6 from "../../buttons/icon-button/icon-button.component";
|
|
20
20
|
import * as i7 from "../../icon/icon.component";
|
|
21
|
+
import * as i8 from "../../calendar/calendar.internal-directives";
|
|
21
22
|
export class ArdiumDateInputComponent extends _FormFieldComponentBase {
|
|
22
23
|
constructor(defaults) {
|
|
23
24
|
super(defaults);
|
|
@@ -36,6 +37,7 @@ export class ArdiumDateInputComponent extends _FormFieldComponentBase {
|
|
|
36
37
|
//! control value accessor
|
|
37
38
|
this.value = model(null);
|
|
38
39
|
this.dateInputValue = model('');
|
|
40
|
+
this._wasDateInputChanged = signal(false);
|
|
39
41
|
//! output events
|
|
40
42
|
this.isOpen = model(false);
|
|
41
43
|
this.openEvent = output({ alias: 'open' });
|
|
@@ -99,7 +101,7 @@ export class ArdiumDateInputComponent extends _FormFieldComponentBase {
|
|
|
99
101
|
return 1;
|
|
100
102
|
}
|
|
101
103
|
if (value < 0 || value > 6) {
|
|
102
|
-
console.error(new Error(`ARD-
|
|
104
|
+
console.error(new Error(`ARD-WA0081B: [firstWeekday] must be between 0 and 6, got "${value}". Using modulo operator to adjust the value.`));
|
|
103
105
|
}
|
|
104
106
|
return value % 7;
|
|
105
107
|
},
|
|
@@ -133,6 +135,14 @@ export class ArdiumDateInputComponent extends _FormFieldComponentBase {
|
|
|
133
135
|
this.acceptButtonsTemplate = contentChild(ArdDateInputAcceptButtonsTemplateDirective);
|
|
134
136
|
this.prefixTemplate = contentChild(ArdDateInputPrefixTemplateDirective);
|
|
135
137
|
this.suffixTemplate = contentChild(ArdDateInputSuffixTemplateDirective);
|
|
138
|
+
this.calendarDaysViewHeaderTemplate = contentChild(ArdDateInputDaysViewHeaderTemplateDirective);
|
|
139
|
+
this.calendarYearsViewHeaderTemplate = contentChild(ArdDateInputYearsViewHeaderTemplateDirective);
|
|
140
|
+
this.calendarMonthsViewHeaderTemplate = contentChild(ArdDateInputMonthsViewHeaderTemplateDirective);
|
|
141
|
+
this.calendarWeekdayTemplate = contentChild(ArdDateInputWeekdayTemplateDirective);
|
|
142
|
+
this.calendarFloatingMonthTemplate = contentChild(ArdDateInputFloatingMonthTemplateDirective);
|
|
143
|
+
this.calendarYearTemplate = contentChild(ArdDateInputYearTemplateDirective);
|
|
144
|
+
this.calendarMonthTemplate = contentChild(ArdDateInputMonthTemplateDirective);
|
|
145
|
+
this.calendarDayTemplate = contentChild(ArdDateInputDayTemplateDirective);
|
|
136
146
|
//! context providers
|
|
137
147
|
this.valueContext = computed(() => ({
|
|
138
148
|
$implicit: this.value(),
|
|
@@ -173,6 +183,7 @@ export class ArdiumDateInputComponent extends _FormFieldComponentBase {
|
|
|
173
183
|
onDateInputFocus(event) {
|
|
174
184
|
this.onFocus(event);
|
|
175
185
|
this._isDateInputFocused.set(true);
|
|
186
|
+
this._wasDateInputChanged.set(false);
|
|
176
187
|
}
|
|
177
188
|
onDateInputBlur(event) {
|
|
178
189
|
this.onBlur(event);
|
|
@@ -339,7 +350,7 @@ export class ArdiumDateInputComponent extends _FormFieldComponentBase {
|
|
|
339
350
|
provide: _FormFieldComponentBase,
|
|
340
351
|
useExisting: ArdiumDateInputComponent,
|
|
341
352
|
},
|
|
342
|
-
], queries: [{ propertyName: "valueTemplate", first: true, predicate: ArdDateInputValueTemplateDirective, descendants: true, isSignal: true }, { propertyName: "calendarIconTemplate", first: true, predicate: ArdDateInputCalendarIconTemplateDirective, descendants: true, isSignal: true }, { propertyName: "acceptButtonsTemplate", first: true, predicate: ArdDateInputAcceptButtonsTemplateDirective, descendants: true, isSignal: true }, { propertyName: "prefixTemplate", first: true, predicate: ArdDateInputPrefixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "suffixTemplate", first: true, predicate: ArdDateInputSuffixTemplateDirective, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "dateInput", first: true, predicate: ["dateInput"], descendants: true, isSignal: true }, { propertyName: "dropdownHost", first: true, predicate: ["dropdownHost"], descendants: true, isSignal: true }, { propertyName: "dropdownTemplate", first: true, predicate: ["dropdownTemplate"], descendants: true, isSignal: true }, { propertyName: "dropdownPanel", first: true, predicate: ArdiumDropdownPanelComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [isFocused]=\"isFocused()\"\r\n [hasError]=\"hasError()\"\r\n [isSuccess]=\"isSuccess()\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-date-input\"\r\n #dropdownHost\r\n (click)=\"onGeneralClick($event)\"\r\n [class.ard-has-value]=\"!!value()\"\r\n [ngClass]=\"ngClasses()\"\r\n >\r\n <div class=\"ard-date-input__value-container ard-input-container\">\r\n <div\r\n class=\"ard-date-input__placeholder ard-placeholder\"\r\n [class.ard-date-input__placeholder-hidden]=\"!shouldDisplayPlaceholder()\"\r\n >\r\n {{ placeholder() }}\r\n </div>\r\n <div\r\n class=\"ard-date-input__value\"\r\n [class.ard-date-input__value-hidden]=\"!shouldDisplayValue()\"\r\n >\r\n <ng-template\r\n #defaultValueTemplate\r\n let-date\r\n >\r\n {{ serializeFn()(date) }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"valueTemplate()?.template || defaultValueTemplate\"\r\n [ngTemplateOutletContext]=\"valueContext()\"\r\n />\r\n </div>\r\n <div\r\n class=\"ard-date-input__input-container\"\r\n role=\"combobox\"\r\n aria-haspopup=\"listbox\"\r\n [attr.aria-expanded]=\"isOpen()\"\r\n [attr.aria-owns]=\"isOpen() ? htmlId() : null\"\r\n [class.ard-date-input__input-container-hidden]=\"!shouldDisplayDateInput()\"\r\n >\r\n <input\r\n #dateInput\r\n #focusableElement\r\n type=\"text\"\r\n class=\"ard-date-input__input\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [value]=\"dateInputValue()\"\r\n [attr.aria-controls]=\"isOpen() ? htmlId() : null\"\r\n (input)=\"onDateInputInput($event)\"\r\n (change)=\"$event.stopPropagation()\"\r\n (focus)=\"onDateInputFocus($event)\"\r\n (blur)=\"onDateInputBlur($event)\"\r\n (keydown)=\"onDateInputEnter($event)\"\r\n />\r\n </div>\r\n </div>\r\n\r\n @if (!calendarHidden()) {\r\n
|
|
353
|
+
], queries: [{ propertyName: "valueTemplate", first: true, predicate: ArdDateInputValueTemplateDirective, descendants: true, isSignal: true }, { propertyName: "calendarIconTemplate", first: true, predicate: ArdDateInputCalendarIconTemplateDirective, descendants: true, isSignal: true }, { propertyName: "acceptButtonsTemplate", first: true, predicate: ArdDateInputAcceptButtonsTemplateDirective, descendants: true, isSignal: true }, { propertyName: "prefixTemplate", first: true, predicate: ArdDateInputPrefixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "suffixTemplate", first: true, predicate: ArdDateInputSuffixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "calendarDaysViewHeaderTemplate", first: true, predicate: ArdDateInputDaysViewHeaderTemplateDirective, descendants: true, isSignal: true }, { propertyName: "calendarYearsViewHeaderTemplate", first: true, predicate: ArdDateInputYearsViewHeaderTemplateDirective, descendants: true, isSignal: true }, { propertyName: "calendarMonthsViewHeaderTemplate", first: true, predicate: ArdDateInputMonthsViewHeaderTemplateDirective, descendants: true, isSignal: true }, { propertyName: "calendarWeekdayTemplate", first: true, predicate: ArdDateInputWeekdayTemplateDirective, descendants: true, isSignal: true }, { propertyName: "calendarFloatingMonthTemplate", first: true, predicate: ArdDateInputFloatingMonthTemplateDirective, descendants: true, isSignal: true }, { propertyName: "calendarYearTemplate", first: true, predicate: ArdDateInputYearTemplateDirective, descendants: true, isSignal: true }, { propertyName: "calendarMonthTemplate", first: true, predicate: ArdDateInputMonthTemplateDirective, descendants: true, isSignal: true }, { propertyName: "calendarDayTemplate", first: true, predicate: ArdDateInputDayTemplateDirective, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "dateInput", first: true, predicate: ["dateInput"], descendants: true, isSignal: true }, { propertyName: "dropdownHost", first: true, predicate: ["dropdownHost"], descendants: true, isSignal: true }, { propertyName: "dropdownTemplate", first: true, predicate: ["dropdownTemplate"], descendants: true, isSignal: true }, { propertyName: "dropdownPanel", first: true, predicate: ArdiumDropdownPanelComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [isFocused]=\"isFocused()\"\r\n [hasError]=\"hasError()\"\r\n [isSuccess]=\"isSuccess()\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-date-input\"\r\n #dropdownHost\r\n (click)=\"onGeneralClick($event)\"\r\n [class.ard-has-value]=\"!!value()\"\r\n [ngClass]=\"ngClasses()\"\r\n >\r\n <div class=\"ard-date-input__value-container ard-input-container\">\r\n <div\r\n class=\"ard-date-input__placeholder ard-placeholder\"\r\n [class.ard-date-input__placeholder-hidden]=\"!shouldDisplayPlaceholder()\"\r\n >\r\n {{ placeholder() }}\r\n </div>\r\n <div\r\n class=\"ard-date-input__value\"\r\n [class.ard-date-input__value-hidden]=\"!shouldDisplayValue()\"\r\n >\r\n <ng-template\r\n #defaultValueTemplate\r\n let-date\r\n >\r\n {{ serializeFn()(date) }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"valueTemplate()?.template || defaultValueTemplate\"\r\n [ngTemplateOutletContext]=\"valueContext()\"\r\n />\r\n </div>\r\n <div\r\n class=\"ard-date-input__input-container\"\r\n role=\"combobox\"\r\n aria-haspopup=\"listbox\"\r\n [attr.aria-expanded]=\"isOpen()\"\r\n [attr.aria-owns]=\"isOpen() ? htmlId() : null\"\r\n [class.ard-date-input__input-container-hidden]=\"!shouldDisplayDateInput()\"\r\n >\r\n <input\r\n #dateInput\r\n #focusableElement\r\n type=\"text\"\r\n class=\"ard-date-input__input\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [value]=\"dateInputValue()\"\r\n [attr.aria-controls]=\"isOpen() ? htmlId() : null\"\r\n (input)=\"onDateInputInput($event)\"\r\n (change)=\"$event.stopPropagation()\"\r\n (focus)=\"onDateInputFocus($event)\"\r\n (blur)=\"onDateInputBlur($event)\"\r\n (keydown)=\"onDateInputEnter($event)\"\r\n />\r\n </div>\r\n </div>\r\n\r\n @if (!calendarHidden()) {\r\n <ard-icon-button\r\n color=\"none\"\r\n [disabled]=\"calendarDisabled()\"\r\n (click)=\"onCalendarButtonClick($event)\"\r\n >\r\n <ng-template\r\n #defaultCalendarIconTemplate\r\n let-date\r\n >\r\n <ard-icon filled>today</ard-icon>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"calendarIconTemplate()?.template || defaultCalendarIconTemplate\" />\r\n </ard-icon-button>\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n\r\n<ng-template #dropdownTemplate>\r\n <ard-dropdown-panel\r\n class=\"ard-dropdown-panel ard-date-input__dropdown-panel\"\r\n [appearance]=\"dropdownAppearanceOrDefault()\"\r\n [variant]=\"dropdownVariantOrDefault()\"\r\n [isOpen]=\"true\"\r\n [panelId]=\"htmlId()\"\r\n [compact]=\"compact()\"\r\n (ardClickOutside)=\"onOutsideClick($event)\"\r\n >\r\n <ard-calendar\r\n class=\"ard-date-input__calendar\"\r\n [(activeMonth)]=\"activeMonth\"\r\n [(activeYear)]=\"activeYear\"\r\n [(activeView)]=\"activeView\"\r\n [firstWeekday]=\"firstWeekday()\"\r\n [min]=\"min()\"\r\n [max]=\"max()\"\r\n autoFocus\r\n [multipleYearPageChangeModifier]=\"multipleYearPageChangeModifier()\"\r\n [color]=\"color()\"\r\n [disabled]=\"disabled() || calendarDisabled()\"\r\n [tabIndex]=\"tabIndex()\"\r\n (selectedChange)=\"onCalendarSelectedChange($event)\"\r\n (yearSelect)=\"yearSelect.emit($event)\"\r\n (monthSelect)=\"monthSelect.emit($event)\"\r\n >\r\n <ng-template\r\n _ard-tmp-repository\r\n [daysViewHeaderTmp]=\"calendarDaysViewHeaderTemplate()\"\r\n [yearsViewHeaderTmp]=\"calendarYearsViewHeaderTemplate()\"\r\n [monthsViewHeaderTmp]=\"calendarMonthsViewHeaderTemplate()\"\r\n [weekdayTmp]=\"calendarWeekdayTemplate()\"\r\n [floatingMonthTmp]=\"calendarFloatingMonthTemplate()\"\r\n [yearTmp]=\"calendarYearTemplate()\"\r\n [monthTmp]=\"calendarMonthTemplate()\"\r\n [dayTmp]=\"calendarDayTemplate()\"\r\n />\r\n </ard-calendar>\r\n @if (useAcceptButtonToSelect()) {\r\n <div class=\"ard-date-input__accept-buttons-container\">\r\n <ng-template\r\n #defaultAcceptButtonsTemplate\r\n let-date\r\n >\r\n {{ serializeFn()(date) }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"acceptButtonsTemplate()?.template || defaultAcceptButtonsTemplate\"\r\n [ngTemplateOutletContext]=\"acceptButtonsContext()\"\r\n />\r\n </div>\r\n }\r\n </ard-dropdown-panel>\r\n</ng-template>\r\n", styles: [".ard-date-input .ard-date-input__placeholder.ard-date-input__placeholder-hidden,.ard-date-input .ard-date-input__value.ard-date-input__value-hidden{display:none}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.ArdiumFormFieldFrameComponent, selector: "ard-form-field-frame", inputs: ["hasError", "isSuccess", "isFocused", "appearance", "variant", "compact", "prefixTemplate", "suffixTemplate"] }, { kind: "component", type: i3.ArdiumDropdownPanelComponent, selector: "ard-dropdown-panel", inputs: ["panelId", "headerTemplate", "footerTemplate", "filterValue", "appearance", "variant", "compact", "isOpen"], outputs: ["scroll", "scrollToEnd"] }, { kind: "directive", type: i4.ArdiumClickOutsideDirective, selector: "[ardClickOutside]", outputs: ["ardClickOutside"] }, { kind: "component", type: i5.ArdiumCalendarComponent, selector: "ard-calendar", inputs: ["color", "activeView", "activeYear", "activeMonth", "firstWeekday", "multipleYearPageChangeModifier", "autoFocus", "selected", "min", "max", "filter"], outputs: ["activeViewChange", "activeYearChange", "activeMonthChange", "selectedChange", "yearSelect", "monthSelect"] }, { kind: "component", type: i6.ArdiumIconButtonComponent, selector: "ard-icon-button", inputs: ["wrapperClasses", "type", "color", "lightColoring", "compact", "pointerEventsWhenDisabled"] }, { kind: "component", type: i7.ArdiumIconComponent, selector: "ard-icon", inputs: ["ariaLabel", "icon", "filled", "weight", "grade", "opticalSize"] }, { kind: "directive", type: i8._CalendarTemplateRepositoryDirective, selector: "ard-calendar > ng-template[_ard-tmp-repository]", inputs: ["daysViewHeaderTmp", "yearsViewHeaderTmp", "monthsViewHeaderTmp", "weekdayTmp", "floatingMonthTmp", "yearTmp", "monthTmp", "dayTmp"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
343
354
|
}
|
|
344
355
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdiumDateInputComponent, decorators: [{
|
|
345
356
|
type: Component,
|
|
@@ -353,9 +364,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
353
364
|
provide: _FormFieldComponentBase,
|
|
354
365
|
useExisting: ArdiumDateInputComponent,
|
|
355
366
|
},
|
|
356
|
-
], template: "<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [isFocused]=\"isFocused()\"\r\n [hasError]=\"hasError()\"\r\n [isSuccess]=\"isSuccess()\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-date-input\"\r\n #dropdownHost\r\n (click)=\"onGeneralClick($event)\"\r\n [class.ard-has-value]=\"!!value()\"\r\n [ngClass]=\"ngClasses()\"\r\n >\r\n <div class=\"ard-date-input__value-container ard-input-container\">\r\n <div\r\n class=\"ard-date-input__placeholder ard-placeholder\"\r\n [class.ard-date-input__placeholder-hidden]=\"!shouldDisplayPlaceholder()\"\r\n >\r\n {{ placeholder() }}\r\n </div>\r\n <div\r\n class=\"ard-date-input__value\"\r\n [class.ard-date-input__value-hidden]=\"!shouldDisplayValue()\"\r\n >\r\n <ng-template\r\n #defaultValueTemplate\r\n let-date\r\n >\r\n {{ serializeFn()(date) }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"valueTemplate()?.template || defaultValueTemplate\"\r\n [ngTemplateOutletContext]=\"valueContext()\"\r\n />\r\n </div>\r\n <div\r\n class=\"ard-date-input__input-container\"\r\n role=\"combobox\"\r\n aria-haspopup=\"listbox\"\r\n [attr.aria-expanded]=\"isOpen()\"\r\n [attr.aria-owns]=\"isOpen() ? htmlId() : null\"\r\n [class.ard-date-input__input-container-hidden]=\"!shouldDisplayDateInput()\"\r\n >\r\n <input\r\n #dateInput\r\n #focusableElement\r\n type=\"text\"\r\n class=\"ard-date-input__input\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [value]=\"dateInputValue()\"\r\n [attr.aria-controls]=\"isOpen() ? htmlId() : null\"\r\n (input)=\"onDateInputInput($event)\"\r\n (change)=\"$event.stopPropagation()\"\r\n (focus)=\"onDateInputFocus($event)\"\r\n (blur)=\"onDateInputBlur($event)\"\r\n (keydown)=\"onDateInputEnter($event)\"\r\n />\r\n </div>\r\n </div>\r\n\r\n @if (!calendarHidden()) {\r\n
|
|
367
|
+
], template: "<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [isFocused]=\"isFocused()\"\r\n [hasError]=\"hasError()\"\r\n [isSuccess]=\"isSuccess()\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-date-input\"\r\n #dropdownHost\r\n (click)=\"onGeneralClick($event)\"\r\n [class.ard-has-value]=\"!!value()\"\r\n [ngClass]=\"ngClasses()\"\r\n >\r\n <div class=\"ard-date-input__value-container ard-input-container\">\r\n <div\r\n class=\"ard-date-input__placeholder ard-placeholder\"\r\n [class.ard-date-input__placeholder-hidden]=\"!shouldDisplayPlaceholder()\"\r\n >\r\n {{ placeholder() }}\r\n </div>\r\n <div\r\n class=\"ard-date-input__value\"\r\n [class.ard-date-input__value-hidden]=\"!shouldDisplayValue()\"\r\n >\r\n <ng-template\r\n #defaultValueTemplate\r\n let-date\r\n >\r\n {{ serializeFn()(date) }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"valueTemplate()?.template || defaultValueTemplate\"\r\n [ngTemplateOutletContext]=\"valueContext()\"\r\n />\r\n </div>\r\n <div\r\n class=\"ard-date-input__input-container\"\r\n role=\"combobox\"\r\n aria-haspopup=\"listbox\"\r\n [attr.aria-expanded]=\"isOpen()\"\r\n [attr.aria-owns]=\"isOpen() ? htmlId() : null\"\r\n [class.ard-date-input__input-container-hidden]=\"!shouldDisplayDateInput()\"\r\n >\r\n <input\r\n #dateInput\r\n #focusableElement\r\n type=\"text\"\r\n class=\"ard-date-input__input\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [value]=\"dateInputValue()\"\r\n [attr.aria-controls]=\"isOpen() ? htmlId() : null\"\r\n (input)=\"onDateInputInput($event)\"\r\n (change)=\"$event.stopPropagation()\"\r\n (focus)=\"onDateInputFocus($event)\"\r\n (blur)=\"onDateInputBlur($event)\"\r\n (keydown)=\"onDateInputEnter($event)\"\r\n />\r\n </div>\r\n </div>\r\n\r\n @if (!calendarHidden()) {\r\n <ard-icon-button\r\n color=\"none\"\r\n [disabled]=\"calendarDisabled()\"\r\n (click)=\"onCalendarButtonClick($event)\"\r\n >\r\n <ng-template\r\n #defaultCalendarIconTemplate\r\n let-date\r\n >\r\n <ard-icon filled>today</ard-icon>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"calendarIconTemplate()?.template || defaultCalendarIconTemplate\" />\r\n </ard-icon-button>\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n\r\n<ng-template #dropdownTemplate>\r\n <ard-dropdown-panel\r\n class=\"ard-dropdown-panel ard-date-input__dropdown-panel\"\r\n [appearance]=\"dropdownAppearanceOrDefault()\"\r\n [variant]=\"dropdownVariantOrDefault()\"\r\n [isOpen]=\"true\"\r\n [panelId]=\"htmlId()\"\r\n [compact]=\"compact()\"\r\n (ardClickOutside)=\"onOutsideClick($event)\"\r\n >\r\n <ard-calendar\r\n class=\"ard-date-input__calendar\"\r\n [(activeMonth)]=\"activeMonth\"\r\n [(activeYear)]=\"activeYear\"\r\n [(activeView)]=\"activeView\"\r\n [firstWeekday]=\"firstWeekday()\"\r\n [min]=\"min()\"\r\n [max]=\"max()\"\r\n autoFocus\r\n [multipleYearPageChangeModifier]=\"multipleYearPageChangeModifier()\"\r\n [color]=\"color()\"\r\n [disabled]=\"disabled() || calendarDisabled()\"\r\n [tabIndex]=\"tabIndex()\"\r\n (selectedChange)=\"onCalendarSelectedChange($event)\"\r\n (yearSelect)=\"yearSelect.emit($event)\"\r\n (monthSelect)=\"monthSelect.emit($event)\"\r\n >\r\n <ng-template\r\n _ard-tmp-repository\r\n [daysViewHeaderTmp]=\"calendarDaysViewHeaderTemplate()\"\r\n [yearsViewHeaderTmp]=\"calendarYearsViewHeaderTemplate()\"\r\n [monthsViewHeaderTmp]=\"calendarMonthsViewHeaderTemplate()\"\r\n [weekdayTmp]=\"calendarWeekdayTemplate()\"\r\n [floatingMonthTmp]=\"calendarFloatingMonthTemplate()\"\r\n [yearTmp]=\"calendarYearTemplate()\"\r\n [monthTmp]=\"calendarMonthTemplate()\"\r\n [dayTmp]=\"calendarDayTemplate()\"\r\n />\r\n </ard-calendar>\r\n @if (useAcceptButtonToSelect()) {\r\n <div class=\"ard-date-input__accept-buttons-container\">\r\n <ng-template\r\n #defaultAcceptButtonsTemplate\r\n let-date\r\n >\r\n {{ serializeFn()(date) }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"acceptButtonsTemplate()?.template || defaultAcceptButtonsTemplate\"\r\n [ngTemplateOutletContext]=\"acceptButtonsContext()\"\r\n />\r\n </div>\r\n }\r\n </ard-dropdown-panel>\r\n</ng-template>\r\n", styles: [".ard-date-input .ard-date-input__placeholder.ard-date-input__placeholder-hidden,.ard-date-input .ard-date-input__value.ard-date-input__value-hidden{display:none}\n"] }]
|
|
357
368
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
358
369
|
type: Inject,
|
|
359
370
|
args: [ARD_DATE_INPUT_DEFAULTS]
|
|
360
371
|
}] }] });
|
|
361
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2lucHV0cy9kYXRlLWlucHV0L2RhdGUtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9pbnB1dHMvZGF0ZS1pbnB1dC9kYXRlLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFjLHFCQUFxQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDakcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBR04sZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixRQUFRLEVBQ1IsWUFBWSxFQUNaLE1BQU0sRUFDTixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxrQkFBa0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BHLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2hELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRS9FLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSx1QkFBdUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRW5ILE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJCQUEy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SCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUFFLE9BQU87UUFFM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFdkIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRXZCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3pCLENBQUM7K0dBM1ZVLHdCQUF3QixrQkFFZix1QkFBdUI7bUdBRmhDLHdCQUF3Qiw2M0hBWnhCO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQztnQkFDdkQsS0FBSyxFQUFFLElBQUk7YUFDWjtZQUNEO2dCQUNFLE9BQU8sRUFBRSx1QkFBdUI7Z0JBQ2hDLFdBQVcsRUFBRSx3QkFBd0I7YUFDdEM7U0FDRixxRUFnV3FDLGtDQUFrQyx1R0FDM0IseUNBQXlDLHdHQUN4QywwQ0FBMEMsaUdBRWpELG1DQUFtQyxpR0FDbkMsbUNBQW1DLDhiQTVHQSw0QkFBNEIsdUZDelR4Ryw2eklBZ0lBOzs0RkQ5RGEsd0JBQXdCO2tCQWxCcEMsU0FBUzsrQkFDRSxnQkFBZ0IsaUJBR1gsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSx5QkFBeUIsQ0FBQzs0QkFDdkQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLHVCQUF1Qjs0QkFDaEMsV0FBVywwQkFBMEI7eUJBQ3RDO3FCQUNGOzswQkFJWSxNQUFNOzJCQUFDLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE92ZXJsYXksIE92ZXJsYXlDb25maWcsIE92ZXJsYXlSZWYsIFNjcm9sbFN0cmF0ZWd5T3B0aW9ucyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcclxuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcclxuaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEluamVjdCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgVmlld0NvbnRhaW5lclJlZixcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBjb21wdXRlZCxcclxuICBjb250ZW50Q2hpbGQsXHJcbiAgZWZmZWN0LFxyXG4gIGZvcndhcmRSZWYsXHJcbiAgaW5qZWN0LFxyXG4gIGlucHV0LFxyXG4gIG1vZGVsLFxyXG4gIG91dHB1dCxcclxuICBzaWduYWwsXHJcbiAgdmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgY29lcmNlRGF0ZVByb3BlcnR5LCBjb2VyY2VOdW1iZXJQcm9wZXJ0eSB9IGZyb20gJ0BhcmRpdW0tdWkvZGV2a2l0JztcclxuaW1wb3J0IHsgaXNEZWZpbmVkLCBpc051bGwgfSBmcm9tICdzaW1wbGUtYm9vbCc7XHJcbmltcG9ydCB7IF9Gb3JtRmllbGRDb21wb25lbnRCYXNlIH0gZnJvbSAnLi4vLi4vX2ludGVybmFsL2Zvcm0tZmllbGQtY29tcG9uZW50JztcclxuaW1wb3J0IHsgQXJkQ2FsZW5kYXJGaWx0ZXJGbiwgQXJkQ2FsZW5kYXJWaWV3IH0gZnJvbSAnLi4vLi4vY2FsZW5kYXIvY2FsZW5kYXIudHlwZXMnO1xyXG5pbXBvcnQgeyBBcmRpdW1Ecm9wZG93blBhbmVsQ29tcG9uZW50LCBEcm9wZG93blBhbmVsQXBwZWFyYW5jZSwgRHJvcGRvd25QYW5lbFZhcmlhbnQgfSBmcm9tICcuLi8uLi9kcm9wZG93bi1wYW5lbCc7XHJcbmltcG9ydCB7IENvbXBvbmVudENvbG9yIH0gZnJvbSAnLi4vLi4vdHlwZXMvY29sb3JzLnR5cGVzJztcclxuaW1wb3J0IHsgRm9ybUVsZW1lbnRBcHBlYXJhbmNlLCBGb3JtRWxlbWVudFZhcmlhbnQgfSBmcm9tICcuLi8uLi90eXBlcy90aGVtaW5nLnR5cGVzJztcclxuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICcuLi8uLi90eXBlcy91dGlsaXR5LnR5cGVzJztcclxuaW1wb3J0IHsgQVJEX0RBVEVfSU5QVVRfREVGQVVMVFMsIEFyZERhdGVJbnB1dERlZmF1bHRzIH0gZnJvbSAnLi9kYXRlLWlucHV0LmRlZmF1bHRzJztcclxuaW1wb3J0IHtcclxuICBBcmREYXRlSW5wdXRBY2NlcHRCdXR0b25zVGVtcGxhdGVEaXJlY3RpdmUsXHJcbiAgQXJkRGF0ZUlucHV0Q2FsZW5kYXJJY29uVGVtcGxhdGVEaXJlY3RpdmUsXHJcbiAgQXJkRGF0ZUlucHV0UHJlZml4VGVtcGxhdGVEaXJlY3RpdmUsXHJcbiAgQXJkRGF0ZUlucHV0U3VmZml4VGVtcGxhdGVEaXJlY3RpdmUsXHJcbiAgQXJkRGF0ZUlucHV0VmFsdWVUZW1wbGF0ZURpcmVjdGl2ZSxcclxufSBmcm9tICcuL2RhdGUtaW5wdXQuZGlyZWN0aXZlJztcclxuaW1wb3J0IHtcclxuICBBcmREYXRlSW5wdXRBY2NlcHRCdXR0b25zQ29udGV4dCxcclxuICBBcmREYXRlSW5wdXREZXNlcmlhbGl6ZUZuLFxyXG4gIEFyZERhdGVJbnB1dE1pbk1heFN0cmF0ZWd5LFxyXG4gIEFyZERhdGVJbnB1dFNlcmlhbGl6ZUZuLFxyXG4gIEFyZERhdGVJbnB1dFZhbHVlQ29udGV4dCxcclxufSBmcm9tICcuL2RhdGUtaW5wdXQudHlwZXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcmQtZGF0ZS1pbnB1dCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2RhdGUtaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQXJkaXVtRGF0ZUlucHV0Q29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBfRm9ybUZpZWxkQ29tcG9uZW50QmFzZSxcclxuICAgICAgdXNlRXhpc3Rpbmc6IEFyZGl1bURhdGVJbnB1dENvbXBvbmVudCxcclxuICAgIH0sXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFyZGl1bURhdGVJbnB1dENvbXBvbmVudCBleHRlbmRzIF9Gb3JtRmllbGRDb21wb25lbnRCYXNlIGltcGxlbWVudHMgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlYWRvbmx5IF9ERUZBVUxUUyE6IEFyZERhdGVJbnB1dERlZmF1bHRzO1xyXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoQVJEX0RBVEVfSU5QVVRfREVGQVVMVFMpIGRlZmF1bHRzOiBBcmREYXRlSW5wdXREZWZhdWx0cykge1xyXG4gICAgc3VwZXIoZGVmYXVsdHMpO1xyXG5cclxuICAgIGVmZmVjdCgoKSA9PiB7XHJcbiAgICAgIHRoaXMudmFsdWUoKTtcclxuICAgICAgdGhpcy5fZW1pdENoYW5nZSgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgb3ZlcmxheSA9IGluamVjdChPdmVybGF5KTtcclxuICBwcml2YXRlIHJlYWRvbmx5IHZpZXdDb250YWluZXJSZWYgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBzY3JvbGxTdHJhdGVneU9wdHMgPSBpbmplY3QoU2Nyb2xsU3RyYXRlZ3lPcHRpb25zKTtcclxuXHJcbiAgcmVhZG9ubHkgaW5wdXRBdHRycyA9IGlucHV0PFJlY29yZDxzdHJpbmcsIGFueT4+KHRoaXMuX0RFRkFVTFRTLmlucHV0QXR0cnMpO1xyXG5cclxuICByZWFkb25seSBwbGFjZWhvbGRlciA9IGlucHV0PHN0cmluZz4odGhpcy5fREVGQVVMVFMucGxhY2Vob2xkZXIpO1xyXG5cclxuICByZWFkb25seSBpbnB1dFJlYWRPbmx5ID0gaW5wdXQ8Ym9vbGVhbiwgYW55PihmYWxzZSwgeyB0cmFuc2Zvcm06IHYgPT4gY29lcmNlQm9vbGVhblByb3BlcnR5KHYpIH0pO1xyXG4gIHJlYWRvbmx5IGNhbGVuZGFyRGlzYWJsZWQgPSBpbnB1dDxib29sZWFuLCBhbnk+KGZhbHNlLCB7IHRyYW5zZm9ybTogdiA9PiBjb2VyY2VCb29sZWFuUHJvcGVydHkodikgfSk7XHJcbiAgcmVhZG9ubHkgY2FsZW5kYXJIaWRkZW4gPSBpbnB1dDxib29sZWFuLCBhbnk+KGZhbHNlLCB7IHRyYW5zZm9ybTogdiA9PiBjb2VyY2VCb29sZWFuUHJvcGVydHkodikgfSk7XHJcblxyXG4gIC8vISBzZXJpYWxpemF0aW9uL2Rlc2VyaWFsaXphdGlvblxyXG4gIHJlYWRvbmx5IHNlcmlhbGl6ZUZuID0gaW5wdXQ8QXJkRGF0ZUlucHV0U2VyaWFsaXplRm4+KHRoaXMuX0RFRkFVTFRTLnNlcmlhbGl6ZUZuKTtcclxuICByZWFkb25seSBkZXNlcmlhbGl6ZUZuID0gaW5wdXQ8QXJkRGF0ZUlucHV0RGVzZXJpYWxpemVGbj4odGhpcy5fREVGQVVMVFMuZGVzZXJpYWxpemVGbik7XHJcblxyXG4gIC8vISBjb250cm9sIHZhbHVlIGFjY2Vzc29yXHJcbiAgcmVhZG9ubHkgdmFsdWUgPSBtb2RlbDxEYXRlIHwgbnVsbD4obnVsbCk7XHJcbiAgcmVhZG9ubHkgZGF0ZUlucHV0VmFsdWUgPSBtb2RlbDxzdHJpbmc+KCcnKTtcclxuXHJcbiAgd3JpdGVWYWx1ZSh2OiBEYXRlIHwgbnVsbCk6IHZvaWQge1xyXG4gICAgaWYgKHYgaW5zdGFuY2VvZiBEYXRlKSB7XHJcbiAgICAgIHRoaXMudmFsdWUuc2V0KHYpO1xyXG4gICAgfSBlbHNlIGlmICghaXNEZWZpbmVkKHYpKSB7XHJcbiAgICAgIHRoaXMudmFsdWUuc2V0KG51bGwpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc29sZS5lcnJvcihuZXcgRXJyb3IoYEFSRC1ORjAwODM6IDxhcmQtZGF0ZS1pbnB1dD4gd3JpdGVWYWx1ZSBleHBlY3RlZCBhIERhdGUgb3IgbnVsbCwgZ290IFwiJHt2fVwiLmApKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vISBjaGFuZ2UgJiB0b3VjaCBldmVudCBlbWl0dGVyc1xyXG4gIHByb3RlY3RlZCBfZW1pdENoYW5nZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX29uQ2hhbmdlUmVnaXN0ZXJlZD8uKHRoaXMudmFsdWUoKSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX29uVG91Y2hlZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX29uVG91Y2hlZFJlZ2lzdGVyZWQ/LigpO1xyXG4gIH1cclxuXHJcbiAgLy8hIG91dHB1dCBldmVudHNcclxuICByZWFkb25seSBpc09wZW4gPSBtb2RlbDxib29sZWFuPihmYWxzZSk7XHJcblxyXG4gIHJlYWRvbmx5IG9wZW5FdmVudCA9IG91dHB1dDx2b2lkPih7IGFsaWFzOiAnb3BlbicgfSk7XHJcbiAgcmVhZG9ubHkgY2xvc2VFdmVudCA9IG91dHB1dDx2b2lkPih7IGFsaWFzOiAnY2xvc2UnIH0pO1xyXG5cclxuICAvLyEgZGF0ZSBpbnB1dCBldmVudCBoYW5kbGVyc1xyXG4gIHJlYWRvbmx5IGRhdGVJbnB1dCA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+PignZGF0ZUlucHV0Jyk7XHJcblxyXG4gIHJlYWRvbmx5IG1pbk1heFN0cmF0ZWd5ID0gaW5wdXQ8QXJkRGF0ZUlucHV0TWluTWF4U3RyYXRlZ3k+KHRoaXMuX0RFRkFVTFRTLm1pbk1heFN0cmF0ZWd5KTtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNEYXRlSW5wdXRGb2N1c2VkID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuXHJcbiAgb25EYXRlSW5wdXRJbnB1dChldmVudDogRXZlbnQpOiB2b2lkIHtcclxuICAgIGNvbnN0IHYgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xyXG4gICAgdGhpcy5kYXRlSW5wdXRWYWx1ZS5zZXQodik7XHJcbiAgfVxyXG4gIG9uRGF0ZUlucHV0Rm9jdXMoZXZlbnQ6IEZvY3VzRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMub25Gb2N1cyhldmVudCk7XHJcbiAgICB0aGlzLl9pc0RhdGVJbnB1dEZvY3VzZWQuc2V0KHRydWUpO1xyXG4gIH1cclxuICBvbkRhdGVJbnB1dEJsdXIoZXZlbnQ6IEZvY3VzRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMub25CbHVyKGV2ZW50KTtcclxuXHJcbiAgICB0aGlzLl9wcm9jZXNzRGF0ZUlucHV0VGV4dCh0aGlzLmRhdGVJbnB1dFZhbHVlKCkpO1xyXG5cclxuICAgIGlmICghdGhpcy5faXNEYXRlSW5wdXRGb2N1c2VkKCkpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLl9vblRvdWNoZWQoKTtcclxuXHJcbiAgICB0aGlzLl9pc0RhdGVJbnB1dEZvY3VzZWQuc2V0KGZhbHNlKTtcclxuICB9XHJcbiAgb25EYXRlSW5wdXRFbnRlcihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKGV2ZW50LmtleSAhPT0gJ0VudGVyJykgcmV0dXJuO1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIHRoaXMuY2xvc2UoKTtcclxuICAgIHRoaXMuYmx1cigpO1xyXG4gICAgdGhpcy5mb2N1cygpO1xyXG4gIH1cclxuICBwcml2YXRlIF9wcm9jZXNzRGF0ZUlucHV0VGV4dCh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBsZXQgZGF0ZSA9IHRoaXMuZGVzZXJpYWxpemVGbigpKHZhbHVlLCB0aGlzLnZhbHVlKCkpO1xyXG5cclxuICAgIGlmICh0aGlzLm1pbk1heFN0cmF0ZWd5KCkgPT09IEFyZERhdGVJbnB1dE1pbk1heFN0cmF0ZWd5LkFkanVzdCAmJiBkYXRlKSB7XHJcbiAgICAgIGNvbnN0IG1pbiA9IHRoaXMubWluKCk7XHJcbiAgICAgIGNvbnN0IG1heCA9IHRoaXMubWF4KCk7XHJcblxyXG4gICAgICBpZiAobWluICYmIGRhdGUgPCBtaW4pIHtcclxuICAgICAgICBkYXRlID0gbmV3IERhdGUobWluKTtcclxuICAgICAgfSBlbHNlIGlmIChtYXggJiYgZGF0ZSA+IG1heCkge1xyXG4gICAgICAgIGRhdGUgPSBuZXcgRGF0ZShtYXgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy52YWx1ZS5zZXQoZGF0ZSk7XHJcbiAgICB0aGlzLmRhdGVJbnB1dFZhbHVlLnNldCh0aGlzLnNlcmlhbGl6ZUZuKCkoZGF0ZSkpO1xyXG4gIH1cclxuICBwcml2YXRlIF9zZXREYXRlSW5wdXRBdHRyaWJ1dGVzKCkge1xyXG4gICAgY29uc3QgaW5wdXQgPSB0aGlzLmRhdGVJbnB1dCgpIS5uYXRpdmVFbGVtZW50O1xyXG4gICAgY29uc3QgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcclxuICAgICAgdHlwZTogJ3RleHQnLFxyXG4gICAgICBhdXRvY29ycmVjdDogJ29mZicsXHJcbiAgICAgIGF1dG9jYXBpdGFsaXplOiAnb2ZmJyxcclxuICAgICAgYXV0b2NvbXBsZXRlOiAnb2ZmJyxcclxuICAgICAgLi4udGhpcy5pbnB1dEF0dHJzKCksXHJcbiAgICB9O1xyXG5cclxuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGF0dHJpYnV0ZXMpKSB7XHJcbiAgICAgIGlucHV0LnNldEF0dHJpYnV0ZShrZXksIGF0dHJpYnV0ZXNba2V5XSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyEgY29tcHV0ZWQgcHJvcGVydGllc1xyXG4gIHJlYWRvbmx5IHNob3VsZERpc3BsYXlQbGFjZWhvbGRlciA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIGlmICh0aGlzLl9pc0RhdGVJbnB1dEZvY3VzZWQoKSAmJiB0aGlzLmRhdGVJbnB1dFZhbHVlKCkpIHJldHVybiBmYWxzZTtcclxuICAgIHJldHVybiBpc051bGwodGhpcy52YWx1ZSgpKTtcclxuICB9KTtcclxuICByZWFkb25seSBzaG91bGREaXNwbGF5VmFsdWUgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICBpZiAodGhpcy5faXNEYXRlSW5wdXRGb2N1c2VkKCkpIHJldHVybiBmYWxzZTtcclxuICAgIHJldHVybiB0aGlzLnZhbHVlKCkgaW5zdGFuY2VvZiBEYXRlO1xyXG4gIH0pO1xyXG4gIHJlYWRvbmx5IHNob3VsZERpc3BsYXlEYXRlSW5wdXQgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICByZXR1cm4gIXRoaXMuaW5wdXRSZWFkT25seSgpICYmICF0aGlzLnNob3VsZERpc3BsYXlWYWx1ZSgpICYmIHRoaXMuX2lzRGF0ZUlucHV0Rm9jdXNlZCgpO1xyXG4gIH0pO1xyXG5cclxuICAvLyEgYXBwZWFyYW5jZVxyXG4gIHJlYWRvbmx5IGFwcGVhcmFuY2UgPSBpbnB1dDxGb3JtRWxlbWVudEFwcGVhcmFuY2U+KHRoaXMuX0RFRkFVTFRTLmFwcGVhcmFuY2UpO1xyXG4gIHJlYWRvbmx5IHZhcmlhbnQgPSBpbnB1dDxGb3JtRWxlbWVudFZhcmlhbnQ+KHRoaXMuX0RFRkFVTFRTLnZhcmlhbnQpO1xyXG4gIHJlYWRvbmx5IGNvbG9yID0gaW5wdXQ8Q29tcG9uZW50Q29sb3I+KHRoaXMuX0RFRkFVTFRTLmNvbG9yKTtcclxuXHJcbiAgcmVhZG9ubHkgY29tcGFjdCA9IGlucHV0PGJvb2xlYW4sIGFueT4odGhpcy5fREVGQVVMVFMuY29tcGFjdCwgeyB0cmFuc2Zvcm06IHYgPT4gY29lcmNlQm9vbGVhblByb3BlcnR5KHYpIH0pO1xyXG5cclxuICByZWFkb25seSBuZ0NsYXNzZXMgPSBjb21wdXRlZCgoKSA9PlxyXG4gICAgW1xyXG4gICAgICAvL2FwcGVhcmFuY2UgYW5kIHZhcmlhbnQgaGFuZGxlZCBpbiBhcmQtZm9ybS1maWVsZC1mcmFtZSBjb21wb25lbnRcclxuICAgICAgLy9jb2xvciBoYW5kbGVkIGluIGFyZC1jYWxlbmRhciBjb21wb25lbnRcclxuICAgICAgdGhpcy5jb21wYWN0KCkgPyAnYXJkLWNvbXBhY3QnIDogJycsXHJcbiAgICAgIHRoaXMuaXNPcGVuKCkgPyAnYXJkLWRyb3Bkb3duLW9wZW4nIDogJycsXHJcbiAgICAgIHRoaXMuX2lzRGF0ZUlucHV0Rm9jdXNlZCgpID8gJ2FyZC1kYXRlLWlucHV0X19kYXRlLWlucHV0LWZvY3VzZWQnIDogJycsXHJcbiAgICBdLmpvaW4oJyAnKVxyXG4gICk7XHJcblxyXG4gIHJlYWRvbmx5IGRyb3Bkb3duQXBwZWFyYW5jZSA9IGlucHV0PE51bGxhYmxlPERyb3Bkb3duUGFuZWxBcHBlYXJhbmNlPj4odGhpcy5fREVGQVVMVFMuZHJvcGRvd25BcHBlYXJhbmNlKTtcclxuICByZWFkb25seSBkcm9wZG93bkFwcGVhcmFuY2VPckRlZmF1bHQgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICBpZiAodGhpcy5kcm9wZG93bkFwcGVhcmFuY2UoKSkgcmV0dXJuIHRoaXMuZHJvcGRvd25BcHBlYXJhbmNlKCkhO1xyXG4gICAgaWYgKHRoaXMuYXBwZWFyYW5jZSgpID09PSBGb3JtRWxlbWVudEFwcGVhcmFuY2UuT3V0bGluZWQpIHJldHVybiBEcm9wZG93blBhbmVsQXBwZWFyYW5jZS5PdXRsaW5lZDtcclxuICAgIHJldHVybiBEcm9wZG93blBhbmVsQXBwZWFyYW5jZS5SYWlzZWQ7XHJcbiAgfSk7XHJcbiAgcmVhZG9ubHkgZHJvcGRvd25WYXJpYW50ID0gaW5wdXQ8TnVsbGFibGU8RHJvcGRvd25QYW5lbFZhcmlhbnQ+Pih0aGlzLl9ERUZBVUxUUy5kcm9wZG93blZhcmlhbnQpO1xyXG4gIHJlYWRvbmx5IGRyb3Bkb3duVmFyaWFudE9yRGVmYXVsdCA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIGlmICh0aGlzLmRyb3Bkb3duVmFyaWFudCgpKSByZXR1cm4gdGhpcy5kcm9wZG93blZhcmlhbnQoKSE7XHJcbiAgICBjb25zdCB2YXJpYW50ID0gdGhpcy52YXJpYW50KCk7XHJcbiAgICBpZiAodmFyaWFudCA9PT0gRm9ybUVsZW1lbnRWYXJpYW50LlBpbGwpIHJldHVybiBEcm9wZG93blBhbmVsVmFyaWFudC5Sb3VuZGVkO1xyXG4gICAgcmV0dXJuIHZhcmlhbnQ7XHJcbiAgfSk7XHJcblxyXG4gIC8vISBjYWxlbmRhciBhdHRyaWJ1dGVzXHJcbiAgcmVhZG9ubHkgYWN0aXZlVmlldyA9IG1vZGVsPEFyZENhbGVuZGFyVmlldz4odGhpcy5fREVGQVVMVFMuYWN0aXZlVmlldyk7XHJcbiAgcmVhZG9ubHkgYWN0aXZlWWVhciA9IG1vZGVsPG51bWJlcj4odGhpcy5fREVGQVVMVFMuYWN0aXZlWWVhcik7XHJcbiAgcmVhZG9ubHkgYWN0aXZlTW9udGggPSBtb2RlbDxudW1iZXI+KHRoaXMuX0RFRkFVTFRTLmFjdGl2ZU1vbnRoKTtcclxuXHJcbiAgcmVhZG9ubHkgZmlyc3RXZWVrZGF5ID0gaW5wdXQ8bnVtYmVyLCBhbnk+KHRoaXMuX0RFRkFVTFRTLmZpcnN0V2Vla2RheSwge1xyXG4gICAgdHJhbnNmb3JtOiB2ID0+IHtcclxuICAgICAgY29uc3QgdmFsdWUgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2LCB0aGlzLl9ERUZBVUxUUy5maXJzdFdlZWtkYXkpO1xyXG4gICAgICBpZiAoIU51bWJlci5pc0ludGVnZXIodmFsdWUpKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihcclxuICAgICAgICAgIG5ldyBFcnJvcihgQVJELU5GMDA4MUE6IFtmaXJzdFdlZWtkYXldIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyLCBnb3QgXCIke3ZhbHVlfVwiLiBVc2luZyBkZWZhdWx0IHZhbHVlIGluc3RlYWQuYClcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybiAxO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh2YWx1ZSA8IDAgfHwgdmFsdWUgPiA2KSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihcclxuICAgICAgICAgIG5ldyBFcnJvcihcclxuICAgICAgICAgICAgYEFSRC1ORjAwODFCOiBbZmlyc3RXZWVrZGF5XSBtdXN0IGJlIGJldHdlZW4gMCBhbmQgNiwgZ290IFwiJHt2YWx1ZX1cIi4gVXNpbmcgbW9kdWxvIG9wZXJhdG9yIHRvIGFkanVzdCB0aGUgdmFsdWUuYFxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHZhbHVlICUgNztcclxuICAgIH0sXHJcbiAgfSk7XHJcblxyXG4gIHJlYWRvbmx5IG11bHRpcGxlWWVhclBhZ2VDaGFuZ2VNb2RpZmllciA9IGlucHV0PG51bWJlciwgYW55Pih0aGlzLl9ERUZBVUxUUy5tdWx0aXBsZVllYXJQYWdlQ2hhbmdlTW9kaWZpZXIsIHtcclxuICAgIHRyYW5zZm9ybTogdiA9PiB7XHJcbiAgICAgIGNvbnN0IHZhbHVlID0gY29lcmNlTnVtYmVyUHJvcGVydHkodiwgdGhpcy5fREVGQVVMVFMubXVsdGlwbGVZZWFyUGFnZUNoYW5nZU1vZGlmaWVyKTtcclxuICAgICAgaWYgKCFOdW1iZXIuaXNJbnRlZ2VyKHZhbHVlKSB8fCB2YWx1ZSA8IDEpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKFxyXG4gICAgICAgICAgbmV3IEVycm9yKFxyXG4gICAgICAgICAgICBgQVJELU5GMDA4MjogW211bHRpcGxlWWVhclBhZ2VDaGFuZ2VNb2RpZmllcl0gbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIsIGdvdCBcIiR7dmFsdWV9XCIuIFVzaW5nIGRlZmF1bHQgdmFsdWUgaW5zdGVhZC5gXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxuICAgICAgICByZXR1cm4gNTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9LFxyXG4gIH0pO1xyXG5cclxuICByZWFkb25seSBtaW4gPSBpbnB1dDxEYXRlIHwgbnVsbCwgYW55Pih0aGlzLl9ERUZBVUxUUy5taW4sIHsgdHJhbnNmb3JtOiB2ID0+IGNvZXJjZURhdGVQcm9wZXJ0eSh2LCB0aGlzLl9ERUZBVUxUUy5taW4pIH0pO1xyXG4gIHJlYWRvbmx5IG1heCA9IGlucHV0PERhdGUgfCBudWxsLCBhbnk+KHRoaXMuX0RFRkFVTFRTLm1heCwgeyB0cmFuc2Zvcm06IHYgPT4gY29lcmNlRGF0ZVByb3BlcnR5KHYsIHRoaXMuX0RFRkFVTFRTLm1heCkgfSk7XHJcblxyXG4gIHJlYWRvbmx5IGZpbHRlciA9IGlucHV0PEFyZENhbGVuZGFyRmlsdGVyRm4gfCBudWxsPih0aGlzLl9ERUZBVUxUUy5maWx0ZXIpO1xyXG5cclxuICAvLyEgY2FsZW5kYXIgb3V0cHV0c1xyXG4gIHJlYWRvbmx5IHllYXJTZWxlY3QgPSBvdXRwdXQ8bnVtYmVyPigpO1xyXG4gIHJlYWRvbmx5IG1vbnRoU2VsZWN0ID0gb3V0cHV0PG51bWJlcj4oKTtcclxuXHJcbiAgLy8hIGNhbGVuZGFyIGNvbnRyb2xzXHJcblxyXG4gIHJlYWRvbmx5IHVzZUFjY2VwdEJ1dHRvblRvU2VsZWN0ID0gaW5wdXQ8Ym9vbGVhbiwgYW55PihmYWxzZSwgeyB0cmFuc2Zvcm06IHYgPT4gY29lcmNlQm9vbGVhblByb3BlcnR5KHYpIH0pO1xyXG5cclxuICBwcml2YXRlIF92YWx1ZVRvQWNjZXB0OiBEYXRlIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIG9uQ2FsZW5kYXJTZWxlY3RlZENoYW5nZShldmVudDogRGF0ZSB8IG51bGwpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnVzZUFjY2VwdEJ1dHRvblRvU2VsZWN0KCkpIHtcclxuICAgICAgdGhpcy5fdmFsdWVUb0FjY2VwdCA9IGV2ZW50O1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLl9hY2NlcHRTZWxlY3RlZERhdGUoZXZlbnQhKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfYWNjZXB0U2VsZWN0ZWREYXRlKGRhdGU6IERhdGUgfCBudWxsKTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbHVlLnNldChkYXRlKTtcclxuICAgIHRoaXMuZGF0ZUlucHV0VmFsdWUuc2V0KHRoaXMuc2VyaWFsaXplRm4oKShkYXRlKSk7XHJcbiAgICB0aGlzLmNsb3NlKCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2NhbmNlbENhbGVuZGFyU2VsZWN0aW9uKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jbG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgb25BY2NlcHRCdXR0b25DbGljaygpOiB2b2lkIHtcclxuICAgIHRoaXMuX2FjY2VwdFNlbGVjdGVkRGF0ZSh0aGlzLl92YWx1ZVRvQWNjZXB0KTtcclxuICAgIHRoaXMuX3ZhbHVlVG9BY2NlcHQgPSBudWxsO1xyXG4gIH1cclxuICBvbkNhbmNlbEJ1dHRvbkNsaWNrKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fY2FuY2VsQ2FsZW5kYXJTZWxlY3Rpb24oKTtcclxuICB9XHJcblxyXG4gIC8vISBkcm9wZG93biBvdmVybGF5XHJcbiAgcmVhZG9ubHkgZHJvcGRvd25Ib3N0ID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PignZHJvcGRvd25Ib3N0Jyk7XHJcbiAgcmVhZG9ubHkgZHJvcGRvd25UZW1wbGF0ZSA9IHZpZXdDaGlsZC5yZXF1aXJlZDxUZW1wbGF0ZVJlZjxhbnk+PignZHJvcGRvd25UZW1wbGF0ZScpO1xyXG4gIHJlYWRvbmx5IGRyb3Bkb3duUGFuZWwgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8QXJkaXVtRHJvcGRvd25QYW5lbENvbXBvbmVudD4oQXJkaXVtRHJvcGRvd25QYW5lbENvbXBvbmVudCk7XHJcblxyXG4gIHByaXZhdGUgZHJvcGRvd25PdmVybGF5PzogT3ZlcmxheVJlZjtcclxuXHJcbiAgcHJpdmF0ZSBfY3JlYXRlT3ZlcmxheSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHN0cmF0ZWd5ID0gdGhpcy5vdmVybGF5XHJcbiAgICAgIC5wb3NpdGlvbigpXHJcbiAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKHRoaXMuZHJvcGRvd25Ib3N0KCkpXHJcbiAgICAgIC53aXRoUG9zaXRpb25zKFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBvcmlnaW5YOiAnZW5kJyxcclxuICAgICAgICAgIG9yaWdpblk6ICd0b3AnLFxyXG4gICAgICAgICAgb3ZlcmxheVg6ICdlbmQnLFxyXG4gICAgICAgICAgb3ZlcmxheVk6ICdib3R0b20nLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgb3JpZ2luWDogJ2VuZCcsXHJcbiAgICAgICAgICBvcmlnaW5ZOiAnYm90dG9tJyxcclxuICAgICAgICAgIG92ZXJsYXlYOiAnZW5kJyxcclxuICAgICAgICAgIG92ZXJsYXlZOiAndG9wJyxcclxuICAgICAgICB9LFxyXG4gICAgICBdKTtcclxuXHJcbiAgICBjb25zdCBjb25maWcgPSBuZXcgT3ZlcmxheUNvbmZpZyh7XHJcbiAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IHN0cmF0ZWd5LFxyXG4gICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5zY3JvbGxTdHJhdGVneU9wdHMuYmxvY2soKSxcclxuICAgICAgaGFzQmFja2Ryb3A6IGZhbHNlLFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5kcm9wZG93bk92ZXJsYXkgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKGNvbmZpZyk7XHJcblxyXG4gICAgY29uc3QgcG9ydGFsID0gbmV3IFRlbXBsYXRlUG9ydGFsKHRoaXMuZHJvcGRvd25UZW1wbGF0ZSgpLCB0aGlzLnZpZXdDb250YWluZXJSZWYpO1xyXG4gICAgdGhpcy5kcm9wZG93bk92ZXJsYXkuYXR0YWNoKHBvcnRhbCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2Rlc3Ryb3lPdmVybGF5KCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmRyb3Bkb3duT3ZlcmxheSkgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuZHJvcGRvd25PdmVybGF5LmRpc3Bvc2UoKTtcclxuICAgIGRlbGV0ZSB0aGlzLmRyb3Bkb3duT3ZlcmxheTtcclxuICB9XHJcblxyXG4gIC8vISBob29rc1xyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3NldERhdGVJbnB1dEF0dHJpYnV0ZXMoKTtcclxuICB9XHJcblxyXG4gIC8vISBkcm9wZG93biBzdGF0ZSBoYW5kbGVyc1xyXG4gIG9uR2VuZXJhbENsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBpZiAodGFyZ2V0LnRhZ05hbWUgIT09ICdJTlBVVCcpIHtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5pc09wZW4oKSkge1xyXG4gICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmRhdGVJbnB1dCgpLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICB9XHJcbiAgb25PdXRzaWRlQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5pc09wZW4oKSkgcmV0dXJuO1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgaWYgKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKHRhcmdldCkpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmNsb3NlKCk7XHJcbiAgfVxyXG4gIG9uQ2FsZW5kYXJCdXR0b25DbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuY2FsZW5kYXJEaXNhYmxlZCgpKSByZXR1cm47XHJcbiAgICBpZiAodGhpcy5jYWxlbmRhckhpZGRlbigpKSByZXR1cm47XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblxyXG4gICAgdGhpcy50b2dnbGUoKTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmlzT3BlbigpKSB7XHJcbiAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5vcGVuKCk7XHJcbiAgfVxyXG4gIG9wZW4oKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZCgpIHx8IHRoaXMuaXNPcGVuKCkpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmlzT3Blbi5zZXQodHJ1ZSk7XHJcblxyXG4gICAgdGhpcy5fY3JlYXRlT3ZlcmxheSgpO1xyXG4gICAgdGhpcy5mb2N1cygpO1xyXG5cclxuICAgIHRoaXMub3BlbkV2ZW50LmVtaXQoKTtcclxuICB9XHJcbiAgY2xvc2UoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNPcGVuKCkpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmlzT3Blbi5zZXQoZmFsc2UpO1xyXG5cclxuICAgIHRoaXMuX2Rlc3Ryb3lPdmVybGF5KCk7XHJcblxyXG4gICAgdGhpcy5fb25Ub3VjaGVkKCk7XHJcbiAgICB0aGlzLmNsb3NlRXZlbnQuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgLy8hIHRlbXBsYXRlc1xyXG4gIHJlYWRvbmx5IHZhbHVlVGVtcGxhdGUgPSBjb250ZW50Q2hpbGQoQXJkRGF0ZUlucHV0VmFsdWVUZW1wbGF0ZURpcmVjdGl2ZSk7XHJcbiAgcmVhZG9ubHkgY2FsZW5kYXJJY29uVGVtcGxhdGUgPSBjb250ZW50Q2hpbGQoQXJkRGF0ZUlucHV0Q2FsZW5kYXJJY29uVGVtcGxhdGVEaXJlY3RpdmUpO1xyXG4gIHJlYWRvbmx5IGFjY2VwdEJ1dHRvbnNUZW1wbGF0ZSA9IGNvbnRlbnRDaGlsZChBcmREYXRlSW5wdXRBY2NlcHRCdXR0b25zVGVtcGxhdGVEaXJlY3RpdmUpO1xyXG5cclxuICByZWFkb25seSBwcmVmaXhUZW1wbGF0ZSA9IGNvbnRlbnRDaGlsZChBcmREYXRlSW5wdXRQcmVmaXhUZW1wbGF0ZURpcmVjdGl2ZSk7XHJcbiAgcmVhZG9ubHkgc3VmZml4VGVtcGxhdGUgPSBjb250ZW50Q2hpbGQoQXJkRGF0ZUlucHV0U3VmZml4VGVtcGxhdGVEaXJlY3RpdmUpO1xyXG5cclxuICAvLyEgY29udGV4dCBwcm92aWRlcnNcclxuICByZWFkb25seSB2YWx1ZUNvbnRleHQgPSBjb21wdXRlZDxBcmREYXRlSW5wdXRWYWx1ZUNvbnRleHQ+KCgpID0+ICh7XHJcbiAgICAkaW1wbGljaXQ6IHRoaXMudmFsdWUoKSxcclxuICB9KSk7XHJcblxyXG4gIHJlYWRvbmx5IGFjY2VwdEJ1dHRvbnNDb250ZXh0ID0gY29tcHV0ZWQ8QXJkRGF0ZUlucHV0QWNjZXB0QnV0dG9uc0NvbnRleHQ+KCgpID0+ICh7XHJcbiAgICAkaW1wbGljaXQ6ICgpID0+IHRoaXMub25BY2NlcHRCdXR0b25DbGljaygpLFxyXG4gICAgYWNjZXB0OiAoKSA9PiB0aGlzLm9uQWNjZXB0QnV0dG9uQ2xpY2soKSxcclxuICAgIGNhbmNlbDogKCkgPT4gdGhpcy5vbkNhbmNlbEJ1dHRvbkNsaWNrKCksXHJcbiAgICBkaXNhYmxlZDogdGhpcy5kaXNhYmxlZCgpIHx8IHRoaXMuY2FsZW5kYXJEaXNhYmxlZCgpLFxyXG4gIH0pKTtcclxufVxyXG4iLCI8YXJkLWZvcm0tZmllbGQtZnJhbWVcclxuICBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlKClcIlxyXG4gIFt2YXJpYW50XT1cInZhcmlhbnQoKVwiXHJcbiAgW2NvbXBhY3RdPVwiY29tcGFjdCgpXCJcclxuICBbaXNGb2N1c2VkXT1cImlzRm9jdXNlZCgpXCJcclxuICBbaGFzRXJyb3JdPVwiaGFzRXJyb3IoKVwiXHJcbiAgW2lzU3VjY2Vzc109XCJpc1N1Y2Nlc3MoKVwiXHJcbiAgW3ByZWZpeFRlbXBsYXRlXT1cInByZWZpeFRlbXBsYXRlKCk/LnRlbXBsYXRlXCJcclxuICBbc3VmZml4VGVtcGxhdGVdPVwic3VmZml4VGVtcGxhdGUoKT8udGVtcGxhdGVcIlxyXG4+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJhcmQtZGF0ZS1pbnB1dFwiXHJcbiAgICAjZHJvcGRvd25Ib3N0XHJcbiAgICAoY2xpY2spPVwib25HZW5lcmFsQ2xpY2soJGV2ZW50KVwiXHJcbiAgICBbY2xhc3MuYXJkLWhhcy12YWx1ZV09XCIhIXZhbHVlKClcIlxyXG4gICAgW25nQ2xhc3NdPVwibmdDbGFzc2VzKClcIlxyXG4gID5cclxuICAgIDxkaXYgY2xhc3M9XCJhcmQtZGF0ZS1pbnB1dF9fdmFsdWUtY29udGFpbmVyIGFyZC1pbnB1dC1jb250YWluZXJcIj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiYXJkLWRhdGUtaW5wdXRfX3BsYWNlaG9sZGVyIGFyZC1wbGFjZWhvbGRlclwiXHJcbiAgICAgICAgW2NsYXNzLmFyZC1kYXRlLWlucHV0X19wbGFjZWhvbGRlci1oaWRkZW5dPVwiIXNob3VsZERpc3BsYXlQbGFjZWhvbGRlcigpXCJcclxuICAgICAgPlxyXG4gICAgICAgIHt7IHBsYWNlaG9sZGVyKCkgfX1cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImFyZC1kYXRlLWlucHV0X192YWx1ZVwiXHJcbiAgICAgICAgW2NsYXNzLmFyZC1kYXRlLWlucHV0X192YWx1ZS1oaWRkZW5dPVwiIXNob3VsZERpc3BsYXlWYWx1ZSgpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZVxyXG4gICAgICAgICAgI2RlZmF1bHRWYWx1ZVRlbXBsYXRlXHJcbiAgICAgICAgICBsZXQtZGF0ZVxyXG4gICAgICAgID5cclxuICAgICAgICAgIHt7IHNlcmlhbGl6ZUZuKCkoZGF0ZSkgfX1cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICA8bmctdGVtcGxhdGVcclxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInZhbHVlVGVtcGxhdGUoKT8udGVtcGxhdGUgfHwgZGVmYXVsdFZhbHVlVGVtcGxhdGVcIlxyXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInZhbHVlQ29udGV4dCgpXCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiYXJkLWRhdGUtaW5wdXRfX2lucHV0LWNvbnRhaW5lclwiXHJcbiAgICAgICAgcm9sZT1cImNvbWJvYm94XCJcclxuICAgICAgICBhcmlhLWhhc3BvcHVwPVwibGlzdGJveFwiXHJcbiAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJpc09wZW4oKVwiXHJcbiAgICAgICAgW2F0dHIuYXJpYS1vd25zXT1cImlzT3BlbigpID8gaHRtbElkKCkgOiBudWxsXCJcclxuICAgICAgICBbY2xhc3MuYXJkLWRhdGUtaW5wdXRfX2lucHV0LWNvbnRhaW5lci1oaWRkZW5dPVwiIXNob3VsZERpc3BsYXlEYXRlSW5wdXQoKVwiXHJcbiAgICAgID5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICNkYXRlSW5wdXRcclxuICAgICAgICAgICNmb2N1c2FibGVFbGVtZW50XHJcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICBjbGFzcz1cImFyZC1kYXRlLWlucHV0X19pbnB1dFwiXHJcbiAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCJ0YWJJbmRleCgpXCJcclxuICAgICAgICAgIFt2YWx1ZV09XCJkYXRlSW5wdXRWYWx1ZSgpXCJcclxuICAgICAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiaXNPcGVuKCkgPyBodG1sSWQoKSA6IG51bGxcIlxyXG4gICAgICAgICAgKGlucHV0KT1cIm9uRGF0ZUlucHV0SW5wdXQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAoY2hhbmdlKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgICAoZm9jdXMpPVwib25EYXRlSW5wdXRGb2N1cygkZXZlbnQpXCJcclxuICAgICAgICAgIChibHVyKT1cIm9uRGF0ZUlucHV0Qmx1cigkZXZlbnQpXCJcclxuICAgICAgICAgIChrZXlkb3duKT1cIm9uRGF0ZUlucHV0RW50ZXIoJGV2ZW50KVwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICBAaWYgKCFjYWxlbmRhckhpZGRlbigpKSB7XHJcbiAgICAgIDxhcmQtaWNvbi1idXR0b25cclxuICAgICAgICBjb2xvcj1cIm5vbmVcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJjYWxlbmRhckRpc2FibGVkKClcIlxyXG4gICAgICAgIChjbGljayk9XCJvbkNhbGVuZGFyQnV0dG9uQ2xpY2soJGV2ZW50KVwiXHJcbiAgICAgID5cclxuICAgICAgICA8bmctdGVtcGxhdGVcclxuICAgICAgICAgICNkZWZhdWx0Q2FsZW5kYXJJY29uVGVtcGxhdGVcclxuICAgICAgICAgIGxldC1kYXRlXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGFyZC1pY29uIGZpbGxlZD50b2RheTwvYXJkLWljb24+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNhbGVuZGFySWNvblRlbXBsYXRlKCk/LnRlbXBsYXRlIHx8IGRlZmF1bHRDYWxlbmRhckljb25UZW1wbGF0ZVwiIC8+XHJcbiAgICAgIDwvYXJkLWljb24tYnV0dG9uPlxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG48L2FyZC1mb3JtLWZpZWxkLWZyYW1lPlxyXG5cclxuPG5nLXRlbXBsYXRlICNkcm9wZG93blRlbXBsYXRlPlxyXG4gIDxhcmQtZHJvcGRvd24tcGFuZWxcclxuICAgIGNsYXNzPVwiYXJkLWRyb3Bkb3duLXBhbmVsIGFyZC1kYXRlLWlucHV0X19kcm9wZG93bi1wYW5lbFwiXHJcbiAgICBbYXBwZWFyYW5jZV09XCJkcm9wZG93bkFwcGVhcmFuY2VPckRlZmF1bHQoKVwiXHJcbiAgICBbdmFyaWFudF09XCJkcm9wZG93blZhcmlhbnRPckRlZmF1bHQoKVwiXHJcbiAgICBbaXNPcGVuXT1cInRydWVcIlxyXG4gICAgW3BhbmVsSWRdPVwiaHRtbElkKClcIlxyXG4gICAgW2NvbXBhY3RdPVwiY29tcGFjdCgpXCJcclxuICAgIChhcmRDbGlja091dHNpZGUpPVwib25PdXRzaWRlQ2xpY2soJGV2ZW50KVwiXHJcbiAgPlxyXG4gICAgPGFyZC1jYWxlbmRhclxyXG4gICAgICBjbGFzcz1cImFyZC1kYXRlLWlucHV0X19jYWxlbmRhclwiXHJcbiAgICAgIFsoYWN0aXZlTW9udGgpXT1cImFjdGl2ZU1vbnRoXCJcclxuICAgICAgWyhhY3RpdmVZZWFyKV09XCJhY3RpdmVZZWFyXCJcclxuICAgICAgWyhhY3RpdmVWaWV3KV09XCJhY3RpdmVWaWV3XCJcclxuICAgICAgW2ZpcnN0V2Vla2RheV09XCJmaXJzdFdlZWtkYXkoKVwiXHJcbiAgICAgIFttaW5dPVwibWluKClcIlxyXG4gICAgICBbbWF4XT1cIm1heCgpXCJcclxuICAgICAgYXV0b0ZvY3VzXHJcbiAgICAgIFttdWx0aXBsZVllYXJQYWdlQ2hhbmdlTW9kaWZpZXJdPVwibXVsdGlwbGVZZWFyUGFnZUNoYW5nZU1vZGlmaWVyKClcIlxyXG4gICAgICBbY29sb3JdPVwiY29sb3IoKVwiXHJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCgpIHx8IGNhbGVuZGFyRGlzYWJsZWQoKVwiXHJcbiAgICAgIFt0YWJJbmRleF09XCJ0YWJJbmRleCgpXCJcclxuICAgICAgKHNlbGVjdGVkQ2hhbmdlKT1cIm9uQ2FsZW5kYXJTZWxlY3RlZENoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgKHllYXJTZWxlY3QpPVwieWVhclNlbGVjdC5lbWl0KCRldmVudClcIlxyXG4gICAgICAobW9udGhTZWxlY3QpPVwibW9udGhTZWxlY3QuZW1pdCgkZXZlbnQpXCJcclxuICAgIC8+XHJcbiAgICBAaWYgKHVzZUFjY2VwdEJ1dHRvblRvU2VsZWN0KCkpIHtcclxuICAgICAgPGRpdiBjbGFzcz1cImFyZC1kYXRlLWlucHV0X19hY2NlcHQtYnV0dG9ucy1jb250YWluZXJcIj5cclxuICAgICAgICA8bmctdGVtcGxhdGVcclxuICAgICAgICAgICNkZWZhdWx0QWNjZXB0QnV0dG9uc1RlbXBsYXRlXHJcbiAgICAgICAgICBsZXQtZGF0ZVxyXG4gICAgICAgID5cclxuICAgICAgICAgIHt7IHNlcmlhbGl6ZUZuKCkoZGF0ZSkgfX1cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICA8bmctdGVtcGxhdGVcclxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImFjY2VwdEJ1dHRvbnNUZW1wbGF0ZSgpPy50ZW1wbGF0ZSB8fCBkZWZhdWx0QWNjZXB0QnV0dG9uc1RlbXBsYXRlXCJcclxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJhY2NlcHRCdXR0b25zQ29udGV4dCgpXCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIH1cclxuICA8L2FyZC1kcm9wZG93bi1wYW5lbD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
|
|
372
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2lucHV0cy9kYXRlLWlucHV0L2RhdGUtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9pbnB1dHMvZGF0ZS1pbnB1dC9kYXRlLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFjLHFCQUFxQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDakcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixZQUFZLEVBQ1osTUFBTSxFQUNOLFVBQVUsRUFDVixVQUFVLEVBQ1YsTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBQ0wsS0FBSyxFQUVMLE1BQU0sRUFDTixNQUFNLEVBRU4sU0FBUyxFQUNULGdCQUFnQixFQUNoQixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxrQkFBa0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BHLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2hELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRS9FLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSx1QkFBdUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRW5ILE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJCQUEy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QkFDdkQsS0FBSyxFQUFFLElBQUk7YUFDWjtZQUNEO2dCQUNFLE9BQU8sRUFBRSx1QkFBdUI7Z0JBQ2hDLFdBQVcsRUFBRSx3QkFBd0I7YUFDdEM7U0FDRixxRUFpV3FDLGtDQUFrQyx1R0FDM0IseUNBQXlDLHdHQUN4QywwQ0FBMEMsaUdBRWpELG1DQUFtQyxpR0FDbkMsbUNBQW1DLGlIQUVuQiwyQ0FBMkMsa0hBQzFDLDRDQUE0QyxtSEFDM0MsNkNBQTZDLDBHQUN0RCxvQ0FBb0MsZ0hBQzlCLDBDQUEwQyx1R0FDbkQsaUNBQWlDLHdHQUNoQyxrQ0FBa0Msc0dBQ3BDLGdDQUFnQyw4YkFySEYsNEJBQTRCLHVGQ2xVeEcsNHpKQTRJQTs7NEZEbEVhLHdCQUF3QjtrQkFsQnBDLFNBQVM7K0JBQ0UsZ0JBQWdCLGlCQUdYLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUseUJBQXlCLENBQUM7NEJBQ3ZELEtBQUssRUFBRSxJQUFJO3lCQUNaO3dCQUNEOzRCQUNFLE9BQU8sRUFBRSx1QkFBdUI7NEJBQ2hDLFdBQVcsMEJBQTBCO3lCQUN0QztxQkFDRjs7MEJBSVksTUFBTTsyQkFBQyx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5Q29uZmlnLCBPdmVybGF5UmVmLCBTY3JvbGxTdHJhdGVneU9wdGlvbnMgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XHJcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XHJcbmltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDb21wb25lbnQsXHJcbiAgY29tcHV0ZWQsXHJcbiAgY29udGVudENoaWxkLFxyXG4gIGVmZmVjdCxcclxuICBFbGVtZW50UmVmLFxyXG4gIGZvcndhcmRSZWYsXHJcbiAgSW5qZWN0LFxyXG4gIGluamVjdCxcclxuICBpbnB1dCxcclxuICBtb2RlbCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgb3V0cHV0LFxyXG4gIHNpZ25hbCxcclxuICBUZW1wbGF0ZVJlZixcclxuICB2aWV3Q2hpbGQsXHJcbiAgVmlld0NvbnRhaW5lclJlZixcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHksIGNvZXJjZURhdGVQcm9wZXJ0eSwgY29lcmNlTnVtYmVyUHJvcGVydHkgfSBmcm9tICdAYXJkaXVtLXVpL2RldmtpdCc7XHJcbmltcG9ydCB7IGlzRGVmaW5lZCwgaXNOdWxsIH0gZnJvbSAnc2ltcGxlLWJvb2wnO1xyXG5pbXBvcnQgeyBfRm9ybUZpZWxkQ29tcG9uZW50QmFzZSB9IGZyb20gJy4uLy4uL19pbnRlcm5hbC9mb3JtLWZpZWxkLWNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFyZENhbGVuZGFyRmlsdGVyRm4sIEFyZENhbGVuZGFyVmlldyB9IGZyb20gJy4uLy4uL2NhbGVuZGFyL2NhbGVuZGFyLnR5cGVzJztcclxuaW1wb3J0IHsgQXJkaXVtRHJvcGRvd25QYW5lbENvbXBvbmVudCwgRHJvcGRvd25QYW5lbEFwcGVhcmFuY2UsIERyb3Bkb3duUGFuZWxWYXJpYW50IH0gZnJvbSAnLi4vLi4vZHJvcGRvd24tcGFuZWwnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRDb2xvciB9IGZyb20gJy4uLy4uL3R5cGVzL2NvbG9ycy50eXBlcyc7XHJcbmltcG9ydCB7IEZvcm1FbGVtZW50QXBwZWFyYW5jZSwgRm9ybUVsZW1lbnRWYXJpYW50IH0gZnJvbSAnLi4vLi4vdHlwZXMvdGhlbWluZy50eXBlcyc7XHJcbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnLi4vLi4vdHlwZXMvdXRpbGl0eS50eXBlcyc7XHJcbmltcG9ydCB7IEFSRF9EQVRFX0lOUFVUX0RFRkFVTFRTLCBBcmREYXRlSW5wdXREZWZhdWx0cyB9IGZyb20gJy4vZGF0ZS1pbnB1dC5kZWZhdWx0cyc7XHJcbmltcG9ydCB7XHJcbiAgQXJkRGF0ZUlucHV0QWNjZXB0QnV0dG9uc1RlbXBsYXRlRGlyZWN0aXZlLFxyXG4gIEFyZERhdGVJbnB1dENhbGVuZGFySWNvblRlbXBsYXRlRGlyZWN0aXZlLFxyXG4gIEFyZERhdGVJbnB1dERheXNWaWV3SGVhZGVyVGVtcGxhdGVEaXJlY3RpdmUsXHJcbiAgQXJkRGF0ZUlucHV0RGF5VGVtcGxhdGVEaXJlY3RpdmUsXHJcbiAgQXJkRGF0ZUlucHV0RmxvYXRpbmdNb250aFRlbXBsYXRlRGlyZWN0aXZlLFxyXG4gIEFyZERhdGVJbnB1dE1vbnRoc1ZpZXdIZWFkZXJUZW1wbGF0ZURpcmVjdGl2ZSxcclxuICBBcmREYXRlSW5wdXRNb250aFRlbXBsYXRlRGlyZWN0aXZlLFxyXG4gIEFyZERhdGVJbnB1dFByZWZpeFRlbXBsYXRlRGlyZWN0aXZlLFxyXG4gIEFyZERhdGVJbnB1dFN1ZmZpeFRlbXBsYXRlRGlyZWN0aXZlLFxyXG4gIEFyZERhdGVJbnB1dFZhbHVlVGVtcGxhdGVEaXJlY3RpdmUsXHJcbiAgQXJkRGF0ZUlucHV0V2Vla2RheVRlbXBsYXRlRGlyZWN0aXZlLFxyXG4gIEFyZERhdGVJbnB1dFllYXJzVmlld0hlYWRlclRlbXBsYXRlRGlyZWN0aXZlLFxyXG4gIEFyZERhdGVJbnB1dFllYXJUZW1wbGF0ZURpcmVjdGl2ZSxcclxufSBmcm9tICcuL2RhdGUtaW5wdXQuZGlyZWN0aXZlJztcclxuaW1wb3J0IHtcclxuICBBcmREYXRlSW5wdXRBY2NlcHRCdXR0b25zQ29udGV4dCxcclxuICBBcmREYXRlSW5wdXREZXNlcmlhbGl6ZUZuLFxyXG4gIEFyZERhdGVJbnB1dE1pbk1heFN0cmF0ZWd5LFxyXG4gIEFyZERhdGVJbnB1dFNlcmlhbGl6ZUZuLFxyXG4gIEFyZERhdGVJbnB1dFZhbHVlQ29udGV4dCxcclxufSBmcm9tICcuL2RhdGUtaW5wdXQudHlwZXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcmQtZGF0ZS1pbnB1dCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2RhdGUtaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQXJkaXVtRGF0ZUlucHV0Q29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBfRm9ybUZpZWxkQ29tcG9uZW50QmFzZSxcclxuICAgICAgdXNlRXhpc3Rpbmc6IEFyZGl1bURhdGVJbnB1dENvbXBvbmVudCxcclxuICAgIH0sXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFyZGl1bURhdGVJbnB1dENvbXBvbmVudCBleHRlbmRzIF9Gb3JtRmllbGRDb21wb25lbnRCYXNlIGltcGxlbWVudHMgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlYWRvbmx5IF9ERUZBVUxUUyE6IEFyZERhdGVJbnB1dERlZmF1bHRzO1xyXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoQVJEX0RBVEVfSU5QVVRfREVGQVVMVFMpIGRlZmF1bHRzOiBBcmREYXRlSW5wdXREZWZhdWx0cykge1xyXG4gICAgc3VwZXIoZGVmYXVsdHMpO1xyXG5cclxuICAgIGVmZmVjdCgoKSA9PiB7XHJcbiAgICAgIHRoaXMudmFsdWUoKTtcclxuICAgICAgdGhpcy5fZW1pdENoYW5nZSgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgb3ZlcmxheSA9IGluamVjdChPdmVybGF5KTtcclxuICBwcml2YXRlIHJlYWRvbmx5IHZpZXdDb250YWluZXJSZWYgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBzY3JvbGxTdHJhdGVneU9wdHMgPSBpbmplY3QoU2Nyb2xsU3RyYXRlZ3lPcHRpb25zKTtcclxuXHJcbiAgcmVhZG9ubHkgaW5wdXRBdHRycyA9IGlucHV0PFJlY29yZDxzdHJpbmcsIGFueT4+KHRoaXMuX0RFRkFVTFRTLmlucHV0QXR0cnMpO1xyXG5cclxuICByZWFkb25seSBwbGFjZWhvbGRlciA9IGlucHV0PHN0cmluZz4odGhpcy5fREVGQVVMVFMucGxhY2Vob2xkZXIpO1xyXG5cclxuICByZWFkb25seSBpbnB1dFJlYWRPbmx5ID0gaW5wdXQ8Ym9vbGVhbiwgYW55PihmYWxzZSwgeyB0cmFuc2Zvcm06IHYgPT4gY29lcmNlQm9vbGVhblByb3BlcnR5KHYpIH0pO1xyXG4gIHJlYWRvbmx5IGNhbGVuZGFyRGlzYWJsZWQgPSBpbnB1dDxib29sZWFuLCBhbnk+KGZhbHNlLCB7IHRyYW5zZm9ybTogdiA9PiBjb2VyY2VCb29sZWFuUHJvcGVydHkodikgfSk7XHJcbiAgcmVhZG9ubHkgY2FsZW5kYXJIaWRkZW4gPSBpbnB1dDxib29sZWFuLCBhbnk+KGZhbHNlLCB7IHRyYW5zZm9ybTogdiA9PiBjb2VyY2VCb29sZWFuUHJvcGVydHkodikgfSk7XHJcblxyXG4gIC8vISBzZXJpYWxpemF0aW9uL2Rlc2VyaWFsaXphdGlvblxyXG4gIHJlYWRvbmx5IHNlcmlhbGl6ZUZuID0gaW5wdXQ8QXJkRGF0ZUlucHV0U2VyaWFsaXplRm4+KHRoaXMuX0RFRkFVTFRTLnNlcmlhbGl6ZUZuKTtcclxuICByZWFkb25seSBkZXNlcmlhbGl6ZUZuID0gaW5wdXQ8QXJkRGF0ZUlucHV0RGVzZXJpYWxpemVGbj4odGhpcy5fREVGQVVMVFMuZGVzZXJpYWxpemVGbik7XHJcblxyXG4gIC8vISBjb250cm9sIHZhbHVlIGFjY2Vzc29yXHJcbiAgcmVhZG9ubHkgdmFsdWUgPSBtb2RlbDxEYXRlIHwgbnVsbD4obnVsbCk7XHJcbiAgcmVhZG9ubHkgZGF0ZUlucHV0VmFsdWUgPSBtb2RlbDxzdHJpbmc+KCcnKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF93YXNEYXRlSW5wdXRDaGFuZ2VkID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuXHJcbiAgd3JpdGVWYWx1ZSh2OiBEYXRlIHwgbnVsbCk6IHZvaWQge1xyXG4gICAgaWYgKHYgaW5zdGFuY2VvZiBEYXRlKSB7XHJcbiAgICAgIHRoaXMudmFsdWUuc2V0KHYpO1xyXG4gICAgfSBlbHNlIGlmICghaXNEZWZpbmVkKHYpKSB7XHJcbiAgICAgIHRoaXMudmFsdWUuc2V0KG51bGwpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc29sZS5lcnJvcihuZXcgRXJyb3IoYEFSRC1ORjAwODM6IDxhcmQtZGF0ZS1pbnB1dD4gd3JpdGVWYWx1ZSBleHBlY3RlZCBhIERhdGUgb3IgbnVsbCwgZ290IFwiJHt2fVwiLmApKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vISBjaGFuZ2UgJiB0b3VjaCBldmVudCBlbWl0dGVyc1xyXG4gIHByb3RlY3RlZCBfZW1pdENoYW5nZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX29uQ2hhbmdlUmVnaXN0ZXJlZD8uKHRoaXMudmFsdWUoKSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX29uVG91Y2hlZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX29uVG91Y2hlZFJlZ2lzdGVyZWQ/LigpO1xyXG4gIH1cclxuXHJcbiAgLy8hIG91dHB1dCBldmVudHNcclxuICByZWFkb25seSBpc09wZW4gPSBtb2RlbDxib29sZWFuPihmYWxzZSk7XHJcblxyXG4gIHJlYWRvbmx5IG9wZW5FdmVudCA9IG91dHB1dDx2b2lkPih7IGFsaWFzOiAnb3BlbicgfSk7XHJcbiAgcmVhZG9ubHkgY2xvc2VFdmVudCA9IG91dHB1dDx2b2lkPih7IGFsaWFzOiAnY2xvc2UnIH0pO1xyXG5cclxuICAvLyEgZGF0ZSBpbnB1dCBldmVudCBoYW5kbGVyc1xyXG4gIHJlYWRvbmx5IGRhdGVJbnB1dCA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+PignZGF0ZUlucHV0Jyk7XHJcblxyXG4gIHJlYWRvbmx5IG1pbk1heFN0cmF0ZWd5ID0gaW5wdXQ8QXJkRGF0ZUlucHV0TWluTWF4U3RyYXRlZ3k+KHRoaXMuX0RFRkFVTFRTLm1pbk1heFN0cmF0ZWd5KTtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNEYXRlSW5wdXRGb2N1c2VkID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuXHJcbiAgb25EYXRlSW5wdXRJbnB1dChldmVudDogRXZlbnQpOiB2b2lkIHtcclxuICAgIGNvbnN0IHYgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xyXG4gICAgdGhpcy5kYXRlSW5wdXRWYWx1ZS5zZXQodik7XHJcbiAgfVxyXG4gIG9uRGF0ZUlucHV0Rm9jdXMoZXZlbnQ6IEZvY3VzRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMub25Gb2N1cyhldmVudCk7XHJcbiAgICB0aGlzLl9pc0RhdGVJbnB1dEZvY3VzZWQuc2V0KHRydWUpO1xyXG4gICAgdGhpcy5fd2FzRGF0ZUlucHV0Q2hhbmdlZC5zZXQoZmFsc2UpO1xyXG4gIH1cclxuICBvbkRhdGVJbnB1dEJsdXIoZXZlbnQ6IEZvY3VzRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMub25CbHVyKGV2ZW50KTtcclxuXHJcbiAgICB0aGlzLl9wcm9jZXNzRGF0ZUlucHV0VGV4dCh0aGlzLmRhdGVJbnB1dFZhbHVlKCkpO1xyXG5cclxuICAgIGlmICghdGhpcy5faXNEYXRlSW5wdXRGb2N1c2VkKCkpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLl9vblRvdWNoZWQoKTtcclxuXHJcbiAgICB0aGlzLl9pc0RhdGVJbnB1dEZvY3VzZWQuc2V0KGZhbHNlKTtcclxuICB9XHJcbiAgb25EYXRlSW5wdXRFbnRlcihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKGV2ZW50LmtleSAhPT0gJ0VudGVyJykgcmV0dXJuO1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIHRoaXMuY2xvc2UoKTtcclxuICAgIHRoaXMuYmx1cigpO1xyXG4gICAgdGhpcy5mb2N1cygpO1xyXG4gIH1cclxuICBwcml2YXRlIF9wcm9jZXNzRGF0ZUlucHV0VGV4dCh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBsZXQgZGF0ZSA9IHRoaXMuZGVzZXJpYWxpemVGbigpKHZhbHVlLCB0aGlzLnZhbHVlKCkpO1xyXG5cclxuICAgIGlmICh0aGlzLm1pbk1heFN0cmF0ZWd5KCkgPT09IEFyZERhdGVJbnB1dE1pbk1heFN0cmF0ZWd5LkFkanVzdCAmJiBkYXRlKSB7XHJcbiAgICAgIGNvbnN0IG1pbiA9IHRoaXMubWluKCk7XHJcbiAgICAgIGNvbnN0IG1heCA9IHRoaXMubWF4KCk7XHJcblxyXG4gICAgICBpZiAobWluICYmIGRhdGUgPCBtaW4pIHtcclxuICAgICAgICBkYXRlID0gbmV3IERhdGUobWluKTtcclxuICAgICAgfSBlbHNlIGlmIChtYXggJiYgZGF0ZSA+IG1heCkge1xyXG4gICAgICAgIGRhdGUgPSBuZXcgRGF0ZShtYXgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy52YWx1ZS5zZXQoZGF0ZSk7XHJcbiAgICB0aGlzLmRhdGVJbnB1dFZhbHVlLnNldCh0aGlzLnNlcmlhbGl6ZUZuKCkoZGF0ZSkpO1xyXG4gIH1cclxuICBwcml2YXRlIF9zZXREYXRlSW5wdXRBdHRyaWJ1dGVzKCkge1xyXG4gICAgY29uc3QgaW5wdXQgPSB0aGlzLmRhdGVJbnB1dCgpIS5uYXRpdmVFbGVtZW50O1xyXG4gICAgY29uc3QgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcclxuICAgICAgdHlwZTogJ3RleHQnLFxyXG4gICAgICBhdXRvY29ycmVjdDogJ29mZicsXHJcbiAgICAgIGF1dG9jYXBpdGFsaXplOiAnb2ZmJyxcclxuICAgICAgYXV0b2NvbXBsZXRlOiAnb2ZmJyxcclxuICAgICAgLi4udGhpcy5pbnB1dEF0dHJzKCksXHJcbiAgICB9O1xyXG5cclxuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGF0dHJpYnV0ZXMpKSB7XHJcbiAgICAgIGlucHV0LnNldEF0dHJpYnV0ZShrZXksIGF0dHJpYnV0ZXNba2V5XSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyEgY29tcHV0ZWQgcHJvcGVydGllc1xyXG4gIHJlYWRvbmx5IHNob3VsZERpc3BsYXlQbGFjZWhvbGRlciA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIGlmICh0aGlzLl9pc0RhdGVJbnB1dEZvY3VzZWQoKSAmJiB0aGlzLmRhdGVJbnB1dFZhbHVlKCkpIHJldHVybiBmYWxzZTtcclxuICAgIHJldHVybiBpc051bGwodGhpcy52YWx1ZSgpKTtcclxuICB9KTtcclxuICByZWFkb25seSBzaG91bGREaXNwbGF5VmFsdWUgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICBpZiAodGhpcy5faXNEYXRlSW5wdXRGb2N1c2VkKCkpIHJldHVybiBmYWxzZTtcclxuICAgIHJldHVybiB0aGlzLnZhbHVlKCkgaW5zdGFuY2VvZiBEYXRlO1xyXG4gIH0pO1xyXG4gIHJlYWRvbmx5IHNob3VsZERpc3BsYXlEYXRlSW5wdXQgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICByZXR1cm4gIXRoaXMuaW5wdXRSZWFkT25seSgpICYmICF0aGlzLnNob3VsZERpc3BsYXlWYWx1ZSgpICYmIHRoaXMuX2lzRGF0ZUlucHV0Rm9jdXNlZCgpO1xyXG4gIH0pO1xyXG5cclxuICAvLyEgYXBwZWFyYW5jZVxyXG4gIHJlYWRvbmx5IGFwcGVhcmFuY2UgPSBpbnB1dDxGb3JtRWxlbWVudEFwcGVhcmFuY2U+KHRoaXMuX0RFRkFVTFRTLmFwcGVhcmFuY2UpO1xyXG4gIHJlYWRvbmx5IHZhcmlhbnQgPSBpbnB1dDxGb3JtRWxlbWVudFZhcmlhbnQ+KHRoaXMuX0RFRkFVTFRTLnZhcmlhbnQpO1xyXG4gIHJlYWRvbmx5IGNvbG9yID0gaW5wdXQ8Q29tcG9uZW50Q29sb3I+KHRoaXMuX0RFRkFVTFRTLmNvbG9yKTtcclxuXHJcbiAgcmVhZG9ubHkgY29tcGFjdCA9IGlucHV0PGJvb2xlYW4sIGFueT4odGhpcy5fREVGQVVMVFMuY29tcGFjdCwgeyB0cmFuc2Zvcm06IHYgPT4gY29lcmNlQm9vbGVhblByb3BlcnR5KHYpIH0pO1xyXG5cclxuICByZWFkb25seSBuZ0NsYXNzZXMgPSBjb21wdXRlZCgoKSA9PlxyXG4gICAgW1xyXG4gICAgICAvL2FwcGVhcmFuY2UgYW5kIHZhcmlhbnQgaGFuZGxlZCBpbiBhcmQtZm9ybS1maWVsZC1mcmFtZSBjb21wb25lbnRcclxuICAgICAgLy9jb2xvciBoYW5kbGVkIGluIGFyZC1jYWxlbmRhciBjb21wb25lbnRcclxuICAgICAgdGhpcy5jb21wYWN0KCkgPyAnYXJkLWNvbXBhY3QnIDogJycsXHJcbiAgICAgIHRoaXMuaXNPcGVuKCkgPyAnYXJkLWRyb3Bkb3duLW9wZW4nIDogJycsXHJcbiAgICAgIHRoaXMuX2lzRGF0ZUlucHV0Rm9jdXNlZCgpID8gJ2FyZC1kYXRlLWlucHV0X19kYXRlLWlucHV0LWZvY3VzZWQnIDogJycsXHJcbiAgICBdLmpvaW4oJyAnKVxyXG4gICk7XHJcblxyXG4gIHJlYWRvbmx5IGRyb3Bkb3duQXBwZWFyYW5jZSA9IGlucHV0PE51bGxhYmxlPERyb3Bkb3duUGFuZWxBcHBlYXJhbmNlPj4odGhpcy5fREVGQVVMVFMuZHJvcGRvd25BcHBlYXJhbmNlKTtcclxuICByZWFkb25seSBkcm9wZG93bkFwcGVhcmFuY2VPckRlZmF1bHQgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICBpZiAodGhpcy5kcm9wZG93bkFwcGVhcmFuY2UoKSkgcmV0dXJuIHRoaXMuZHJvcGRvd25BcHBlYXJhbmNlKCkhO1xyXG4gICAgaWYgKHRoaXMuYXBwZWFyYW5jZSgpID09PSBGb3JtRWxlbWVudEFwcGVhcmFuY2UuT3V0bGluZWQpIHJldHVybiBEcm9wZG93blBhbmVsQXBwZWFyYW5jZS5PdXRsaW5lZDtcclxuICAgIHJldHVybiBEcm9wZG93blBhbmVsQXBwZWFyYW5jZS5SYWlzZWQ7XHJcbiAgfSk7XHJcbiAgcmVhZG9ubHkgZHJvcGRvd25WYXJpYW50ID0gaW5wdXQ8TnVsbGFibGU8RHJvcGRvd25QYW5lbFZhcmlhbnQ+Pih0aGlzLl9ERUZBVUxUUy5kcm9wZG93blZhcmlhbnQpO1xyXG4gIHJlYWRvbmx5IGRyb3Bkb3duVmFyaWFudE9yRGVmYXVsdCA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIGlmICh0aGlzLmRyb3Bkb3duVmFyaWFudCgpKSByZXR1cm4gdGhpcy5kcm9wZG93blZhcmlhbnQoKSE7XHJcbiAgICBjb25zdCB2YXJpYW50ID0gdGhpcy52YXJpYW50KCk7XHJcbiAgICBpZiAodmFyaWFudCA9PT0gRm9ybUVsZW1lbnRWYXJpYW50LlBpbGwpIHJldHVybiBEcm9wZG93blBhbmVsVmFyaWFudC5Sb3VuZGVkO1xyXG4gICAgcmV0dXJuIHZhcmlhbnQ7XHJcbiAgfSk7XHJcblxyXG4gIC8vISBjYWxlbmRhciBhdHRyaWJ1dGVzXHJcbiAgcmVhZG9ubHkgYWN0aXZlVmlldyA9IG1vZGVsPEFyZENhbGVuZGFyVmlldz4odGhpcy5fREVGQVVMVFMuYWN0aXZlVmlldyk7XHJcbiAgcmVhZG9ubHkgYWN0aXZlWWVhciA9IG1vZGVsPG51bWJlcj4odGhpcy5fREVGQVVMVFMuYWN0aXZlWWVhcik7XHJcbiAgcmVhZG9ubHkgYWN0aXZlTW9udGggPSBtb2RlbDxudW1iZXI+KHRoaXMuX0RFRkFVTFRTLmFjdGl2ZU1vbnRoKTtcclxuXHJcbiAgcmVhZG9ubHkgZmlyc3RXZWVrZGF5ID0gaW5wdXQ8bnVtYmVyLCBhbnk+KHRoaXMuX0RFRkFVTFRTLmZpcnN0V2Vla2RheSwge1xyXG4gICAgdHJhbnNmb3JtOiB2ID0+IHtcclxuICAgICAgY29uc3QgdmFsdWUgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2LCB0aGlzLl9ERUZBVUxUUy5maXJzdFdlZWtkYXkpO1xyXG4gICAgICBpZiAoIU51bWJlci5pc0ludGVnZXIodmFsdWUpKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihcclxuICAgICAgICAgIG5ldyBFcnJvcihgQVJELU5GMDA4MUE6IFtmaXJzdFdlZWtkYXldIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyLCBnb3QgXCIke3ZhbHVlfVwiLiBVc2luZyBkZWZhdWx0IHZhbHVlIGluc3RlYWQuYClcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybiAxO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh2YWx1ZSA8IDAgfHwgdmFsdWUgPiA2KSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihcclxuICAgICAgICAgIG5ldyBFcnJvcihcclxuICAgICAgICAgICAgYEFSRC1XQTAwODFCOiBbZmlyc3RXZWVrZGF5XSBtdXN0IGJlIGJldHdlZW4gMCBhbmQgNiwgZ290IFwiJHt2YWx1ZX1cIi4gVXNpbmcgbW9kdWxvIG9wZXJhdG9yIHRvIGFkanVzdCB0aGUgdmFsdWUuYFxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHZhbHVlICUgNztcclxuICAgIH0sXHJcbiAgfSk7XHJcblxyXG4gIHJlYWRvbmx5IG11bHRpcGxlWWVhclBhZ2VDaGFuZ2VNb2RpZmllciA9IGlucHV0PG51bWJlciwgYW55Pih0aGlzLl9ERUZBVUxUUy5tdWx0aXBsZVllYXJQYWdlQ2hhbmdlTW9kaWZpZXIsIHtcclxuICAgIHRyYW5zZm9ybTogdiA9PiB7XHJcbiAgICAgIGNvbnN0IHZhbHVlID0gY29lcmNlTnVtYmVyUHJvcGVydHkodiwgdGhpcy5fREVGQVVMVFMubXVsdGlwbGVZZWFyUGFnZUNoYW5nZU1vZGlmaWVyKTtcclxuICAgICAgaWYgKCFOdW1iZXIuaXNJbnRlZ2VyKHZhbHVlKSB8fCB2YWx1ZSA8IDEpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKFxyXG4gICAgICAgICAgbmV3IEVycm9yKFxyXG4gICAgICAgICAgICBgQVJELU5GMDA4MjogW211bHRpcGxlWWVhclBhZ2VDaGFuZ2VNb2RpZmllcl0gbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIsIGdvdCBcIiR7dmFsdWV9XCIuIFVzaW5nIGRlZmF1bHQgdmFsdWUgaW5zdGVhZC5gXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxuICAgICAgICByZXR1cm4gNTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9LFxyXG4gIH0pO1xyXG5cclxuICByZWFkb25seSBtaW4gPSBpbnB1dDxEYXRlIHwgbnVsbCwgYW55Pih0aGlzLl9ERUZBVUxUUy5taW4sIHsgdHJhbnNmb3JtOiB2ID0+IGNvZXJjZURhdGVQcm9wZXJ0eSh2LCB0aGlzLl9ERUZBVUxUUy5taW4pIH0pO1xyXG4gIHJlYWRvbmx5IG1heCA9IGlucHV0PERhdGUgfCBudWxsLCBhbnk+KHRoaXMuX0RFRkFVTFRTLm1heCwgeyB0cmFuc2Zvcm06IHYgPT4gY29lcmNlRGF0ZVByb3BlcnR5KHYsIHRoaXMuX0RFRkFVTFRTLm1heCkgfSk7XHJcblxyXG4gIHJlYWRvbmx5IGZpbHRlciA9IGlucHV0PEFyZENhbGVuZGFyRmlsdGVyRm4gfCBudWxsPih0aGlzLl9ERUZBVUxUUy5maWx0ZXIpO1xyXG5cclxuICAvLyEgY2FsZW5kYXIgb3V0cHV0c1xyXG4gIHJlYWRvbmx5IHllYXJTZWxlY3QgPSBvdXRwdXQ8bnVtYmVyPigpO1xyXG4gIHJlYWRvbmx5IG1vbnRoU2VsZWN0ID0gb3V0cHV0PG51bWJlcj4oKTtcclxuXHJcbiAgLy8hIGNhbGVuZGFyIGNvbnRyb2xzXHJcbiAgcmVhZG9ubHkgdXNlQWNjZXB0QnV0dG9uVG9TZWxlY3QgPSBpbnB1dDxib29sZWFuLCBhbnk+KGZhbHNlLCB7IHRyYW5zZm9ybTogdiA9PiBjb2VyY2VCb29sZWFuUHJvcGVydHkodikgfSk7XHJcblxyXG4gIHByaXZhdGUgX3ZhbHVlVG9BY2NlcHQ6IERhdGUgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgb25DYWxlbmRhclNlbGVjdGVkQ2hhbmdlKGV2ZW50OiBEYXRlIHwgbnVsbCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMudXNlQWNjZXB0QnV0dG9uVG9TZWxlY3QoKSkge1xyXG4gICAgICB0aGlzLl92YWx1ZVRvQWNjZXB0ID0gZXZlbnQ7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuX2FjY2VwdFNlbGVjdGVkRGF0ZShldmVudCEpO1xyXG4gIH1cclxuICBwcml2YXRlIF9hY2NlcHRTZWxlY3RlZERhdGUoZGF0ZTogRGF0ZSB8IG51bGwpOiB2b2lkIHtcclxuICAgIHRoaXMudmFsdWUuc2V0KGRhdGUpO1xyXG4gICAgdGhpcy5kYXRlSW5wdXRWYWx1ZS5zZXQodGhpcy5zZXJpYWxpemVGbigpKGRhdGUpKTtcclxuICAgIHRoaXMuY2xvc2UoKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfY2FuY2VsQ2FsZW5kYXJTZWxlY3Rpb24oKTogdm9pZCB7XHJcbiAgICB0aGlzLmNsb3NlKCk7XHJcbiAgfVxyXG5cclxuICBvbkFjY2VwdEJ1dHRvbkNsaWNrKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fYWNjZXB0U2VsZWN0ZWREYXRlKHRoaXMuX3ZhbHVlVG9BY2NlcHQpO1xyXG4gICAgdGhpcy5fdmFsdWVUb0FjY2VwdCA9IG51bGw7XHJcbiAgfVxyXG4gIG9uQ2FuY2VsQnV0dG9uQ2xpY2soKTogdm9pZCB7XHJcbiAgICB0aGlzLl9jYW5jZWxDYWxlbmRhclNlbGVjdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgLy8hIGRyb3Bkb3duIG92ZXJsYXlcclxuICByZWFkb25seSBkcm9wZG93bkhvc3QgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KCdkcm9wZG93bkhvc3QnKTtcclxuICByZWFkb25seSBkcm9wZG93blRlbXBsYXRlID0gdmlld0NoaWxkLnJlcXVpcmVkPFRlbXBsYXRlUmVmPGFueT4+KCdkcm9wZG93blRlbXBsYXRlJyk7XHJcbiAgcmVhZG9ubHkgZHJvcGRvd25QYW5lbCA9IHZpZXdDaGlsZC5yZXF1aXJlZDxBcmRpdW1Ecm9wZG93blBhbmVsQ29tcG9uZW50PihBcmRpdW1Ecm9wZG93blBhbmVsQ29tcG9uZW50KTtcclxuXHJcbiAgcHJpdmF0ZSBkcm9wZG93bk92ZXJsYXk/OiBPdmVybGF5UmVmO1xyXG5cclxuICBwcml2YXRlIF9jcmVhdGVPdmVybGF5KCk6IHZvaWQge1xyXG4gICAgY29uc3Qgc3RyYXRlZ3kgPSB0aGlzLm92ZXJsYXlcclxuICAgICAgLnBvc2l0aW9uKClcclxuICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8odGhpcy5kcm9wZG93bkhvc3QoKSlcclxuICAgICAgLndpdGhQb3NpdGlvbnMoW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIG9yaWdpblg6ICdlbmQnLFxyXG4gICAgICAgICAgb3JpZ2luWTogJ3RvcCcsXHJcbiAgICAgICAgICBvdmVybGF5WDogJ2VuZCcsXHJcbiAgICAgICAgICBvdmVybGF5WTogJ2JvdHRvbScsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBvcmlnaW5YOiAnZW5kJyxcclxuICAgICAgICAgIG9yaWdpblk6ICdib3R0b20nLFxyXG4gICAgICAgICAgb3ZlcmxheVg6ICdlbmQnLFxyXG4gICAgICAgICAgb3ZlcmxheVk6ICd0b3AnLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIF0pO1xyXG5cclxuICAgIGNvbnN0IGNvbmZpZyA9IG5ldyBPdmVybGF5Q29uZmlnKHtcclxuICAgICAgcG9zaXRpb25TdHJhdGVneTogc3RyYXRlZ3ksXHJcbiAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLnNjcm9sbFN0cmF0ZWd5T3B0cy5ibG9jaygpLFxyXG4gICAgICBoYXNCYWNrZHJvcDogZmFsc2UsXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmRyb3Bkb3duT3ZlcmxheSA9IHRoaXMub3ZlcmxheS5jcmVhdGUoY29uZmlnKTtcclxuXHJcbiAgICBjb25zdCBwb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy5kcm9wZG93blRlbXBsYXRlKCksIHRoaXMudmlld0NvbnRhaW5lclJlZik7XHJcbiAgICB0aGlzLmRyb3Bkb3duT3ZlcmxheS5hdHRhY2gocG9ydGFsKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfZGVzdHJveU92ZXJsYXkoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuZHJvcGRvd25PdmVybGF5KSByZXR1cm47XHJcblxyXG4gICAgdGhpcy5kcm9wZG93bk92ZXJsYXkuZGlzcG9zZSgpO1xyXG4gICAgZGVsZXRlIHRoaXMuZHJvcGRvd25PdmVybGF5O1xyXG4gIH1cclxuXHJcbiAgLy8hIGhvb2tzXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fc2V0RGF0ZUlucHV0QXR0cmlidXRlcygpO1xyXG4gIH1cclxuXHJcbiAgLy8hIGRyb3Bkb3duIHN0YXRlIGhhbmRsZXJzXHJcbiAgb25HZW5lcmFsQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICAgIGlmICh0YXJnZXQudGFnTmFtZSAhPT0gJ0lOUFVUJykge1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmlzT3BlbigpKSB7XHJcbiAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgIH1cclxuICAgIHRoaXMuZGF0ZUlucHV0KCkubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gIH1cclxuICBvbk91dHNpZGVDbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmlzT3BlbigpKSByZXR1cm47XHJcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBpZiAodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnModGFyZ2V0KSkgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuY2xvc2UoKTtcclxuICB9XHJcbiAgb25DYWxlbmRhckJ1dHRvbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5jYWxlbmRhckRpc2FibGVkKCkpIHJldHVybjtcclxuICAgIGlmICh0aGlzLmNhbGVuZGFySGlkZGVuKCkpIHJldHVybjtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICB0aGlzLnRvZ2dsZSgpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaXNPcGVuKCkpIHtcclxuICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLm9wZW4oKTtcclxuICB9XHJcbiAgb3BlbigpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmRpc2FibGVkKCkgfHwgdGhpcy5pc09wZW4oKSkgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuaXNPcGVuLnNldCh0cnVlKTtcclxuXHJcbiAgICB0aGlzLl9jcmVhdGVPdmVybGF5KCk7XHJcbiAgICB0aGlzLmZvY3VzKCk7XHJcblxyXG4gICAgdGhpcy5vcGVuRXZlbnQuZW1pdCgpO1xyXG4gIH1cclxuICBjbG9zZSgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5pc09wZW4oKSkgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuaXNPcGVuLnNldChmYWxzZSk7XHJcblxyXG4gICAgdGhpcy5fZGVzdHJveU92ZXJsYXkoKTtcclxuXHJcbiAgICB0aGlzLl9vblRvdWNoZWQoKTtcclxuICAgIHRoaXMuY2xvc2VFdmVudC5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICAvLyEgdGVtcGxhdGVzXHJcbiAgcmVhZG9ubHkgdmFsdWVUZW1wbGF0ZSA9IGNvbnRlbnRDaGlsZChBcmREYXRlSW5wdXRWYWx1ZVRlbXBsYXRlRGlyZWN0aXZlKTtcclxuICByZWFkb25seSBjYWxlbmRhckljb25UZW1wbGF0ZSA9IGNvbnRlbnRDaGlsZChBcmREYXRlSW5wdXRDYWxlbmRhckljb25UZW1wbGF0ZURpcmVjdGl2ZSk7XHJcbiAgcmVhZG9ubHkgYWNjZXB0QnV0dG9uc1RlbXBsYXRlID0gY29udGVudENoaWxkKEFyZERhdGVJbnB1dEFjY2VwdEJ1dHRvbnNUZW1wbGF0ZURpcmVjdGl2ZSk7XHJcblxyXG4gIHJlYWRvbmx5IHByZWZpeFRlbXBsYXRlID0gY29udGVudENoaWxkKEFyZERhdGVJbnB1dFByZWZpeFRlbXBsYXRlRGlyZWN0aXZlKTtcclxuICByZWFkb25seSBzdWZmaXhUZW1wbGF0ZSA9IGNvbnRlbnRDaGlsZChBcmREYXRlSW5wdXRTdWZmaXhUZW1wbGF0ZURpcmVjdGl2ZSk7XHJcblxyXG4gIHJlYWRvbmx5IGNhbGVuZGFyRGF5c1ZpZXdIZWFkZXJUZW1wbGF0ZSA9IGNvbnRlbnRDaGlsZChBcmREYXRlSW5wdXREYXlzVmlld0hlYWRlclRlbXBsYXRlRGlyZWN0aXZlKTtcclxuICByZWFkb25seSBjYWxlbmRhclllYXJzVmlld0hlYWRlclRlbXBsYXRlID0gY29udGVudENoaWxkKEFyZERhdGVJbnB1dFllYXJzVmlld0hlYWRlclRlbXBsYXRlRGlyZWN0aXZlKTtcclxuICByZWFkb25seSBjYWxlbmRhck1vbnRoc1ZpZXdIZWFkZXJUZW1wbGF0ZSA9IGNvbnRlbnRDaGlsZChBcmREYXRlSW5wdXRNb250aHNWaWV3SGVhZGVyVGVtcGxhdGVEaXJlY3RpdmUpO1xyXG4gIHJlYWRvbmx5IGNhbGVuZGFyV2Vla2RheVRlbXBsYXRlID0gY29udGVudENoaWxkKEFyZERhdGVJbnB1dFdlZWtkYXlUZW1wbGF0ZURpcmVjdGl2ZSk7XHJcbiAgcmVhZG9ubHkgY2FsZW5kYXJGbG9hdGluZ01vbnRoVGVtcGxhdGUgPSBjb250ZW50Q2hpbGQoQXJkRGF0ZUlucHV0RmxvYXRpbmdNb250aFRlbXBsYXRlRGlyZWN0aXZlKTtcclxuICByZWFkb25seSBjYWxlbmRhclllYXJUZW1wbGF0ZSA9IGNvbnRlbnRDaGlsZChBcmREYXRlSW5wdXRZZWFyVGVtcGxhdGVEaXJlY3RpdmUpO1xyXG4gIHJlYWRvbmx5IGNhbGVuZGFyTW9udGhUZW1wbGF0ZSA9IGNvbnRlbnRDaGlsZChBcmREYXRlSW5wdXRNb250aFRlbXBsYXRlRGlyZWN0aXZlKTtcclxuICByZWFkb25seSBjYWxlbmRhckRheVRlbXBsYXRlID0gY29udGVudENoaWxkKEFyZERhdGVJbnB1dERheVRlbXBsYXRlRGlyZWN0aXZlKTtcclxuXHJcbiAgLy8hIGNvbnRleHQgcHJvdmlkZXJzXHJcbiAgcmVhZG9ubHkgdmFsdWVDb250ZXh0ID0gY29tcHV0ZWQ8QXJkRGF0ZUlucHV0VmFsdWVDb250ZXh0PigoKSA9PiAoe1xyXG4gICAgJGltcGxpY2l0OiB0aGlzLnZhbHVlKCksXHJcbiAgfSkpO1xyXG5cclxuICByZWFkb25seSBhY2NlcHRCdXR0b25zQ29udGV4dCA9IGNvbXB1dGVkPEFyZERhdGVJbnB1dEFjY2VwdEJ1dHRvbnNDb250ZXh0PigoKSA9PiAoe1xyXG4gICAgJGltcGxpY2l0OiAoKSA9PiB0aGlzLm9uQWNjZXB0QnV0dG9uQ2xpY2soKSxcclxuICAgIGFjY2VwdDogKCkgPT4gdGhpcy5vbkFjY2VwdEJ1dHRvbkNsaWNrKCksXHJcbiAgICBjYW5jZWw6ICgpID0+IHRoaXMub25DYW5jZWxCdXR0b25DbGljaygpLFxyXG4gICAgZGlzYWJsZWQ6IHRoaXMuZGlzYWJsZWQoKSB8fCB0aGlzLmNhbGVuZGFyRGlzYWJsZWQoKSxcclxuICB9KSk7XHJcbn1cclxuIiwiPGFyZC1mb3JtLWZpZWxkLWZyYW1lXHJcbiAgW2FwcGVhcmFuY2VdPVwiYXBwZWFyYW5jZSgpXCJcclxuICBbdmFyaWFudF09XCJ2YXJpYW50KClcIlxyXG4gIFtjb21wYWN0XT1cImNvbXBhY3QoKVwiXHJcbiAgW2lzRm9jdXNlZF09XCJpc0ZvY3VzZWQoKVwiXHJcbiAgW2hhc0Vycm9yXT1cImhhc0Vycm9yKClcIlxyXG4gIFtpc1N1Y2Nlc3NdPVwiaXNTdWNjZXNzKClcIlxyXG4gIFtwcmVmaXhUZW1wbGF0ZV09XCJwcmVmaXhUZW1wbGF0ZSgpPy50ZW1wbGF0ZVwiXHJcbiAgW3N1ZmZpeFRlbXBsYXRlXT1cInN1ZmZpeFRlbXBsYXRlKCk/LnRlbXBsYXRlXCJcclxuPlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwiYXJkLWRhdGUtaW5wdXRcIlxyXG4gICAgI2Ryb3Bkb3duSG9zdFxyXG4gICAgKGNsaWNrKT1cIm9uR2VuZXJhbENsaWNrKCRldmVudClcIlxyXG4gICAgW2NsYXNzLmFyZC1oYXMtdmFsdWVdPVwiISF2YWx1ZSgpXCJcclxuICAgIFtuZ0NsYXNzXT1cIm5nQ2xhc3NlcygpXCJcclxuICA+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYXJkLWRhdGUtaW5wdXRfX3ZhbHVlLWNvbnRhaW5lciBhcmQtaW5wdXQtY29udGFpbmVyXCI+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImFyZC1kYXRlLWlucHV0X19wbGFjZWhvbGRlciBhcmQtcGxhY2Vob2xkZXJcIlxyXG4gICAgICAgIFtjbGFzcy5hcmQtZGF0ZS1pbnB1dF9fcGxhY2Vob2xkZXItaGlkZGVuXT1cIiFzaG91bGREaXNwbGF5UGxhY2Vob2xkZXIoKVwiXHJcbiAgICAgID5cclxuICAgICAgICB7eyBwbGFjZWhvbGRlcigpIH19XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJhcmQtZGF0ZS1pbnB1dF9fdmFsdWVcIlxyXG4gICAgICAgIFtjbGFzcy5hcmQtZGF0ZS1pbnB1dF9fdmFsdWUtaGlkZGVuXT1cIiFzaG91bGREaXNwbGF5VmFsdWUoKVwiXHJcbiAgICAgID5cclxuICAgICAgICA8bmctdGVtcGxhdGVcclxuICAgICAgICAgICNkZWZhdWx0VmFsdWVUZW1wbGF0ZVxyXG4gICAgICAgICAgbGV0LWRhdGVcclxuICAgICAgICA+XHJcbiAgICAgICAgICB7eyBzZXJpYWxpemVGbigpKGRhdGUpIH19XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgPG5nLXRlbXBsYXRlXHJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ2YWx1ZVRlbXBsYXRlKCk/LnRlbXBsYXRlIHx8IGRlZmF1bHRWYWx1ZVRlbXBsYXRlXCJcclxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ2YWx1ZUNvbnRleHQoKVwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImFyZC1kYXRlLWlucHV0X19pbnB1dC1jb250YWluZXJcIlxyXG4gICAgICAgIHJvbGU9XCJjb21ib2JveFwiXHJcbiAgICAgICAgYXJpYS1oYXNwb3B1cD1cImxpc3Rib3hcIlxyXG4gICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiaXNPcGVuKClcIlxyXG4gICAgICAgIFthdHRyLmFyaWEtb3duc109XCJpc09wZW4oKSA/IGh0bWxJZCgpIDogbnVsbFwiXHJcbiAgICAgICAgW2NsYXNzLmFyZC1kYXRlLWlucHV0X19pbnB1dC1jb250YWluZXItaGlkZGVuXT1cIiFzaG91bGREaXNwbGF5RGF0ZUlucHV0KClcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAjZGF0ZUlucHV0XHJcbiAgICAgICAgICAjZm9jdXNhYmxlRWxlbWVudFxyXG4gICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgY2xhc3M9XCJhcmQtZGF0ZS1pbnB1dF9faW5wdXRcIlxyXG4gICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwidGFiSW5kZXgoKVwiXHJcbiAgICAgICAgICBbdmFsdWVdPVwiZGF0ZUlucHV0VmFsdWUoKVwiXHJcbiAgICAgICAgICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cImlzT3BlbigpID8gaHRtbElkKCkgOiBudWxsXCJcclxuICAgICAgICAgIChpbnB1dCk9XCJvbkRhdGVJbnB1dElucHV0KCRldmVudClcIlxyXG4gICAgICAgICAgKGNoYW5nZSk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgICAgICAgKGZvY3VzKT1cIm9uRGF0ZUlucHV0Rm9jdXMoJGV2ZW50KVwiXHJcbiAgICAgICAgICAoYmx1cik9XCJvbkRhdGVJbnB1dEJsdXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAoa2V5ZG93bik9XCJvbkRhdGVJbnB1dEVudGVyKCRldmVudClcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgQGlmICghY2FsZW5kYXJIaWRkZW4oKSkge1xyXG4gICAgPGFyZC1pY29uLWJ1dHRvblxyXG4gICAgICBjb2xvcj1cIm5vbmVcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiY2FsZW5kYXJEaXNhYmxlZCgpXCJcclxuICAgICAgKGNsaWNrKT1cIm9uQ2FsZW5kYXJCdXR0b25DbGljaygkZXZlbnQpXCJcclxuICAgID5cclxuICAgICAgPG5nLXRlbXBsYXRlXHJcbiAgICAgICAgI2RlZmF1bHRDYWxlbmRhckljb25UZW1wbGF0ZVxyXG4gICAgICAgIGxldC1kYXRlXHJcbiAgICAgID5cclxuICAgICAgICA8YXJkLWljb24gZmlsbGVkPnRvZGF5PC9hcmQtaWNvbj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJjYWxlbmRhckljb25UZW1wbGF0ZSgpPy50ZW1wbGF0ZSB8fCBkZWZhdWx0Q2FsZW5kYXJJY29uVGVtcGxhdGVcIiAvPlxyXG4gICAgPC9hcmQtaWNvbi1idXR0b24+XHJcbiAgICB9XHJcbiAgPC9kaXY+XHJcbjwvYXJkLWZvcm0tZmllbGQtZnJhbWU+XHJcblxyXG48bmctdGVtcGxhdGUgI2Ryb3Bkb3duVGVtcGxhdGU+XHJcbiAgPGFyZC1kcm9wZG93bi1wYW5lbFxyXG4gICAgY2xhc3M9XCJhcmQtZHJvcGRvd24tcGFuZWwgYXJkLWRhdGUtaW5wdXRfX2Ryb3Bkb3duLXBhbmVsXCJcclxuICAgIFthcHBlYXJhbmNlXT1cImRyb3Bkb3duQXBwZWFyYW5jZU9yRGVmYXVsdCgpXCJcclxuICAgIFt2YXJpYW50XT1cImRyb3Bkb3duVmFyaWFudE9yRGVmYXVsdCgpXCJcclxuICAgIFtpc09wZW5dPVwidHJ1ZVwiXHJcbiAgICBbcGFuZWxJZF09XCJodG1sSWQoKVwiXHJcbiAgICBbY29tcGFjdF09XCJjb21wYWN0KClcIlxyXG4gICAgKGFyZENsaWNrT3V0c2lkZSk9XCJvbk91dHNpZGVDbGljaygkZXZlbnQpXCJcclxuICA+XHJcbiAgICA8YXJkLWNhbGVuZGFyXHJcbiAgICAgIGNsYXNzPVwiYXJkLWRhdGUtaW5wdXRfX2NhbGVuZGFyXCJcclxuICAgICAgWyhhY3RpdmVNb250aCldPVwiYWN0aXZlTW9udGhcIlxyXG4gICAgICBbKGFjdGl2ZVllYXIpXT1cImFjdGl2ZVllYXJcIlxyXG4gICAgICBbKGFjdGl2ZVZpZXcpXT1cImFjdGl2ZVZpZXdcIlxyXG4gICAgICBbZmlyc3RXZWVrZGF5XT1cImZpcnN0V2Vla2RheSgpXCJcclxuICAgICAgW21pbl09XCJtaW4oKVwiXHJcbiAgICAgIFttYXhdPVwibWF4KClcIlxyXG4gICAgICBhdXRvRm9jdXNcclxuICAgICAgW211bHRpcGxlWWVhclBhZ2VDaGFuZ2VNb2RpZmllcl09XCJtdWx0aXBsZVllYXJQYWdlQ2hhbmdlTW9kaWZpZXIoKVwiXHJcbiAgICAgIFtjb2xvcl09XCJjb2xvcigpXCJcclxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkKCkgfHwgY2FsZW5kYXJEaXNhYmxlZCgpXCJcclxuICAgICAgW3RhYkluZGV4XT1cInRhYkluZGV4KClcIlxyXG4gICAgICAoc2VsZWN0ZWRDaGFuZ2UpPVwib25DYWxlbmRhclNlbGVjdGVkQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAoeWVhclNlbGVjdCk9XCJ5ZWFyU2VsZWN0LmVtaXQoJGV2ZW50KVwiXHJcbiAgICAgIChtb250aFNlbGVjdCk9XCJtb250aFNlbGVjdC5lbWl0KCRldmVudClcIlxyXG4gICAgPlxyXG4gICAgICA8bmctdGVtcGxhdGVcclxuICAgICAgICBfYXJkLXRtcC1yZXBvc2l0b3J5XHJcbiAgICAgICAgW2RheXNWaWV3SGVhZGVyVG1wXT1cImNhbGVuZGFyRGF5c1ZpZXdIZWFkZXJUZW1wbGF0ZSgpXCJcclxuICAgICAgICBbeWVhcnNWaWV3SGVhZGVyVG1wXT1cImNhbGVuZGFyWWVhcnNWaWV3SGVhZGVyVGVtcGxhdGUoKVwiXHJcbiAgICAgICAgW21vbnRoc1ZpZXdIZWFkZXJUbXBdPVwiY2FsZW5kYXJNb250aHNWaWV3SGVhZGVyVGVtcGxhdGUoKVwiXHJcbiAgICAgICAgW3dlZWtkYXlUbXBdPVwiY2FsZW5kYXJXZWVrZGF5VGVtcGxhdGUoKVwiXHJcbiAgICAgICAgW2Zsb2F0aW5nTW9udGhUbXBdPVwiY2FsZW5kYXJGbG9hdGluZ01vbnRoVGVtcGxhdGUoKVwiXHJcbiAgICAgICAgW3llYXJUbXBdPVwiY2FsZW5kYXJZZWFyVGVtcGxhdGUoKVwiXHJcbiAgICAgICAgW21vbnRoVG1wXT1cImNhbGVuZGFyTW9udGhUZW1wbGF0ZSgpXCJcclxuICAgICAgICBbZGF5VG1wXT1cImNhbGVuZGFyRGF5VGVtcGxhdGUoKVwiXHJcbiAgICAgIC8+XHJcbiAgICA8L2FyZC1jYWxlbmRhcj5cclxuICAgIEBpZiAodXNlQWNjZXB0QnV0dG9uVG9TZWxlY3QoKSkge1xyXG4gICAgPGRpdiBjbGFzcz1cImFyZC1kYXRlLWlucHV0X19hY2NlcHQtYnV0dG9ucy1jb250YWluZXJcIj5cclxuICAgICAgPG5nLXRlbXBsYXRlXHJcbiAgICAgICAgI2RlZmF1bHRBY2NlcHRCdXR0b25zVGVtcGxhdGVcclxuICAgICAgICBsZXQtZGF0ZVxyXG4gICAgICA+XHJcbiAgICAgICAge3sgc2VyaWFsaXplRm4oKShkYXRlKSB9fVxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgPG5nLXRlbXBsYXRlXHJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiYWNjZXB0QnV0dG9uc1RlbXBsYXRlKCk/LnRlbXBsYXRlIHx8IGRlZmF1bHRBY2NlcHRCdXR0b25zVGVtcGxhdGVcIlxyXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJhY2NlcHRCdXR0b25zQ29udGV4dCgpXCJcclxuICAgICAgLz5cclxuICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gIDwvYXJkLWRyb3Bkb3duLXBhbmVsPlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
|