bways-report 0.1.7 → 0.1.9
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/core/config/bways-report-config.mjs +3 -1
- package/esm2022/lib/core/models/index.mjs +1 -1
- package/esm2022/lib/core/models/report-api-endpoint.model.mjs +8 -0
- package/esm2022/lib/core/models/report-component.model.mjs +1 -1
- package/esm2022/lib/core/models/report-datasource.model.mjs +1 -1
- package/esm2022/lib/core/services/index.mjs +2 -1
- package/esm2022/lib/core/services/report-api-execution.service.mjs +188 -0
- package/esm2022/lib/core/services/report-data-discovery.service.mjs +76 -4
- package/esm2022/lib/data-access/adapters/endpoint-datasource.adapter.mjs +24 -1
- package/esm2022/lib/data-access/adapters/endpoint-lookup.adapter.mjs +24 -2
- package/esm2022/lib/data-access/adapters/endpoint-tokens.mjs +1 -1
- package/esm2022/lib/data-access/adapters/http-lookup.adapter.mjs +26 -3
- package/esm2022/lib/data-access/contracts/lookup.contract.mjs +1 -1
- package/esm2022/lib/features/designer/components/component-palette/component-palette.component.mjs +536 -6
- package/esm2022/lib/features/designer/components/design-canvas/design-canvas.component.mjs +31 -3
- package/esm2022/lib/features/designer/components/dialogs/report-saved-dialog.component.mjs +2 -2
- package/esm2022/lib/features/designer/components/property-editor/parameter-binding-editor.component.mjs +3 -3
- package/esm2022/lib/features/designer/components/property-editor/property-editor-action.component.mjs +3 -3
- package/esm2022/lib/features/designer/components/property-editor/property-editor-datasource.component.mjs +131 -3
- package/esm2022/lib/features/designer/components/property-editor/property-editor-general.component.mjs +3 -3
- package/esm2022/lib/features/designer/components/property-editor/property-editor-grid.component.mjs +128 -28
- package/esm2022/lib/features/designer/components/property-editor/property-editor-layout.component.mjs +3 -3
- package/esm2022/lib/features/designer/components/property-editor/property-editor-report.component.mjs +3 -3
- package/esm2022/lib/features/designer/components/property-editor/property-editor-validation.component.mjs +3 -3
- package/esm2022/lib/features/designer/components/property-editor/property-editor.component.mjs +19 -10
- package/esm2022/lib/features/designer/designer.component.mjs +248 -33
- package/esm2022/lib/features/designer/utilities/canvas-layout.util.mjs +2 -1
- package/esm2022/lib/features/routing/components/routed-report-runtime.component.mjs +2 -2
- package/esm2022/lib/features/runtime/dynamic-renderer.component.mjs +23 -4
- package/esm2022/lib/features/runtime/report-execution.service.mjs +21 -4
- package/esm2022/lib/features/runtime/report-grid-bridge.component.mjs +51 -10
- package/esm2022/lib/features/runtime/report-runtime.component.mjs +16 -2
- package/esm2022/lib/features/runtime/rpt-report.component.mjs +2 -2
- package/esm2022/lib/primitives/components/dropdown/rpt-dropdown.component.mjs +16 -7
- package/esm2022/lib/primitives/components/icon/rpt-icon.component.mjs +41 -1
- package/esm2022/lib/primitives/components/index.mjs +2 -1
- package/esm2022/lib/primitives/components/radio/rpt-radio.component.mjs +428 -0
- package/esm2022/lib/primitives/register-builtins.mjs +51 -2
- package/esm2022/lib/provide-reporting.mjs +3 -1
- package/fesm2022/bways-report.mjs +2171 -241
- package/fesm2022/bways-report.mjs.map +1 -1
- package/lib/core/config/bways-report-config.d.ts +13 -0
- package/lib/core/models/index.d.ts +2 -1
- package/lib/core/models/report-api-endpoint.model.d.ts +30 -0
- package/lib/core/models/report-component.model.d.ts +16 -4
- package/lib/core/models/report-datasource.model.d.ts +16 -2
- package/lib/core/services/index.d.ts +1 -0
- package/lib/core/services/report-api-execution.service.d.ts +41 -0
- package/lib/core/services/report-data-discovery.service.d.ts +23 -1
- package/lib/data-access/adapters/endpoint-datasource.adapter.d.ts +2 -0
- package/lib/data-access/adapters/endpoint-lookup.adapter.d.ts +1 -0
- package/lib/data-access/adapters/endpoint-tokens.d.ts +3 -0
- package/lib/data-access/adapters/http-lookup.adapter.d.ts +2 -1
- package/lib/data-access/contracts/lookup.contract.d.ts +3 -0
- package/lib/features/designer/components/component-palette/component-palette.component.d.ts +16 -0
- package/lib/features/designer/components/property-editor/property-editor-datasource.component.d.ts +17 -0
- package/lib/features/designer/components/property-editor/property-editor-grid.component.d.ts +19 -7
- package/lib/features/designer/components/property-editor/property-editor.component.d.ts +1 -1
- package/lib/features/designer/designer.component.d.ts +12 -0
- package/lib/features/runtime/report-execution.service.d.ts +1 -0
- package/lib/features/runtime/report-grid-bridge.component.d.ts +3 -1
- package/lib/features/runtime/report-runtime.component.d.ts +13 -1
- package/lib/primitives/components/index.d.ts +2 -0
- package/lib/primitives/components/radio/rpt-radio.component.d.ts +77 -0
- package/package.json +1 -1
|
@@ -16,7 +16,11 @@ export class ReportRuntimeComponent {
|
|
|
16
16
|
reportId = input();
|
|
17
17
|
/** Directly passed report definition (skips persistence adapter) */
|
|
18
18
|
definition = input(null, { alias: 'report' });
|
|
19
|
+
/** Optional pre-loaded or canvas-shared result data */
|
|
20
|
+
initialData = input(null, { alias: 'resultData' });
|
|
19
21
|
resetRequested = output();
|
|
22
|
+
execute = output();
|
|
23
|
+
executed = output();
|
|
20
24
|
exportRequested = output();
|
|
21
25
|
printRequested = output();
|
|
22
26
|
customActionTriggered = output();
|
|
@@ -56,6 +60,12 @@ export class ReportRuntimeComponent {
|
|
|
56
60
|
this.loadReport(id);
|
|
57
61
|
}
|
|
58
62
|
}, { allowSignalWrites: true });
|
|
63
|
+
effect(() => {
|
|
64
|
+
const data = this.initialData();
|
|
65
|
+
if (data !== undefined && data !== null) {
|
|
66
|
+
this.resultData.set(data);
|
|
67
|
+
}
|
|
68
|
+
}, { allowSignalWrites: true });
|
|
59
69
|
}
|
|
60
70
|
onEscape() {
|
|
61
71
|
if (this.isDrawerOpen()) {
|
|
@@ -99,6 +109,8 @@ export class ReportRuntimeComponent {
|
|
|
99
109
|
next: (data) => {
|
|
100
110
|
this.resultData.set(data);
|
|
101
111
|
this.isLoading.set(false);
|
|
112
|
+
this.execute.emit({ definition: event.definition, parameters: event.parameters, data });
|
|
113
|
+
this.executed.emit({ definition: event.definition, parameters: event.parameters, data });
|
|
102
114
|
},
|
|
103
115
|
error: (err) => {
|
|
104
116
|
this.errorMessage.set(err instanceof Error ? err.message : String(err));
|
|
@@ -125,6 +137,8 @@ export class ReportRuntimeComponent {
|
|
|
125
137
|
next: (data) => {
|
|
126
138
|
this.resultData.set(data);
|
|
127
139
|
this.isLoading.set(false);
|
|
140
|
+
this.execute.emit({ definition: event.definition, parameters: event.parameters, data });
|
|
141
|
+
this.executed.emit({ definition: event.definition, parameters: event.parameters, data });
|
|
128
142
|
},
|
|
129
143
|
error: (err) => {
|
|
130
144
|
this.errorMessage.set(err?.message ?? 'An error occurred while executing report data source.');
|
|
@@ -270,7 +284,7 @@ export class ReportRuntimeComponent {
|
|
|
270
284
|
}
|
|
271
285
|
}
|
|
272
286
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ReportRuntimeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
273
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ReportRuntimeComponent, isStandalone: true, selector: "rpt-report-runtime, rpt-runtime", inputs: { reportId: { classPropertyName: "reportId", publicName: "reportId", isSignal: true, isRequired: false, transformFunction: null }, definition: { classPropertyName: "definition", publicName: "report", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { resetRequested: "resetRequested", exportRequested: "exportRequested", printRequested: "printRequested", customActionTriggered: "customActionTriggered", gridStateChange: "gridStateChange", columnDefsChange: "columnDefsChange", selectionChange: "selectionChange", selectionChanged: "selectionChanged", rowActionTriggered: "rowActionTriggered", drilldownRequested: "drilldownRequested" }, host: { listeners: { "window:keydown.escape": "onEscapePressed()" } }, ngImport: i0, template: `
|
|
287
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ReportRuntimeComponent, isStandalone: true, selector: "rpt-report-runtime, rpt-runtime", inputs: { reportId: { classPropertyName: "reportId", publicName: "reportId", isSignal: true, isRequired: false, transformFunction: null }, definition: { classPropertyName: "definition", publicName: "report", isSignal: true, isRequired: false, transformFunction: null }, initialData: { classPropertyName: "initialData", publicName: "resultData", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { resetRequested: "resetRequested", execute: "execute", executed: "executed", exportRequested: "exportRequested", printRequested: "printRequested", customActionTriggered: "customActionTriggered", gridStateChange: "gridStateChange", columnDefsChange: "columnDefsChange", selectionChange: "selectionChange", selectionChanged: "selectionChanged", rowActionTriggered: "rowActionTriggered", drilldownRequested: "drilldownRequested" }, host: { listeners: { "window:keydown.escape": "onEscapePressed()" } }, ngImport: i0, template: `
|
|
274
288
|
<div class="rpt-runtime-container">
|
|
275
289
|
@if (isLoading()) {
|
|
276
290
|
<div class="rpt-state-card rpt-loading-state">
|
|
@@ -486,4 +500,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
486
500
|
type: HostListener,
|
|
487
501
|
args: ['window:keydown.escape']
|
|
488
502
|
}] } });
|
|
489
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LXJ1bnRpbWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYndheXMtcmVwb3J0L3NyYy9saWIvZmVhdHVyZXMvcnVudGltZS9yZXBvcnQtcnVudGltZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLE1BQU0sRUFDTixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUsvQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUNuRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUMzRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUNqRyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUN2RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFxVHBFLE1BQU0sT0FBTyxzQkFBc0I7SUFDaEIsa0JBQWtCLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDMUUsaUJBQWlCLEdBQUcsTUFBTSxDQUFDLHVCQUF1QixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDeEUsY0FBYyxHQUFHLE1BQU0sQ0FBQywyQkFBMkIsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3pFLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBRXZGLGdEQUFnRDtJQUN2QyxRQUFRLEdBQUcsS0FBSyxFQUFVLENBQUM7SUFFcEMsb0VBQW9FO0lBQzNELFVBQVUsR0FBRyxLQUFLLENBQTBCLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBRXZFLGNBQWMsR0FBRyxNQUFNLEVBQW9DLENBQUM7SUFDNUQsZUFBZSxHQUFHLE1BQU0sRUFLN0IsQ0FBQztJQUNJLGNBQWMsR0FBRyxNQUFNLEVBSTVCLENBQUM7SUFDSSxxQkFBcUIsR0FBRyxNQUFNLEVBSW5DLENBQUM7SUFDSSxlQUFlLEdBQUcsTUFBTSxFQUFPLENBQUM7SUFDaEMsZ0JBQWdCLEdBQUcsTUFBTSxFQUFPLENBQUM7SUFDakMsZUFBZSxHQUFHLE1BQU0sRUFBUyxDQUFDO0lBQ2xDLGdCQUFnQixHQUFHLE1BQU0sRUFBUyxDQUFDO0lBQ25DLGtCQUFrQixHQUFHLE1BQU0sRUFJaEMsQ0FBQztJQUNJLGtCQUFrQixHQUFHLE1BQU0sRUFJaEMsQ0FBQztJQUVJLGtCQUFrQixHQUFHLE1BQU0sQ0FBMEIsSUFBSSxDQUFDLENBQUM7SUFDM0QsVUFBVSxHQUFHLE1BQU0sQ0FBbUIsSUFBSSxDQUFDLENBQUM7SUFDNUMsU0FBUyxHQUFHLE1BQU0sQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUNuQyxjQUFjLEdBQUcsTUFBTSxDQUFTLG1CQUFtQixDQUFDLENBQUM7SUFDckQsWUFBWSxHQUFHLE1BQU0sQ0FBZ0IsSUFBSSxDQUFDLENBQUM7SUFFcEQsNEJBQTRCO0lBQ25CLFlBQVksR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7SUFDdEMsV0FBVyxHQUFHLE1BQU0sQ0FBUyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQy9DLFdBQVcsR0FBRyxNQUFNLENBQVMsT0FBTyxDQUFDLENBQUM7SUFDdEMsZ0JBQWdCLEdBQUcsTUFBTSxDQUEwQixJQUFJLENBQUMsQ0FBQztJQUN6RCxnQkFBZ0IsR0FBRyxNQUFNLENBQTBCLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZELGdCQUFnQixHQUFHLE1BQU0sQ0FBbUIsSUFBSSxDQUFDLENBQUM7SUFDbEQsa0JBQWtCLEdBQUcsTUFBTSxDQUFnQixJQUFJLENBQUMsQ0FBQztJQUNqRCxlQUFlLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQ3pDLG9CQUFvQixHQUFHLE1BQU0sQ0FBUywrQkFBK0IsQ0FBQyxDQUFDO0lBQ3ZFLFdBQVcsR0FBRyxNQUFNLENBQWdCLElBQUksQ0FBQyxDQUFDO0lBRW5ELG9DQUFvQztJQUM1QixvQkFBb0IsR0FBa0IsSUFBSSxDQUFDO0lBQzNDLGVBQWUsR0FBNEIsRUFBRSxDQUFDO0lBQzlDLGtCQUFrQixDQUFzQjtJQUV2QyxpQkFBaUIsR0FBRyxRQUFRLENBQTBCLEdBQUcsRUFBRTtRQUNsRSxPQUFPLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUN4RCxDQUFDLENBQUMsQ0FBQztJQUVIO1FBQ0UsTUFBTSxDQUNKLEdBQUcsRUFBRTtZQUNILE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUMzQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO2dCQUM3QixJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3RCLENBQUM7UUFDSCxDQUFDLEVBQ0QsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FDNUIsQ0FBQztJQUNKLENBQUM7SUFHRCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDckIsQ0FBQztJQUNILENBQUM7SUFFRCxVQUFVLENBQUMsRUFBVTtRQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQ25CLDJEQUEyRCxFQUFFLElBQUksQ0FDbEUsQ0FBQztZQUNGLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsOEJBQThCLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUU1QixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUN6QyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDWixJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNqQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM1QixDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ2IsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQ25CLEdBQUcsRUFBRSxPQUFPLElBQUksNkNBQTZDLEVBQUUsRUFBRSxDQUNsRSxDQUFDO2dCQUNGLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzVCLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsZUFBZSxDQUFDLEtBR2Y7UUFDQyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztRQUNuQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDVixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDMUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzNGLElBQUksT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsbUNBQW1DLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLCtCQUErQixDQUFDLENBQUM7Z0JBQzVHLE9BQU87WUFDVCxDQUFDO1lBRUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDekIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsMkJBQTJCLENBQUMsQ0FBQztZQUNyRCxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUU1QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQztnQkFDMUUsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7b0JBQ2IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQzFCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM1QixDQUFDO2dCQUNELEtBQUssRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO29CQUNiLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUNuQixHQUFHLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQ2pELENBQUM7b0JBQ0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzVCLENBQUM7YUFDRixDQUFDLENBQUM7WUFDSCxPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FDMUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxZQUFZLENBQ2xFLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFckMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ1IsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQ25CLGdCQUFnQixJQUFJLENBQUMsWUFBWSxzREFBc0QsQ0FDeEYsQ0FBQztZQUNGLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUNuQixpRUFBaUUsQ0FDbEUsQ0FBQztZQUNGLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUU1QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLHdCQUF3QixFQUFFLElBQUksRUFBRSxDQUFDO1FBQ3RFLE1BQU0sZUFBZSxHQUFHLEVBQUUsR0FBRyxPQUFPLEVBQUUsR0FBRyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFNUQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsZUFBZSxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQzVELElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUNiLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMxQixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM1QixDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ2IsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQ25CLEdBQUcsRUFBRSxPQUFPLElBQUksdURBQXVELENBQ3hFLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDNUIsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBdUM7UUFDbkQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELGlCQUFpQixDQUFDLEtBS2pCO1FBQ0MsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELGdCQUFnQixDQUFDLEtBSWhCO1FBQ0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUlkO1FBQ0MsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsaUJBQWlCLENBQUMsSUFBVztRQUMzQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxLQUlwQjtRQUNDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFcEMsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUM7Z0JBQzNCLGNBQWMsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLGNBQWM7Z0JBQzNDLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVTtnQkFDNUIsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHO2FBQ2YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssYUFBYSxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLGtCQUFrQixFQUFFLENBQUM7WUFDcEYsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUNoQyxJQUFJLENBQUMsbUJBQW1CLENBQ3RCLEtBQUssQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUMzQixLQUFLLENBQUMsVUFBVSxFQUNoQixLQUFLLENBQUMsR0FBRyxFQUNULEtBQUssQ0FBQyxNQUFNLENBQ2IsQ0FBQztZQUNKLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELG1CQUFtQixDQUNqQixjQUFzQixFQUN0QixVQUFtQyxFQUNuQyxHQUE0QixFQUM1QixNQUEyQjtRQUUzQixJQUFJLENBQUMsb0JBQW9CLEdBQUcsY0FBYyxDQUFDO1FBQzNDLElBQUksQ0FBQyxlQUFlLEdBQUcsR0FBRyxDQUFDO1FBQzNCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxNQUFNLENBQUM7UUFFakMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsV0FBVyxJQUFJLE9BQU8sQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxXQUFXLElBQUksZ0JBQWdCLENBQUMsQ0FBQztRQUM5RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1FBQy9ELElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTVCLGlDQUFpQztRQUNqQyxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssU0FBUyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3pHLElBQUksT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN2QixNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDaEYsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN6QyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEMsQ0FBQztRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FDbEIsc0VBQXNFLGNBQWMsSUFBSSxDQUN6RixDQUFDO1lBQ0YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDaEMsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUNyRCxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDWixJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUMvQixJQUFJLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxDQUFDO29CQUN6QixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2pDLENBQUM7Z0JBQ0QsbUNBQW1DO2dCQUNuQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQzVDLENBQUM7WUFDRCxLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDYixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FDbEIsR0FBRyxFQUFFLE9BQU8sSUFBSSxvQ0FBb0MsY0FBYyxHQUFHLENBQ3RFLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbEMsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxtQkFBbUIsQ0FDekIsR0FBcUIsRUFDckIsVUFBbUM7UUFFbkMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hDLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLDZCQUE2QixDQUFDLENBQUM7WUFDN0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDO2dCQUN2RCxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRTtvQkFDYixJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNoQyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDbEMsQ0FBQztnQkFDRCxLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtvQkFDYixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztvQkFDdkUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2xDLENBQUM7YUFDRixDQUFDLENBQUM7WUFDSCxPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUM3QixDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxHQUFHLENBQUMsSUFBSSxFQUFFLFlBQVksSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUM1RSxJQUFJLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFeEIsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hDLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSx3QkFBd0IsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUN0RSxNQUFNLGVBQWUsR0FBRyxFQUFFLEdBQUcsT0FBTyxFQUFFLEdBQUcsVUFBVSxFQUFFLENBQUM7UUFFdEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsZUFBZSxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQzVELElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUNiLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2xDLENBQUM7WUFDRCxLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDYixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsT0FBTyxJQUFJLDJDQUEyQyxDQUFDLENBQUM7Z0JBQ2xGLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2xDLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsZUFBZSxDQUFDLEtBR2Y7UUFDQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUdELGVBQWU7UUFDYixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyQixDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxtQkFBbUIsQ0FDdEIsSUFBSSxDQUFDLG9CQUFvQixFQUN6QixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsRUFDdkIsSUFBSSxDQUFDLGVBQWUsRUFDcEIsSUFBSSxDQUFDLGtCQUFrQixDQUN4QixDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLO1FBQ0gsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzNCLElBQUksRUFBRSxFQUFFLENBQUM7WUFDUCxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3RCLENBQUM7SUFDSCxDQUFDO3dHQXpZVSxzQkFBc0I7NEZBQXRCLHNCQUFzQiwrekJBL1N2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0dULG02R0F2R1MsWUFBWSwrQkFBRSx3QkFBd0IsNlVBQUUsZ0JBQWdCOzs0RkFnVHZELHNCQUFzQjtrQkFuVGxDLFNBQVM7K0JBQ0UsaUNBQWlDLGNBQy9CLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSx3QkFBd0IsRUFBRSxnQkFBZ0IsQ0FBQyxZQUN6RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0dULG1CQXVNZ0IsdUJBQXVCLENBQUMsTUFBTTt3REFzRi9DLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyx1QkFBdUI7Z0JBeVJyQyxlQUFlO3NCQURkLFlBQVk7dUJBQUMsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgSG9zdExpc3RlbmVyLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBvdXRwdXQsXG4gIHNpZ25hbCxcbiAgdW50cmFja2VkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBSZXBvcnREZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbHMvcmVwb3J0LWRlZmluaXRpb24ubW9kZWwnO1xuaW1wb3J0IHsgUmVwb3J0Q29tcG9uZW50RGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWxzL3JlcG9ydC1jb21wb25lbnQubW9kZWwnO1xuaW1wb3J0IHsgQ29tcG9uZW50QWN0aW9uRGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWxzL2NvbXBvbmVudC1ldmVudC5tb2RlbCc7XG5pbXBvcnQgeyBHcmlkUm93Q2xpY2tBY3Rpb24gfSBmcm9tICcuLi8uLi9jb3JlL21vZGVscy9yZXBvcnQtZ3JpZC5tb2RlbCc7XG5pbXBvcnQgeyBSZXBvcnRQZXJzaXN0ZW5jZUFkYXB0ZXIgfSBmcm9tICcuLi8uLi9kYXRhLWFjY2Vzcy9jb250cmFjdHMvcmVwb3J0LXBlcnNpc3RlbmNlLmNvbnRyYWN0JztcbmltcG9ydCB7IFJlcG9ydERhdGFTb3VyY2VBZGFwdGVyIH0gZnJvbSAnLi4vLi4vZGF0YS1hY2Nlc3MvY29udHJhY3RzL2RhdGEtc291cmNlLmNvbnRyYWN0JztcbmltcG9ydCB7IFJlcG9ydFNlc3Npb25Db250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZXMvcmVwb3J0LXNlc3Npb24tY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCB7IER5bmFtaWNSZW5kZXJlckNvbXBvbmVudCB9IGZyb20gJy4vZHluYW1pYy1yZW5kZXJlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgUnB0SWNvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3ByaW1pdGl2ZXMvY29tcG9uZW50cy9pY29uL3JwdC1pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSZXBvcnRFeGVjdXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9yZXBvcnQtZXhlY3V0aW9uLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdycHQtcmVwb3J0LXJ1bnRpbWUsIHJwdC1ydW50aW1lJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRHluYW1pY1JlbmRlcmVyQ29tcG9uZW50LCBScHRJY29uQ29tcG9uZW50XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwicnB0LXJ1bnRpbWUtY29udGFpbmVyXCI+XG4gICAgICBAaWYgKGlzTG9hZGluZygpKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJycHQtc3RhdGUtY2FyZCBycHQtbG9hZGluZy1zdGF0ZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJycHQtc3Bpbm5lclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvZGl2PlxuICAgICAgICAgIDxwIGNsYXNzPVwicnB0LXN0YXRlLXRleHRcIj57eyBsb2FkaW5nTWVzc2FnZSgpIH19PC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH0gQGVsc2UgaWYgKGVycm9yTWVzc2FnZSgpKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJycHQtc3RhdGUtY2FyZCBycHQtZXJyb3Itc3RhdGVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicnB0LWVycm9yLWljb25cIj48cnB0LWljb24gbmFtZT1cImFsZXJ0LXRyaWFuZ2xlXCIgW3NpemVdPVwiMzJcIiBjb2xvcj1cIiNlZjQ0NDRcIiAvPjwvZGl2PlxuICAgICAgICAgIDxwIGNsYXNzPVwicnB0LWVycm9yLXRpdGxlXCI+VW5hYmxlIHRvIHJ1biByZXBvcnQ8L3A+XG4gICAgICAgICAgPHAgY2xhc3M9XCJycHQtc3RhdGUtdGV4dFwiPnt7IGVycm9yTWVzc2FnZSgpIH19PC9wPlxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwicnB0LXJldHJ5LWJ0blwiIChjbGljayk9XCJyZXRyeSgpXCI+UmV0cnk8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9IEBlbHNlIGlmIChjdXJyZW50RGVmaW5pdGlvbigpKSB7XG4gICAgICAgIDxycHQtZHluYW1pYy1yZW5kZXJlclxuICAgICAgICAgIFtkZWZpbml0aW9uXT1cImN1cnJlbnREZWZpbml0aW9uKCkhXCJcbiAgICAgICAgICBbcmVzdWx0RGF0YV09XCJyZXN1bHREYXRhKClcIlxuICAgICAgICAgIChleGVjdXRlUmVxdWVzdGVkKT1cIm9uRXhlY3V0ZVJlcG9ydCgkZXZlbnQpXCJcbiAgICAgICAgICAocmVzZXRSZXF1ZXN0ZWQpPVwib25SZXNldFJlcG9ydCgkZXZlbnQpXCJcbiAgICAgICAgICAoZXhwb3J0UmVxdWVzdGVkKT1cIm9uRXhwb3J0UmVxdWVzdGVkKCRldmVudClcIlxuICAgICAgICAgIChwcmludFJlcXVlc3RlZCk9XCJvblByaW50UmVxdWVzdGVkKCRldmVudClcIlxuICAgICAgICAgIChjdXN0b21BY3Rpb25UcmlnZ2VyZWQpPVwib25DdXN0b21BY3Rpb24oJGV2ZW50KVwiXG4gICAgICAgICAgKGdyaWRTdGF0ZUNoYW5nZWQpPVwiZ3JpZFN0YXRlQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgKGNvbHVtbkRlZnNDaGFuZ2VkKT1cImNvbHVtbkRlZnNDaGFuZ2UuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAocm93QWN0aW9uVHJpZ2dlcmVkKT1cIm9uUm93QWN0aW9uVHJpZ2dlcmVkKCRldmVudClcIlxuICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwib25TZWxlY3Rpb25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIC8+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInJwdC1zdGF0ZS1jYXJkIHJwdC1lbXB0eS1zdGF0ZVwiPlxuICAgICAgICAgIDxwIGNsYXNzPVwicnB0LXN0YXRlLXRleHRcIj5ObyByZXBvcnQgZGVmaW5pdGlvbiBhdmFpbGFibGUuPC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cblxuICAgICAgPCEtLSBNYXN0ZXItRGV0YWlsIFNsaWRlLU92ZXIgRHJhd2VyIC0tPlxuICAgICAgQGlmIChpc0RyYXdlck9wZW4oKSkge1xuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJycHQtZHJhd2VyLWJhY2tkcm9wXCJcbiAgICAgICAgICAoY2xpY2spPVwiY2xvc2VEcmF3ZXIoKVwiXG4gICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgPjwvZGl2PlxuICAgICAgICA8YXNpZGVcbiAgICAgICAgICBjbGFzcz1cInJwdC1kcmF3ZXItcGFuZWxcIlxuICAgICAgICAgIHJvbGU9XCJkaWFsb2dcIlxuICAgICAgICAgIGFyaWEtbW9kYWw9XCJ0cnVlXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImRyYXdlclRpdGxlKClcIlxuICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJkcmF3ZXJXaWR0aCgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDwhLS0gRHJhd2VyIEhlYWRlciAtLT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicnB0LWRyYXdlci1oZWFkZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJycHQtZHJhd2VyLWhlYWRlci1sZWZ0XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJycHQtZHJhd2VyLXRpdGxlLXJvd1wiPlxuICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cInJwdC1kcmF3ZXItdGl0bGVcIj57eyBkcmF3ZXJUaXRsZSgpIH19PC9oMz5cbiAgICAgICAgICAgICAgICBAaWYgKGRyYXdlckNvbnRleHRCYWRnZSgpKSB7XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJwdC1kcmF3ZXItYmFkZ2VcIiBbdGl0bGVdPVwiZHJhd2VyQ29udGV4dEJhZGdlKCkhXCI+e3sgZHJhd2VyQ29udGV4dEJhZGdlKCkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgQGlmIChkcmF3ZXJEZWZpbml0aW9uKCk/LmRlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJycHQtZHJhd2VyLWRlc2NcIj57eyBkcmF3ZXJEZWZpbml0aW9uKCk/LmRlc2NyaXB0aW9uIH19PC9wPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwicnB0LWRyYXdlci1jbG9zZS1idG5cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiY2xvc2VEcmF3ZXIoKVwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbG9zZSBkZXRhaWxzXCJcbiAgICAgICAgICAgICAgdGl0bGU9XCJDbG9zZSBkcmF3ZXIgKEVzYylcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICDinJVcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSBEcmF3ZXIgQm9keSAtLT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicnB0LWRyYXdlci1ib2R5XCI+XG4gICAgICAgICAgICBAaWYgKGlzRHJhd2VyTG9hZGluZygpKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJycHQtc3RhdGUtY2FyZCBycHQtZHJhd2VyLWxvYWRpbmdcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicnB0LXNwaW5uZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInJwdC1zdGF0ZS10ZXh0XCI+e3sgZHJhd2VyTG9hZGluZ01lc3NhZ2UoKSB9fTwvcD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9IEBlbHNlIGlmIChkcmF3ZXJFcnJvcigpKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJycHQtc3RhdGUtY2FyZCBycHQtZXJyb3Itc3RhdGVcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicnB0LWVycm9yLWljb25cIj48cnB0LWljb24gbmFtZT1cImFsZXJ0LXRyaWFuZ2xlXCIgW3NpemVdPVwiMjhcIiBjb2xvcj1cIiNlZjQ0NDRcIiAvPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwicnB0LWVycm9yLXRpdGxlXCI+VW5hYmxlIHRvIGxvYWQgZGV0YWlsczwvcD5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInJwdC1zdGF0ZS10ZXh0XCI+e3sgZHJhd2VyRXJyb3IoKSB9fTwvcD5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInJwdC1yZXRyeS1idG5cIiAoY2xpY2spPVwicmV0cnlEcmF3ZXIoKVwiPlJldHJ5PC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfSBAZWxzZSBpZiAoZHJhd2VyRGVmaW5pdGlvbigpKSB7XG4gICAgICAgICAgICAgIDxycHQtZHluYW1pYy1yZW5kZXJlclxuICAgICAgICAgICAgICAgIFtkZWZpbml0aW9uXT1cImRyYXdlckRlZmluaXRpb24oKSFcIlxuICAgICAgICAgICAgICAgIFtpbml0aWFsVmFsdWVzXT1cImRyYXdlclBhcmFtZXRlcnMoKVwiXG4gICAgICAgICAgICAgICAgW3Jlc3VsdERhdGFdPVwiZHJhd2VyUmVzdWx0RGF0YSgpXCJcbiAgICAgICAgICAgICAgICAoZXhlY3V0ZVJlcXVlc3RlZCk9XCJvbkRyYXdlckV4ZWN1dGUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGV4cG9ydFJlcXVlc3RlZCk9XCJvbkV4cG9ydFJlcXVlc3RlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAocHJpbnRSZXF1ZXN0ZWQpPVwib25QcmludFJlcXVlc3RlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoY3VzdG9tQWN0aW9uVHJpZ2dlcmVkKT1cIm9uQ3VzdG9tQWN0aW9uKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChyb3dBY3Rpb25UcmlnZ2VyZWQpPVwib25Sb3dBY3Rpb25UcmlnZ2VyZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYXNpZGU+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogW2BcbiAgICA6aG9zdCB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgZm9udC1mYW1pbHk6IHZhcigtLXJwdC1mb250LWZhbWlseSwgaW5oZXJpdCk7XG4gICAgfVxuICAgIC5ycHQtcnVudGltZS1jb250YWluZXIge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIH1cbiAgICAucnB0LXN0YXRlLWNhcmQge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICBwYWRkaW5nOiA0OHB4IDI0cHg7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ycHQtY29sb3ItYmcsICNmZmZmZmYpO1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tcnB0LWNvbG9yLWJvcmRlciwgI2NiZDVlMSk7XG4gICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1ycHQtYm9yZGVyLXJhZGl1cy1sZywgOHB4KTtcbiAgICAgIG1hcmdpbjogMjRweCAwO1xuICAgIH1cbiAgICAucnB0LXN0YXRlLXRleHQge1xuICAgICAgY29sb3I6IHZhcigtLXJwdC1jb2xvci10ZXh0LW11dGVkLCAjNjQ3NDhiKTtcbiAgICAgIGZvbnQtc2l6ZTogdmFyKC0tcnB0LWZvbnQtc2l6ZS1iYXNlLCAwLjg3NXJlbSk7XG4gICAgICBtYXJnaW46IDhweCAwIDAgMDtcbiAgICB9XG4gICAgLnJwdC1lcnJvci10aXRsZSB7XG4gICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgY29sb3I6IHZhcigtLXJwdC1jb2xvci1kYW5nZXIsICNlZjQ0NDQpO1xuICAgICAgbWFyZ2luOiA4cHggMCAwIDA7XG4gICAgICBmb250LXNpemU6IHZhcigtLXJwdC1mb250LXNpemUtYmFzZSwgMC44NzVyZW0pO1xuICAgIH1cbiAgICAucnB0LXNwaW5uZXIge1xuICAgICAgd2lkdGg6IDM2cHg7XG4gICAgICBoZWlnaHQ6IDM2cHg7XG4gICAgICBib3JkZXI6IDNweCBzb2xpZCB2YXIoLS1ycHQtY29sb3ItYm9yZGVyLCAjY2JkNWUxKTtcbiAgICAgIGJvcmRlci10b3AtY29sb3I6IHZhcigtLXJwdC1jb2xvci1wcmltYXJ5LCAjMjU2M2ViKTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgIGFuaW1hdGlvbjogcnB0LXNwaW4gODAwbXMgbGluZWFyIGluZmluaXRlO1xuICAgIH1cbiAgICBAa2V5ZnJhbWVzIHJwdC1zcGluIHtcbiAgICAgIHRvIHsgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsgfVxuICAgIH1cbiAgICAucnB0LXJldHJ5LWJ0biB7XG4gICAgICBtYXJnaW4tdG9wOiAxNnB4O1xuICAgICAgcGFkZGluZzogNnB4IDE2cHg7XG4gICAgICBmb250LXNpemU6IHZhcigtLXJwdC1mb250LXNpemUtc20sIDAuNzVyZW0pO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcnB0LWNvbG9yLXByaW1hcnksICMyNTYzZWIpO1xuICAgICAgY29sb3I6IHZhcigtLXJwdC1jb2xvci10ZXh0LWludmVyc2UsICNmZmZmZmYpO1xuICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcnB0LWJvcmRlci1yYWRpdXMsIDZweCk7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAxMjBtcyBlYXNlO1xuICAgIH1cbiAgICAucnB0LXJldHJ5LWJ0bjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWQ0ZWQ4O1xuICAgIH1cblxuICAgIC8qIFNsaWRlLW92ZXIgRGV0YWlsIERyYXdlciAqL1xuICAgIC5ycHQtZHJhd2VyLWJhY2tkcm9wIHtcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgIGluc2V0OiAwO1xuICAgICAgYmFja2dyb3VuZDogcmdiYSgxNSwgMjMsIDQyLCAwLjQ1KTtcbiAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cig4cHgpO1xuICAgICAgLXdlYmtpdC1iYWNrZHJvcC1maWx0ZXI6IGJsdXIoOHB4KTtcbiAgICAgIHotaW5kZXg6IDEwMDA7XG4gICAgICBhbmltYXRpb246IHJwdC1mYWRlLWluIDE4MG1zIGVhc2Utb3V0IGZvcndhcmRzO1xuICAgIH1cblxuICAgIC5ycHQtZHJhd2VyLXBhbmVsIHtcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgIHRvcDogMDtcbiAgICAgIHJpZ2h0OiAwO1xuICAgICAgYm90dG9tOiAwO1xuICAgICAgbWF4LXdpZHRoOiA5NXZ3O1xuICAgICAgYmFja2dyb3VuZDogdmFyKC0tcnB0LWNvbG9yLXN1cmZhY2UsICNmZmZmZmYpO1xuICAgICAgYm94LXNoYWRvdzogLTEycHggMCA0MHB4IHJnYmEoMTUsIDIzLCA0MiwgMC4xNik7XG4gICAgICB6LWluZGV4OiAxMDAxO1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICBhbmltYXRpb246IHJwdC1zbGlkZS1pbi1yaWdodCAyNDBtcyBjdWJpYy1iZXppZXIoMC4xNiwgMSwgMC4zLCAxKSBmb3J3YXJkcztcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkIHZhcigtLXJwdC1jb2xvci1ib3JkZXItc3VidGxlLCAjZTJlOGYwKTtcbiAgICB9XG5cbiAgICA6aG9zdC1jb250ZXh0KFtkaXI9XCJydGxcIl0pIC5ycHQtZHJhd2VyLXBhbmVsIHtcbiAgICAgIHJpZ2h0OiBhdXRvO1xuICAgICAgbGVmdDogMDtcbiAgICAgIGJveC1zaGFkb3c6IDhweCAwIDMycHggcmdiYSgxNSwgMjMsIDQyLCAwLjIpO1xuICAgICAgYW5pbWF0aW9uLW5hbWU6IHJwdC1zbGlkZS1pbi1sZWZ0O1xuICAgICAgYm9yZGVyLWxlZnQ6IG5vbmU7XG4gICAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCB2YXIoLS1ycHQtY29sb3ItYm9yZGVyLCAjY2JkNWUxKTtcbiAgICB9XG5cbiAgICBAa2V5ZnJhbWVzIHJwdC1mYWRlLWluIHtcbiAgICAgIGZyb20geyBvcGFjaXR5OiAwOyB9XG4gICAgICB0byB7IG9wYWNpdHk6IDE7IH1cbiAgICB9XG5cbiAgICBAa2V5ZnJhbWVzIHJwdC1zbGlkZS1pbi1yaWdodCB7XG4gICAgICBmcm9tIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpOyB9XG4gICAgICB0byB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsgfVxuICAgIH1cblxuICAgIEBrZXlmcmFtZXMgcnB0LXNsaWRlLWluLWxlZnQge1xuICAgICAgZnJvbSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7IH1cbiAgICAgIHRvIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOyB9XG4gICAgfVxuXG4gICAgLnJwdC1kcmF3ZXItaGVhZGVyIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgIGdhcDogMTJweDtcbiAgICAgIHBhZGRpbmc6IDE2cHggMjBweDtcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1ycHQtY29sb3ItYm9yZGVyLCAjZTJlOGYwKTtcbiAgICAgIGJhY2tncm91bmQ6ICNmOGZhZmM7XG4gICAgICBmbGV4LXNocmluazogMDtcbiAgICB9XG5cbiAgICAucnB0LWRyYXdlci1oZWFkZXItbGVmdCB7XG4gICAgICBtaW4td2lkdGg6IDA7XG4gICAgICBmbGV4OiAxO1xuICAgIH1cblxuICAgIC5ycHQtZHJhd2VyLXRpdGxlLXJvdyB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGdhcDogMTBweDtcbiAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICB9XG5cbiAgICAucnB0LWRyYXdlci10aXRsZSB7XG4gICAgICBmb250LXNpemU6IDEuMTI1cmVtO1xuICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgIGNvbG9yOiAjMGYxNzJhO1xuICAgICAgbWFyZ2luOiAwO1xuICAgICAgbGluZS1oZWlnaHQ6IDEuMztcbiAgICB9XG5cbiAgICAucnB0LWRyYXdlci1iYWRnZSB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBwYWRkaW5nOiAycHggOHB4O1xuICAgICAgZm9udC1zaXplOiAwLjcyNXJlbTtcbiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICBiYWNrZ3JvdW5kOiAjZWZmNmZmO1xuICAgICAgY29sb3I6ICMyNTYzZWI7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjYmZkYmZlO1xuICAgICAgYm9yZGVyLXJhZGl1czogOTk5OXB4O1xuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgIG1heC13aWR0aDogMzAwcHg7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgfVxuXG4gICAgLnJwdC1kcmF3ZXItZGVzYyB7XG4gICAgICBmb250LXNpemU6IDAuOHJlbTtcbiAgICAgIGNvbG9yOiAjNjQ3NDhiO1xuICAgICAgbWFyZ2luOiA0cHggMCAwIDA7XG4gICAgfVxuXG4gICAgLnJwdC1kcmF3ZXItY2xvc2UtYnRuIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgd2lkdGg6IDMycHg7XG4gICAgICBoZWlnaHQ6IDMycHg7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgY29sb3I6ICM2NDc0OGI7XG4gICAgICBmb250LXNpemU6IDEuMTI1cmVtO1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgdHJhbnNpdGlvbjogYWxsIDEyMG1zIGVhc2U7XG4gICAgICBmbGV4LXNocmluazogMDtcbiAgICB9XG5cbiAgICAucnB0LWRyYXdlci1jbG9zZS1idG46aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogI2UyZThmMDtcbiAgICAgIGNvbG9yOiAjMGYxNzJhO1xuICAgIH1cblxuICAgIC5ycHQtZHJhd2VyLWJvZHkge1xuICAgICAgZmxleDogMTtcbiAgICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgICBvdmVyZmxvdy14OiBoaWRkZW47XG4gICAgICBwYWRkaW5nOiA4cHggMTJweDtcbiAgICB9XG5cbiAgICAucnB0LWRyYXdlci1sb2FkaW5nIHtcbiAgICAgIG1hcmdpbjogNDhweCBhdXRvO1xuICAgICAgbWF4LXdpZHRoOiA0MDBweDtcbiAgICB9XG4gIGBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgUmVwb3J0UnVudGltZUNvbXBvbmVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGVyc2lzdGVuY2VBZGFwdGVyID0gaW5qZWN0KFJlcG9ydFBlcnNpc3RlbmNlQWRhcHRlciwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBkYXRhU291cmNlQWRhcHRlciA9IGluamVjdChSZXBvcnREYXRhU291cmNlQWRhcHRlciwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBzZXNzaW9uU2VydmljZSA9IGluamVjdChSZXBvcnRTZXNzaW9uQ29udGV4dFNlcnZpY2UsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZXhlY3V0aW9uU2VydmljZSA9IGluamVjdChSZXBvcnRFeGVjdXRpb25TZXJ2aWNlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gIC8qKiBSZXBvcnQgSUQgdG8gbG9hZCB2aWEgcGVyc2lzdGVuY2UgYWRhcHRlciAqL1xuICByZWFkb25seSByZXBvcnRJZCA9IGlucHV0PHN0cmluZz4oKTtcblxuICAvKiogRGlyZWN0bHkgcGFzc2VkIHJlcG9ydCBkZWZpbml0aW9uIChza2lwcyBwZXJzaXN0ZW5jZSBhZGFwdGVyKSAqL1xuICByZWFkb25seSBkZWZpbml0aW9uID0gaW5wdXQ8UmVwb3J0RGVmaW5pdGlvbiB8IG51bGw+KG51bGwsIHsgYWxpYXM6ICdyZXBvcnQnIH0pO1xuXG4gIHJlYWRvbmx5IHJlc2V0UmVxdWVzdGVkID0gb3V0cHV0PHsgZGVmaW5pdGlvbjogUmVwb3J0RGVmaW5pdGlvbiB9PigpO1xuICByZWFkb25seSBleHBvcnRSZXF1ZXN0ZWQgPSBvdXRwdXQ8e1xuICAgIGZvcm1hdDogc3RyaW5nO1xuICAgIGZpbGVOYW1lPzogc3RyaW5nO1xuICAgIHBhcmFtZXRlcnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIGRhdGE6IHVua25vd25bXSB8IG51bGw7XG4gIH0+KCk7XG4gIHJlYWRvbmx5IHByaW50UmVxdWVzdGVkID0gb3V0cHV0PHtcbiAgICBycHRGaWxlTmFtZT86IHN0cmluZztcbiAgICBleHBvcnRUeXBlPzogc3RyaW5nO1xuICAgIHBhcmFtZXRlcnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICB9PigpO1xuICByZWFkb25seSBjdXN0b21BY3Rpb25UcmlnZ2VyZWQgPSBvdXRwdXQ8e1xuICAgIGFjdGlvbjogQ29tcG9uZW50QWN0aW9uRGVmaW5pdGlvbjtcbiAgICBjb21wb25lbnQ6IFJlcG9ydENvbXBvbmVudERlZmluaXRpb247XG4gICAgcGFyYW1ldGVyczogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIH0+KCk7XG4gIHJlYWRvbmx5IGdyaWRTdGF0ZUNoYW5nZSA9IG91dHB1dDxhbnk+KCk7XG4gIHJlYWRvbmx5IGNvbHVtbkRlZnNDaGFuZ2UgPSBvdXRwdXQ8YW55PigpO1xuICByZWFkb25seSBzZWxlY3Rpb25DaGFuZ2UgPSBvdXRwdXQ8YW55W10+KCk7XG4gIHJlYWRvbmx5IHNlbGVjdGlvbkNoYW5nZWQgPSBvdXRwdXQ8YW55W10+KCk7XG4gIHJlYWRvbmx5IHJvd0FjdGlvblRyaWdnZXJlZCA9IG91dHB1dDx7XG4gICAgYWN0aW9uOiBHcmlkUm93Q2xpY2tBY3Rpb247XG4gICAgcm93OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICBwYXJhbWV0ZXJzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgfT4oKTtcbiAgcmVhZG9ubHkgZHJpbGxkb3duUmVxdWVzdGVkID0gb3V0cHV0PHtcbiAgICB0YXJnZXRSZXBvcnRJZDogc3RyaW5nO1xuICAgIHBhcmFtZXRlcnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIHJvdzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIH0+KCk7XG5cbiAgcmVhZG9ubHkgaW50ZXJuYWxEZWZpbml0aW9uID0gc2lnbmFsPFJlcG9ydERlZmluaXRpb24gfCBudWxsPihudWxsKTtcbiAgcmVhZG9ubHkgcmVzdWx0RGF0YSA9IHNpZ25hbDx1bmtub3duW10gfCBudWxsPihudWxsKTtcbiAgcmVhZG9ubHkgaXNMb2FkaW5nID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgbG9hZGluZ01lc3NhZ2UgPSBzaWduYWw8c3RyaW5nPignTG9hZGluZyByZXBvcnQuLi4nKTtcbiAgcmVhZG9ubHkgZXJyb3JNZXNzYWdlID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuXG4gIC8vIFNsaWRlLW92ZXIgRHJhd2VyIFNpZ25hbHNcbiAgcmVhZG9ubHkgaXNEcmF3ZXJPcGVuID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgZHJhd2VyVGl0bGUgPSBzaWduYWw8c3RyaW5nPignUmVwb3J0IERldGFpbHMnKTtcbiAgcmVhZG9ubHkgZHJhd2VyV2lkdGggPSBzaWduYWw8c3RyaW5nPignNzYwcHgnKTtcbiAgcmVhZG9ubHkgZHJhd2VyRGVmaW5pdGlvbiA9IHNpZ25hbDxSZXBvcnREZWZpbml0aW9uIHwgbnVsbD4obnVsbCk7XG4gIHJlYWRvbmx5IGRyYXdlclBhcmFtZXRlcnMgPSBzaWduYWw8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+KHt9KTtcbiAgcmVhZG9ubHkgZHJhd2VyUmVzdWx0RGF0YSA9IHNpZ25hbDx1bmtub3duW10gfCBudWxsPihudWxsKTtcbiAgcmVhZG9ubHkgZHJhd2VyQ29udGV4dEJhZGdlID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuICByZWFkb25seSBpc0RyYXdlckxvYWRpbmcgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBkcmF3ZXJMb2FkaW5nTWVzc2FnZSA9IHNpZ25hbDxzdHJpbmc+KCdMb2FkaW5nIGRyaWxsLWRvd24gZGV0YWlscy4uLicpO1xuICByZWFkb25seSBkcmF3ZXJFcnJvciA9IHNpZ25hbDxzdHJpbmcgfCBudWxsPihudWxsKTtcblxuICAvLyBQcml2YXRlIHRyYWNrZXJzIGZvciBkcmF3ZXIgcmV0cnlcbiAgcHJpdmF0ZSBhY3RpdmVEcmF3ZXJUYXJnZXRJZDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgYWN0aXZlRHJhd2VyUm93OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuICBwcml2YXRlIGFjdGl2ZURyYXdlckFjdGlvbj86IEdyaWRSb3dDbGlja0FjdGlvbjtcblxuICByZWFkb25seSBjdXJyZW50RGVmaW5pdGlvbiA9IGNvbXB1dGVkPFJlcG9ydERlZmluaXRpb24gfCBudWxsPigoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuZGVmaW5pdGlvbigpID8/IHRoaXMuaW50ZXJuYWxEZWZpbml0aW9uKCk7XG4gIH0pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgY29uc3QgaWQgPSB0aGlzLnJlcG9ydElkKCk7XG4gICAgICAgIGlmIChpZCAmJiAhdGhpcy5kZWZpbml0aW9uKCkpIHtcbiAgICAgICAgICB0aGlzLmxvYWRSZXBvcnQoaWQpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG4gICAgKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzprZXlkb3duLmVzY2FwZScpXG4gIG9uRXNjYXBlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzRHJhd2VyT3BlbigpKSB7XG4gICAgICB0aGlzLmNsb3NlRHJhd2VyKCk7XG4gICAgfVxuICB9XG5cbiAgbG9hZFJlcG9ydChpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnBlcnNpc3RlbmNlQWRhcHRlcikge1xuICAgICAgdGhpcy5lcnJvck1lc3NhZ2Uuc2V0KFxuICAgICAgICBgUmVwb3J0IHBlcnNpc3RlbmNlIGFkYXB0ZXIgbm90IHByb3ZpZGVkIHRvIGxvYWQgcmVwb3J0IFwiJHtpZH1cIi5gXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaXNMb2FkaW5nLnNldCh0cnVlKTtcbiAgICB0aGlzLmxvYWRpbmdNZXNzYWdlLnNldCgnTG9hZGluZyByZXBvcnQgZGVmaW5pdGlvbi4uLicpO1xuICAgIHRoaXMuZXJyb3JNZXNzYWdlLnNldChudWxsKTtcblxuICAgIHRoaXMucGVyc2lzdGVuY2VBZGFwdGVyLmxvYWQoaWQpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoZGVmKSA9PiB7XG4gICAgICAgIHRoaXMuaW50ZXJuYWxEZWZpbml0aW9uLnNldChkZWYpO1xuICAgICAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyKSA9PiB7XG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlLnNldChcbiAgICAgICAgICBlcnI/Lm1lc3NhZ2UgPz8gYEZhaWxlZCB0byBsb2FkIHJlcG9ydCBkZWZpbml0aW9uIHdpdGggSUQ6ICR7aWR9YFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIG9uRXhlY3V0ZVJlcG9ydChldmVudDoge1xuICAgIGRlZmluaXRpb246IFJlcG9ydERlZmluaXRpb247XG4gICAgcGFyYW1ldGVyczogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIH0pOiB2b2lkIHtcbiAgICBjb25zdCBncmlkID0gZXZlbnQuZGVmaW5pdGlvbi5ncmlkO1xuICAgIGlmICghZ3JpZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmV4ZWN1dGlvblNlcnZpY2UpIHtcbiAgICAgIGNvbnN0IG1pc3NpbmcgPSB0aGlzLmV4ZWN1dGlvblNlcnZpY2UuZ2V0TWlzc2luZ0ZpZWxkcyhldmVudC5kZWZpbml0aW9uLCBldmVudC5wYXJhbWV0ZXJzKTtcbiAgICAgIGlmIChtaXNzaW5nLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2Uuc2V0KGBNaXNzaW5nIHJlcXVpcmVkIGZpbHRlciB2YWx1ZXM6ICR7bWlzc2luZy5qb2luKCcsICcpfS4gUGxlYXNlIGVudGVyIHZhbHVlcyB0byBydW4uYCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KHRydWUpO1xuICAgICAgdGhpcy5sb2FkaW5nTWVzc2FnZS5zZXQoJ0V4ZWN1dGluZyByZXBvcnQgcXVlcnkuLi4nKTtcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlLnNldChudWxsKTtcblxuICAgICAgdGhpcy5leGVjdXRpb25TZXJ2aWNlLmV4ZWN1dGUoZXZlbnQuZGVmaW5pdGlvbiwgZXZlbnQucGFyYW1ldGVycykuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKGRhdGEpID0+IHtcbiAgICAgICAgICB0aGlzLnJlc3VsdERhdGEuc2V0KGRhdGEpO1xuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2Uuc2V0KFxuICAgICAgICAgICAgZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6IFN0cmluZyhlcnIpXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZHMgPSBldmVudC5kZWZpbml0aW9uLmRhdGFTb3VyY2VzLmZpbmQoXG4gICAgICAoZCkgPT4gZC5pZCA9PT0gZ3JpZC5kYXRhU291cmNlSWQgfHwgZC5uYW1lID09PSBncmlkLmRhdGFTb3VyY2VJZFxuICAgICkgfHwgZXZlbnQuZGVmaW5pdGlvbi5kYXRhU291cmNlc1swXTtcblxuICAgIGlmICghZHMpIHtcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlLnNldChcbiAgICAgICAgYERhdGEgc291cmNlIFwiJHtncmlkLmRhdGFTb3VyY2VJZH1cIiByZWZlcmVuY2VkIGJ5IGdyaWQgbm90IGZvdW5kIGluIHJlcG9ydCBkZWZpbml0aW9uLmBcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmRhdGFTb3VyY2VBZGFwdGVyKSB7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZS5zZXQoXG4gICAgICAgICdObyBSZXBvcnREYXRhU291cmNlQWRhcHRlciBwcm92aWRlZCB0byBleGVjdXRlIHRoZSBkYXRhIHNvdXJjZS4nXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaXNMb2FkaW5nLnNldCh0cnVlKTtcbiAgICB0aGlzLmxvYWRpbmdNZXNzYWdlLnNldCgnRXhlY3V0aW5nIHJlcG9ydCBxdWVyeS4uLicpO1xuICAgIHRoaXMuZXJyb3JNZXNzYWdlLnNldChudWxsKTtcblxuICAgIGNvbnN0IHNlc3Npb24gPSB0aGlzLnNlc3Npb25TZXJ2aWNlPy5nZXRDdXJyZW50U2Vzc2lvbkNvbnRleHQoKSA/PyB7fTtcbiAgICBjb25zdCBleGVjdXRpb25QYXJhbXMgPSB7IC4uLnNlc3Npb24sIC4uLmV2ZW50LnBhcmFtZXRlcnMgfTtcblxuICAgIHRoaXMuZGF0YVNvdXJjZUFkYXB0ZXIuZXhlY3V0ZShkcywgZXhlY3V0aW9uUGFyYW1zKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGRhdGEpID0+IHtcbiAgICAgICAgdGhpcy5yZXN1bHREYXRhLnNldChkYXRhKTtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKGVycikgPT4ge1xuICAgICAgICB0aGlzLmVycm9yTWVzc2FnZS5zZXQoXG4gICAgICAgICAgZXJyPy5tZXNzYWdlID8/ICdBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBleGVjdXRpbmcgcmVwb3J0IGRhdGEgc291cmNlLidcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBvblJlc2V0UmVwb3J0KGV2ZW50OiB7IGRlZmluaXRpb246IFJlcG9ydERlZmluaXRpb24gfSk6IHZvaWQge1xuICAgIHRoaXMucmVzdWx0RGF0YS5zZXQobnVsbCk7XG4gICAgdGhpcy5lcnJvck1lc3NhZ2Uuc2V0KG51bGwpO1xuICAgIHRoaXMucmVzZXRSZXF1ZXN0ZWQuZW1pdChldmVudCk7XG4gIH1cblxuICBvbkV4cG9ydFJlcXVlc3RlZChldmVudDoge1xuICAgIGZvcm1hdDogc3RyaW5nO1xuICAgIGZpbGVOYW1lPzogc3RyaW5nO1xuICAgIHBhcmFtZXRlcnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIGRhdGE6IHVua25vd25bXSB8IG51bGw7XG4gIH0pOiB2b2lkIHtcbiAgICB0aGlzLmV4cG9ydFJlcXVlc3RlZC5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIG9uUHJpbnRSZXF1ZXN0ZWQoZXZlbnQ6IHtcbiAgICBycHRGaWxlTmFtZT86IHN0cmluZztcbiAgICBleHBvcnRUeXBlPzogc3RyaW5nO1xuICAgIHBhcmFtZXRlcnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICB9KTogdm9pZCB7XG4gICAgdGhpcy5wcmludFJlcXVlc3RlZC5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIG9uQ3VzdG9tQWN0aW9uKGV2ZW50OiB7XG4gICAgYWN0aW9uOiBDb21wb25lbnRBY3Rpb25EZWZpbml0aW9uO1xuICAgIGNvbXBvbmVudDogUmVwb3J0Q29tcG9uZW50RGVmaW5pdGlvbjtcbiAgICBwYXJhbWV0ZXJzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgfSk6IHZvaWQge1xuICAgIHRoaXMuY3VzdG9tQWN0aW9uVHJpZ2dlcmVkLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgb25TZWxlY3Rpb25DaGFuZ2Uocm93czogYW55W10pOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHJvd3MpO1xuICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlZC5lbWl0KHJvd3MpO1xuICB9XG5cbiAgb25Sb3dBY3Rpb25UcmlnZ2VyZWQoZXZlbnQ6IHtcbiAgICBhY3Rpb246IEdyaWRSb3dDbGlja0FjdGlvbjtcbiAgICByb3c6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIHBhcmFtZXRlcnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICB9KTogdm9pZCB7XG4gICAgdGhpcy5yb3dBY3Rpb25UcmlnZ2VyZWQuZW1pdChldmVudCk7XG5cbiAgICBpZiAoZXZlbnQuYWN0aW9uLnRhcmdldFJlcG9ydElkKSB7XG4gICAgICB0aGlzLmRyaWxsZG93blJlcXVlc3RlZC5lbWl0KHtcbiAgICAgICAgdGFyZ2V0UmVwb3J0SWQ6IGV2ZW50LmFjdGlvbi50YXJnZXRSZXBvcnRJZCxcbiAgICAgICAgcGFyYW1ldGVyczogZXZlbnQucGFyYW1ldGVycyxcbiAgICAgICAgcm93OiBldmVudC5yb3csXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnQuYWN0aW9uLnR5cGUgPT09ICdvcGVuLWRyYXdlcicgfHwgZXZlbnQuYWN0aW9uLnR5cGUgPT09ICdkcmlsbGRvd24tcmVwb3J0Jykge1xuICAgICAgaWYgKGV2ZW50LmFjdGlvbi50YXJnZXRSZXBvcnRJZCkge1xuICAgICAgICB0aGlzLm9wZW5EcmlsbGRvd25EcmF3ZXIoXG4gICAgICAgICAgZXZlbnQuYWN0aW9uLnRhcmdldFJlcG9ydElkLFxuICAgICAgICAgIGV2ZW50LnBhcmFtZXRlcnMsXG4gICAgICAgICAgZXZlbnQucm93LFxuICAgICAgICAgIGV2ZW50LmFjdGlvblxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9wZW5EcmlsbGRvd25EcmF3ZXIoXG4gICAgdGFyZ2V0UmVwb3J0SWQ6IHN0cmluZyxcbiAgICBwYXJhbWV0ZXJzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICByb3c6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgIGFjdGlvbj86IEdyaWRSb3dDbGlja0FjdGlvblxuICApOiB2b2lkIHtcbiAgICB0aGlzLmFjdGl2ZURyYXdlclRhcmdldElkID0gdGFyZ2V0UmVwb3J0SWQ7XG4gICAgdGhpcy5hY3RpdmVEcmF3ZXJSb3cgPSByb3c7XG4gICAgdGhpcy5hY3RpdmVEcmF3ZXJBY3Rpb24gPSBhY3Rpb247XG5cbiAgICB0aGlzLmRyYXdlclBhcmFtZXRlcnMuc2V0KHBhcmFtZXRlcnMpO1xuICAgIHRoaXMuZHJhd2VyV2lkdGguc2V0KGFjdGlvbj8uZHJhd2VyV2lkdGggfHwgJzc2MHB4Jyk7XG4gICAgdGhpcy5kcmF3ZXJUaXRsZS5zZXQoYWN0aW9uPy5kcmF3ZXJUaXRsZSB8fCAnUmVwb3J0IERldGFpbHMnKTtcbiAgICB0aGlzLmRyYXdlclJlc3VsdERhdGEuc2V0KG51bGwpO1xuICAgIHRoaXMuZHJhd2VyRGVmaW5pdGlvbi5zZXQobnVsbCk7XG4gICAgdGhpcy5kcmF3ZXJFcnJvci5zZXQobnVsbCk7XG4gICAgdGhpcy5pc0RyYXdlckxvYWRpbmcuc2V0KHRydWUpO1xuICAgIHRoaXMuZHJhd2VyTG9hZGluZ01lc3NhZ2Uuc2V0KCdMb2FkaW5nIGRyaWxsLWRvd24gZGV0YWlscy4uLicpO1xuICAgIHRoaXMuaXNEcmF3ZXJPcGVuLnNldCh0cnVlKTtcblxuICAgIC8vIENvbXB1dGUgZnJpZW5kbHkgY29udGV4dCBiYWRnZVxuICAgIGNvbnN0IGVudHJpZXMgPSBPYmplY3QuZW50cmllcyhwYXJhbWV0ZXJzKS5maWx0ZXIoKFtfLCB2XSkgPT4gdiAhPT0gdW5kZWZpbmVkICYmIHYgIT09IG51bGwgJiYgdiAhPT0gJycpO1xuICAgIGlmIChlbnRyaWVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGJhZGdlVGV4dCA9IGVudHJpZXMuc2xpY2UoMCwgMikubWFwKChbaywgdl0pID0+IGAke2t9OiAke3Z9YCkuam9pbignIHwgJyk7XG4gICAgICB0aGlzLmRyYXdlckNvbnRleHRCYWRnZS5zZXQoYmFkZ2VUZXh0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kcmF3ZXJDb250ZXh0QmFkZ2Uuc2V0KG51bGwpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5wZXJzaXN0ZW5jZUFkYXB0ZXIpIHtcbiAgICAgIHRoaXMuZHJhd2VyRXJyb3Iuc2V0KFxuICAgICAgICBgUmVwb3J0IHBlcnNpc3RlbmNlIGFkYXB0ZXIgbm90IHByb3ZpZGVkIHRvIGxvYWQgZHJpbGwtZG93biByZXBvcnQgXCIke3RhcmdldFJlcG9ydElkfVwiLmBcbiAgICAgICk7XG4gICAgICB0aGlzLmlzRHJhd2VyTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucGVyc2lzdGVuY2VBZGFwdGVyLmxvYWQodGFyZ2V0UmVwb3J0SWQpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoZGVmKSA9PiB7XG4gICAgICAgIHRoaXMuZHJhd2VyRGVmaW5pdGlvbi5zZXQoZGVmKTtcbiAgICAgICAgaWYgKCFhY3Rpb24/LmRyYXdlclRpdGxlKSB7XG4gICAgICAgICAgdGhpcy5kcmF3ZXJUaXRsZS5zZXQoZGVmLm5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIC8vIEF1dG8tZXhlY3V0ZSB0YXJnZXQgY2hpbGQgcmVwb3J0XG4gICAgICAgIHRoaXMuZXhlY3V0ZURyYXdlclJlcG9ydChkZWYsIHBhcmFtZXRlcnMpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyKSA9PiB7XG4gICAgICAgIHRoaXMuZHJhd2VyRXJyb3Iuc2V0KFxuICAgICAgICAgIGVycj8ubWVzc2FnZSA/PyBgRmFpbGVkIHRvIGxvYWQgZHJpbGxkb3duIHJlcG9ydCBcIiR7dGFyZ2V0UmVwb3J0SWR9XCJgXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuaXNEcmF3ZXJMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBleGVjdXRlRHJhd2VyUmVwb3J0KFxuICAgIGRlZjogUmVwb3J0RGVmaW5pdGlvbixcbiAgICBwYXJhbWV0ZXJzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICApOiB2b2lkIHtcbiAgICBpZiAoIWRlZi5ncmlkKSB7XG4gICAgICB0aGlzLmlzRHJhd2VyTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmV4ZWN1dGlvblNlcnZpY2UpIHtcbiAgICAgIHRoaXMuZHJhd2VyTG9hZGluZ01lc3NhZ2Uuc2V0KCdGZXRjaGluZyBkcmlsbC1kb3duIGRhdGEuLi4nKTtcbiAgICAgIHRoaXMuZXhlY3V0aW9uU2VydmljZS5leGVjdXRlKGRlZiwgcGFyYW1ldGVycykuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKGRhdGEpID0+IHtcbiAgICAgICAgICB0aGlzLmRyYXdlclJlc3VsdERhdGEuc2V0KGRhdGEpO1xuICAgICAgICAgIHRoaXMuaXNEcmF3ZXJMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XG4gICAgICAgICAgdGhpcy5kcmF3ZXJFcnJvci5zZXQoZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6IFN0cmluZyhlcnIpKTtcbiAgICAgICAgICB0aGlzLmlzRHJhd2VyTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZHMgPSBkZWYuZGF0YVNvdXJjZXMuZmluZChcbiAgICAgIChkKSA9PiBkLmlkID09PSBkZWYuZ3JpZD8uZGF0YVNvdXJjZUlkIHx8IGQubmFtZSA9PT0gZGVmLmdyaWQ/LmRhdGFTb3VyY2VJZFxuICAgICkgfHwgZGVmLmRhdGFTb3VyY2VzWzBdO1xuXG4gICAgaWYgKCFkcyB8fCAhdGhpcy5kYXRhU291cmNlQWRhcHRlcikge1xuICAgICAgdGhpcy5pc0RyYXdlckxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5zZXNzaW9uU2VydmljZT8uZ2V0Q3VycmVudFNlc3Npb25Db250ZXh0KCkgPz8ge307XG4gICAgY29uc3QgZXhlY3V0aW9uUGFyYW1zID0geyAuLi5zZXNzaW9uLCAuLi5wYXJhbWV0ZXJzIH07XG5cbiAgICB0aGlzLmRhdGFTb3VyY2VBZGFwdGVyLmV4ZWN1dGUoZHMsIGV4ZWN1dGlvblBhcmFtcykuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChkYXRhKSA9PiB7XG4gICAgICAgIHRoaXMuZHJhd2VyUmVzdWx0RGF0YS5zZXQoZGF0YSk7XG4gICAgICAgIHRoaXMuaXNEcmF3ZXJMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnIpID0+IHtcbiAgICAgICAgdGhpcy5kcmF3ZXJFcnJvci5zZXQoZXJyPy5tZXNzYWdlID8/ICdGYWlsZWQgdG8gZXhlY3V0ZSBkcmlsbC1kb3duIGRhdGEgc291cmNlLicpO1xuICAgICAgICB0aGlzLmlzRHJhd2VyTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIG9uRHJhd2VyRXhlY3V0ZShldmVudDoge1xuICAgIGRlZmluaXRpb246IFJlcG9ydERlZmluaXRpb247XG4gICAgcGFyYW1ldGVyczogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIH0pOiB2b2lkIHtcbiAgICB0aGlzLmV4ZWN1dGVEcmF3ZXJSZXBvcnQoZXZlbnQuZGVmaW5pdGlvbiwgZXZlbnQucGFyYW1ldGVycyk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6a2V5ZG93bi5lc2NhcGUnKVxuICBvbkVzY2FwZVByZXNzZWQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNEcmF3ZXJPcGVuKCkpIHtcbiAgICAgIHRoaXMuY2xvc2VEcmF3ZXIoKTtcbiAgICB9XG4gIH1cblxuICBjbG9zZURyYXdlcigpOiB2b2lkIHtcbiAgICB0aGlzLmlzRHJhd2VyT3Blbi5zZXQoZmFsc2UpO1xuICAgIHRoaXMuZHJhd2VyRGVmaW5pdGlvbi5zZXQobnVsbCk7XG4gICAgdGhpcy5kcmF3ZXJSZXN1bHREYXRhLnNldChudWxsKTtcbiAgICB0aGlzLmRyYXdlckVycm9yLnNldChudWxsKTtcbiAgfVxuXG4gIHJldHJ5RHJhd2VyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFjdGl2ZURyYXdlclRhcmdldElkKSB7XG4gICAgICB0aGlzLm9wZW5EcmlsbGRvd25EcmF3ZXIoXG4gICAgICAgIHRoaXMuYWN0aXZlRHJhd2VyVGFyZ2V0SWQsXG4gICAgICAgIHRoaXMuZHJhd2VyUGFyYW1ldGVycygpLFxuICAgICAgICB0aGlzLmFjdGl2ZURyYXdlclJvdyxcbiAgICAgICAgdGhpcy5hY3RpdmVEcmF3ZXJBY3Rpb25cbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcmV0cnkoKTogdm9pZCB7XG4gICAgY29uc3QgaWQgPSB0aGlzLnJlcG9ydElkKCk7XG4gICAgaWYgKGlkKSB7XG4gICAgICB0aGlzLmxvYWRSZXBvcnQoaWQpO1xuICAgIH1cbiAgfVxufVxuXG4iXX0=
|
|
503
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LXJ1bnRpbWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYndheXMtcmVwb3J0L3NyYy9saWIvZmVhdHVyZXMvcnVudGltZS9yZXBvcnQtcnVudGltZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLE1BQU0sRUFDTixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUsvQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUNuRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUMzRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUNqRyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUN2RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFxVHBFLE1BQU0sT0FBTyxzQkFBc0I7SUFDaEIsa0JBQWtCLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDMUUsaUJBQWlCLEdBQUcsTUFBTSxDQUFDLHVCQUF1QixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDeEUsY0FBYyxHQUFHLE1BQU0sQ0FBQywyQkFBMkIsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3pFLGdCQUFnQixHQUFHLE1B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Q0FBQztZQUM5QixJQUFJLENBQUMsbUJBQW1CLENBQ3RCLElBQUksQ0FBQyxvQkFBb0IsRUFDekIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEVBQ3ZCLElBQUksQ0FBQyxlQUFlLEVBQ3BCLElBQUksQ0FBQyxrQkFBa0IsQ0FDeEIsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSztRQUNILE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMzQixJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ1AsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN0QixDQUFDO0lBQ0gsQ0FBQzt3R0FwYVUsc0JBQXNCOzRGQUF0QixzQkFBc0Isay9CQS9TdkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNHVCxtNkdBdkdTLFlBQVksK0JBQUUsd0JBQXdCLDZVQUFFLGdCQUFnQjs7NEZBZ1R2RCxzQkFBc0I7a0JBblRsQyxTQUFTOytCQUNFLGlDQUFpQyxjQUMvQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsd0JBQXdCLEVBQUUsZ0JBQWdCLENBQUMsWUFDekQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNHVCxtQkF1TWdCLHVCQUF1QixDQUFDLE1BQU07d0RBNkcvQyxRQUFRO3NCQURQLFlBQVk7dUJBQUMsdUJBQXVCO2dCQTZSckMsZUFBZTtzQkFEZCxZQUFZO3VCQUFDLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIGNvbXB1dGVkLFxuICBlZmZlY3QsXG4gIEhvc3RMaXN0ZW5lcixcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgb3V0cHV0LFxuICBzaWduYWwsXG4gIHVudHJhY2tlZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUmVwb3J0RGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWxzL3JlcG9ydC1kZWZpbml0aW9uLm1vZGVsJztcbmltcG9ydCB7IFJlcG9ydENvbXBvbmVudERlZmluaXRpb24gfSBmcm9tICcuLi8uLi9jb3JlL21vZGVscy9yZXBvcnQtY29tcG9uZW50Lm1vZGVsJztcbmltcG9ydCB7IENvbXBvbmVudEFjdGlvbkRlZmluaXRpb24gfSBmcm9tICcuLi8uLi9jb3JlL21vZGVscy9jb21wb25lbnQtZXZlbnQubW9kZWwnO1xuaW1wb3J0IHsgR3JpZFJvd0NsaWNrQWN0aW9uIH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbHMvcmVwb3J0LWdyaWQubW9kZWwnO1xuaW1wb3J0IHsgUmVwb3J0UGVyc2lzdGVuY2VBZGFwdGVyIH0gZnJvbSAnLi4vLi4vZGF0YS1hY2Nlc3MvY29udHJhY3RzL3JlcG9ydC1wZXJzaXN0ZW5jZS5jb250cmFjdCc7XG5pbXBvcnQgeyBSZXBvcnREYXRhU291cmNlQWRhcHRlciB9IGZyb20gJy4uLy4uL2RhdGEtYWNjZXNzL2NvbnRyYWN0cy9kYXRhLXNvdXJjZS5jb250cmFjdCc7XG5pbXBvcnQgeyBSZXBvcnRTZXNzaW9uQ29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL3JlcG9ydC1zZXNzaW9uLWNvbnRleHQuc2VydmljZSc7XG5pbXBvcnQgeyBEeW5hbWljUmVuZGVyZXJDb21wb25lbnQgfSBmcm9tICcuL2R5bmFtaWMtcmVuZGVyZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFJwdEljb25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9wcmltaXRpdmVzL2NvbXBvbmVudHMvaWNvbi9ycHQtaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgUmVwb3J0RXhlY3V0aW9uU2VydmljZSB9IGZyb20gJy4vcmVwb3J0LWV4ZWN1dGlvbi5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncnB0LXJlcG9ydC1ydW50aW1lLCBycHQtcnVudGltZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIER5bmFtaWNSZW5kZXJlckNvbXBvbmVudCwgUnB0SWNvbkNvbXBvbmVudF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cInJwdC1ydW50aW1lLWNvbnRhaW5lclwiPlxuICAgICAgQGlmIChpc0xvYWRpbmcoKSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwicnB0LXN0YXRlLWNhcmQgcnB0LWxvYWRpbmctc3RhdGVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicnB0LXNwaW5uZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2Rpdj5cbiAgICAgICAgICA8cCBjbGFzcz1cInJwdC1zdGF0ZS10ZXh0XCI+e3sgbG9hZGluZ01lc3NhZ2UoKSB9fTwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9IEBlbHNlIGlmIChlcnJvck1lc3NhZ2UoKSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwicnB0LXN0YXRlLWNhcmQgcnB0LWVycm9yLXN0YXRlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJwdC1lcnJvci1pY29uXCI+PHJwdC1pY29uIG5hbWU9XCJhbGVydC10cmlhbmdsZVwiIFtzaXplXT1cIjMyXCIgY29sb3I9XCIjZWY0NDQ0XCIgLz48L2Rpdj5cbiAgICAgICAgICA8cCBjbGFzcz1cInJwdC1lcnJvci10aXRsZVwiPlVuYWJsZSB0byBydW4gcmVwb3J0PC9wPlxuICAgICAgICAgIDxwIGNsYXNzPVwicnB0LXN0YXRlLXRleHRcIj57eyBlcnJvck1lc3NhZ2UoKSB9fTwvcD5cbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInJwdC1yZXRyeS1idG5cIiAoY2xpY2spPVwicmV0cnkoKVwiPlJldHJ5PC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfSBAZWxzZSBpZiAoY3VycmVudERlZmluaXRpb24oKSkge1xuICAgICAgICA8cnB0LWR5bmFtaWMtcmVuZGVyZXJcbiAgICAgICAgICBbZGVmaW5pdGlvbl09XCJjdXJyZW50RGVmaW5pdGlvbigpIVwiXG4gICAgICAgICAgW3Jlc3VsdERhdGFdPVwicmVzdWx0RGF0YSgpXCJcbiAgICAgICAgICAoZXhlY3V0ZVJlcXVlc3RlZCk9XCJvbkV4ZWN1dGVSZXBvcnQoJGV2ZW50KVwiXG4gICAgICAgICAgKHJlc2V0UmVxdWVzdGVkKT1cIm9uUmVzZXRSZXBvcnQoJGV2ZW50KVwiXG4gICAgICAgICAgKGV4cG9ydFJlcXVlc3RlZCk9XCJvbkV4cG9ydFJlcXVlc3RlZCgkZXZlbnQpXCJcbiAgICAgICAgICAocHJpbnRSZXF1ZXN0ZWQpPVwib25QcmludFJlcXVlc3RlZCgkZXZlbnQpXCJcbiAgICAgICAgICAoY3VzdG9tQWN0aW9uVHJpZ2dlcmVkKT1cIm9uQ3VzdG9tQWN0aW9uKCRldmVudClcIlxuICAgICAgICAgIChncmlkU3RhdGVDaGFuZ2VkKT1cImdyaWRTdGF0ZUNoYW5nZS5lbWl0KCRldmVudClcIlxuICAgICAgICAgIChjb2x1bW5EZWZzQ2hhbmdlZCk9XCJjb2x1bW5EZWZzQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgKHJvd0FjdGlvblRyaWdnZXJlZCk9XCJvblJvd0FjdGlvblRyaWdnZXJlZCgkZXZlbnQpXCJcbiAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uU2VsZWN0aW9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAvPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJycHQtc3RhdGUtY2FyZCBycHQtZW1wdHktc3RhdGVcIj5cbiAgICAgICAgICA8cCBjbGFzcz1cInJwdC1zdGF0ZS10ZXh0XCI+Tm8gcmVwb3J0IGRlZmluaXRpb24gYXZhaWxhYmxlLjwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG5cbiAgICAgIDwhLS0gTWFzdGVyLURldGFpbCBTbGlkZS1PdmVyIERyYXdlciAtLT5cbiAgICAgIEBpZiAoaXNEcmF3ZXJPcGVuKCkpIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwicnB0LWRyYXdlci1iYWNrZHJvcFwiXG4gICAgICAgICAgKGNsaWNrKT1cImNsb3NlRHJhd2VyKClcIlxuICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgID48L2Rpdj5cbiAgICAgICAgPGFzaWRlXG4gICAgICAgICAgY2xhc3M9XCJycHQtZHJhd2VyLXBhbmVsXCJcbiAgICAgICAgICByb2xlPVwiZGlhbG9nXCJcbiAgICAgICAgICBhcmlhLW1vZGFsPVwidHJ1ZVwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJkcmF3ZXJUaXRsZSgpXCJcbiAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiZHJhd2VyV2lkdGgoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8IS0tIERyYXdlciBIZWFkZXIgLS0+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJwdC1kcmF3ZXItaGVhZGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicnB0LWRyYXdlci1oZWFkZXItbGVmdFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicnB0LWRyYXdlci10aXRsZS1yb3dcIj5cbiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJycHQtZHJhd2VyLXRpdGxlXCI+e3sgZHJhd2VyVGl0bGUoKSB9fTwvaDM+XG4gICAgICAgICAgICAgICAgQGlmIChkcmF3ZXJDb250ZXh0QmFkZ2UoKSkge1xuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJycHQtZHJhd2VyLWJhZGdlXCIgW3RpdGxlXT1cImRyYXdlckNvbnRleHRCYWRnZSgpIVwiPnt7IGRyYXdlckNvbnRleHRCYWRnZSgpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIEBpZiAoZHJhd2VyRGVmaW5pdGlvbigpPy5kZXNjcmlwdGlvbikge1xuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwicnB0LWRyYXdlci1kZXNjXCI+e3sgZHJhd2VyRGVmaW5pdGlvbigpPy5kZXNjcmlwdGlvbiB9fTwvcD5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBjbGFzcz1cInJwdC1kcmF3ZXItY2xvc2UtYnRuXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImNsb3NlRHJhd2VyKClcIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2xvc2UgZGV0YWlsc1wiXG4gICAgICAgICAgICAgIHRpdGxlPVwiQ2xvc2UgZHJhd2VyIChFc2MpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAg4pyVXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwhLS0gRHJhd2VyIEJvZHkgLS0+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJwdC1kcmF3ZXItYm9keVwiPlxuICAgICAgICAgICAgQGlmIChpc0RyYXdlckxvYWRpbmcoKSkge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicnB0LXN0YXRlLWNhcmQgcnB0LWRyYXdlci1sb2FkaW5nXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJwdC1zcGlubmVyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJycHQtc3RhdGUtdGV4dFwiPnt7IGRyYXdlckxvYWRpbmdNZXNzYWdlKCkgfX08L3A+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfSBAZWxzZSBpZiAoZHJhd2VyRXJyb3IoKSkge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicnB0LXN0YXRlLWNhcmQgcnB0LWVycm9yLXN0YXRlXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJwdC1lcnJvci1pY29uXCI+PHJwdC1pY29uIG5hbWU9XCJhbGVydC10cmlhbmdsZVwiIFtzaXplXT1cIjI4XCIgY29sb3I9XCIjZWY0NDQ0XCIgLz48L2Rpdj5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInJwdC1lcnJvci10aXRsZVwiPlVuYWJsZSB0byBsb2FkIGRldGFpbHM8L3A+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJycHQtc3RhdGUtdGV4dFwiPnt7IGRyYXdlckVycm9yKCkgfX08L3A+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJycHQtcmV0cnktYnRuXCIgKGNsaWNrKT1cInJldHJ5RHJhd2VyKClcIj5SZXRyeTwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH0gQGVsc2UgaWYgKGRyYXdlckRlZmluaXRpb24oKSkge1xuICAgICAgICAgICAgICA8cnB0LWR5bmFtaWMtcmVuZGVyZXJcbiAgICAgICAgICAgICAgICBbZGVmaW5pdGlvbl09XCJkcmF3ZXJEZWZpbml0aW9uKCkhXCJcbiAgICAgICAgICAgICAgICBbaW5pdGlhbFZhbHVlc109XCJkcmF3ZXJQYXJhbWV0ZXJzKClcIlxuICAgICAgICAgICAgICAgIFtyZXN1bHREYXRhXT1cImRyYXdlclJlc3VsdERhdGEoKVwiXG4gICAgICAgICAgICAgICAgKGV4ZWN1dGVSZXF1ZXN0ZWQpPVwib25EcmF3ZXJFeGVjdXRlKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChleHBvcnRSZXF1ZXN0ZWQpPVwib25FeHBvcnRSZXF1ZXN0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKHByaW50UmVxdWVzdGVkKT1cIm9uUHJpbnRSZXF1ZXN0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGN1c3RvbUFjdGlvblRyaWdnZXJlZCk9XCJvbkN1c3RvbUFjdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAocm93QWN0aW9uVHJpZ2dlcmVkKT1cIm9uUm93QWN0aW9uVHJpZ2dlcmVkKCRldmVudClcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2FzaWRlPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtgXG4gICAgOmhvc3Qge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1ycHQtZm9udC1mYW1pbHksIGluaGVyaXQpO1xuICAgIH1cbiAgICAucnB0LXJ1bnRpbWUtY29udGFpbmVyIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB9XG4gICAgLnJwdC1zdGF0ZS1jYXJkIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgcGFkZGluZzogNDhweCAyNHB4O1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgYmFja2dyb3VuZDogdmFyKC0tcnB0LWNvbG9yLWJnLCAjZmZmZmZmKTtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXJwdC1jb2xvci1ib3JkZXIsICNjYmQ1ZTEpO1xuICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcnB0LWJvcmRlci1yYWRpdXMtbGcsIDhweCk7XG4gICAgICBtYXJnaW46IDI0cHggMDtcbiAgICB9XG4gICAgLnJwdC1zdGF0ZS10ZXh0IHtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtY29sb3ItdGV4dC1tdXRlZCwgIzY0NzQ4Yik7XG4gICAgICBmb250LXNpemU6IHZhcigtLXJwdC1mb250LXNpemUtYmFzZSwgMC44NzVyZW0pO1xuICAgICAgbWFyZ2luOiA4cHggMCAwIDA7XG4gICAgfVxuICAgIC5ycHQtZXJyb3ItdGl0bGUge1xuICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtY29sb3ItZGFuZ2VyLCAjZWY0NDQ0KTtcbiAgICAgIG1hcmdpbjogOHB4IDAgMCAwO1xuICAgICAgZm9udC1zaXplOiB2YXIoLS1ycHQtZm9udC1zaXplLWJhc2UsIDAuODc1cmVtKTtcbiAgICB9XG4gICAgLnJwdC1zcGlubmVyIHtcbiAgICAgIHdpZHRoOiAzNnB4O1xuICAgICAgaGVpZ2h0OiAzNnB4O1xuICAgICAgYm9yZGVyOiAzcHggc29saWQgdmFyKC0tcnB0LWNvbG9yLWJvcmRlciwgI2NiZDVlMSk7XG4gICAgICBib3JkZXItdG9wLWNvbG9yOiB2YXIoLS1ycHQtY29sb3ItcHJpbWFyeSwgIzI1NjNlYik7XG4gICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICBhbmltYXRpb246IHJwdC1zcGluIDgwMG1zIGxpbmVhciBpbmZpbml0ZTtcbiAgICB9XG4gICAgQGtleWZyYW1lcyBycHQtc3BpbiB7XG4gICAgICB0byB7IHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH1cbiAgICB9XG4gICAgLnJwdC1yZXRyeS1idG4ge1xuICAgICAgbWFyZ2luLXRvcDogMTZweDtcbiAgICAgIHBhZGRpbmc6IDZweCAxNnB4O1xuICAgICAgZm9udC1zaXplOiB2YXIoLS1ycHQtZm9udC1zaXplLXNtLCAwLjc1cmVtKTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXJwdC1jb2xvci1wcmltYXJ5LCAjMjU2M2ViKTtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtY29sb3ItdGV4dC1pbnZlcnNlLCAjZmZmZmZmKTtcbiAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJwdC1ib3JkZXItcmFkaXVzLCA2cHgpO1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMTIwbXMgZWFzZTtcbiAgICB9XG4gICAgLnJwdC1yZXRyeS1idG46aG92ZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzFkNGVkODtcbiAgICB9XG5cbiAgICAvKiBTbGlkZS1vdmVyIERldGFpbCBEcmF3ZXIgKi9cbiAgICAucnB0LWRyYXdlci1iYWNrZHJvcCB7XG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICBpbnNldDogMDtcbiAgICAgIGJhY2tncm91bmQ6IHJnYmEoMTUsIDIzLCA0MiwgMC40NSk7XG4gICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoOHB4KTtcbiAgICAgIC13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOiBibHVyKDhweCk7XG4gICAgICB6LWluZGV4OiAxMDAwO1xuICAgICAgYW5pbWF0aW9uOiBycHQtZmFkZS1pbiAxODBtcyBlYXNlLW91dCBmb3J3YXJkcztcbiAgICB9XG5cbiAgICAucnB0LWRyYXdlci1wYW5lbCB7XG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICB0b3A6IDA7XG4gICAgICByaWdodDogMDtcbiAgICAgIGJvdHRvbTogMDtcbiAgICAgIG1heC13aWR0aDogOTV2dztcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLXJwdC1jb2xvci1zdXJmYWNlLCAjZmZmZmZmKTtcbiAgICAgIGJveC1zaGFkb3c6IC0xMnB4IDAgNDBweCByZ2JhKDE1LCAyMywgNDIsIDAuMTYpO1xuICAgICAgei1pbmRleDogMTAwMTtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgYW5pbWF0aW9uOiBycHQtc2xpZGUtaW4tcmlnaHQgMjQwbXMgY3ViaWMtYmV6aWVyKDAuMTYsIDEsIDAuMywgMSkgZm9yd2FyZHM7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCB2YXIoLS1ycHQtY29sb3ItYm9yZGVyLXN1YnRsZSwgI2UyZThmMCk7XG4gICAgfVxuXG4gICAgOmhvc3QtY29udGV4dChbZGlyPVwicnRsXCJdKSAucnB0LWRyYXdlci1wYW5lbCB7XG4gICAgICByaWdodDogYXV0bztcbiAgICAgIGxlZnQ6IDA7XG4gICAgICBib3gtc2hhZG93OiA4cHggMCAzMnB4IHJnYmEoMTUsIDIzLCA0MiwgMC4yKTtcbiAgICAgIGFuaW1hdGlvbi1uYW1lOiBycHQtc2xpZGUtaW4tbGVmdDtcbiAgICAgIGJvcmRlci1sZWZ0OiBub25lO1xuICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgdmFyKC0tcnB0LWNvbG9yLWJvcmRlciwgI2NiZDVlMSk7XG4gICAgfVxuXG4gICAgQGtleWZyYW1lcyBycHQtZmFkZS1pbiB7XG4gICAgICBmcm9tIHsgb3BhY2l0eTogMDsgfVxuICAgICAgdG8geyBvcGFjaXR5OiAxOyB9XG4gICAgfVxuXG4gICAgQGtleWZyYW1lcyBycHQtc2xpZGUtaW4tcmlnaHQge1xuICAgICAgZnJvbSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTsgfVxuICAgICAgdG8geyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7IH1cbiAgICB9XG5cbiAgICBAa2V5ZnJhbWVzIHJwdC1zbGlkZS1pbi1sZWZ0IHtcbiAgICAgIGZyb20geyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpOyB9XG4gICAgICB0byB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsgfVxuICAgIH1cblxuICAgIC5ycHQtZHJhd2VyLWhlYWRlciB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICBnYXA6IDEycHg7XG4gICAgICBwYWRkaW5nOiAxNnB4IDIwcHg7XG4gICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tcnB0LWNvbG9yLWJvcmRlciwgI2UyZThmMCk7XG4gICAgICBiYWNrZ3JvdW5kOiAjZjhmYWZjO1xuICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgfVxuXG4gICAgLnJwdC1kcmF3ZXItaGVhZGVyLWxlZnQge1xuICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgZmxleDogMTtcbiAgICB9XG5cbiAgICAucnB0LWRyYXdlci10aXRsZS1yb3cge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBnYXA6IDEwcHg7XG4gICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgfVxuXG4gICAgLnJwdC1kcmF3ZXItdGl0bGUge1xuICAgICAgZm9udC1zaXplOiAxLjEyNXJlbTtcbiAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICBjb2xvcjogIzBmMTcyYTtcbiAgICAgIG1hcmdpbjogMDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjM7XG4gICAgfVxuXG4gICAgLnJwdC1kcmF3ZXItYmFkZ2Uge1xuICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgcGFkZGluZzogMnB4IDhweDtcbiAgICAgIGZvbnQtc2l6ZTogMC43MjVyZW07XG4gICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgYmFja2dyb3VuZDogI2VmZjZmZjtcbiAgICAgIGNvbG9yOiAjMjU2M2ViO1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgI2JmZGJmZTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDk5OTlweDtcbiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICBtYXgtd2lkdGg6IDMwMHB4O1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgIH1cblxuICAgIC5ycHQtZHJhd2VyLWRlc2Mge1xuICAgICAgZm9udC1zaXplOiAwLjhyZW07XG4gICAgICBjb2xvcjogIzY0NzQ4YjtcbiAgICAgIG1hcmdpbjogNHB4IDAgMCAwO1xuICAgIH1cblxuICAgIC5ycHQtZHJhd2VyLWNsb3NlLWJ0biB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIHdpZHRoOiAzMnB4O1xuICAgICAgaGVpZ2h0OiAzMnB4O1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXItcmFkaXVzOiA2cHg7XG4gICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgIGNvbG9yOiAjNjQ3NDhiO1xuICAgICAgZm9udC1zaXplOiAxLjEyNXJlbTtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIHRyYW5zaXRpb246IGFsbCAxMjBtcyBlYXNlO1xuICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgfVxuXG4gICAgLnJwdC1kcmF3ZXItY2xvc2UtYnRuOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6ICNlMmU4ZjA7XG4gICAgICBjb2xvcjogIzBmMTcyYTtcbiAgICB9XG5cbiAgICAucnB0LWRyYXdlci1ib2R5IHtcbiAgICAgIGZsZXg6IDE7XG4gICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgICAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICAgICAgcGFkZGluZzogOHB4IDEycHg7XG4gICAgfVxuXG4gICAgLnJwdC1kcmF3ZXItbG9hZGluZyB7XG4gICAgICBtYXJnaW46IDQ4cHggYXV0bztcbiAgICAgIG1heC13aWR0aDogNDAwcHg7XG4gICAgfVxuICBgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFJlcG9ydFJ1bnRpbWVDb21wb25lbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IHBlcnNpc3RlbmNlQWRhcHRlciA9IGluamVjdChSZXBvcnRQZXJzaXN0ZW5jZUFkYXB0ZXIsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGF0YVNvdXJjZUFkYXB0ZXIgPSBpbmplY3QoUmVwb3J0RGF0YVNvdXJjZUFkYXB0ZXIsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2Vzc2lvblNlcnZpY2UgPSBpbmplY3QoUmVwb3J0U2Vzc2lvbkNvbnRleHRTZXJ2aWNlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBwcml2YXRlIHJlYWRvbmx5IGV4ZWN1dGlvblNlcnZpY2UgPSBpbmplY3QoUmVwb3J0RXhlY3V0aW9uU2VydmljZSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICAvKiogUmVwb3J0IElEIHRvIGxvYWQgdmlhIHBlcnNpc3RlbmNlIGFkYXB0ZXIgKi9cbiAgcmVhZG9ubHkgcmVwb3J0SWQgPSBpbnB1dDxzdHJpbmc+KCk7XG5cbiAgLyoqIERpcmVjdGx5IHBhc3NlZCByZXBvcnQgZGVmaW5pdGlvbiAoc2tpcHMgcGVyc2lzdGVuY2UgYWRhcHRlcikgKi9cbiAgcmVhZG9ubHkgZGVmaW5pdGlvbiA9IGlucHV0PFJlcG9ydERlZmluaXRpb24gfCBudWxsPihudWxsLCB7IGFsaWFzOiAncmVwb3J0JyB9KTtcblxuICAvKiogT3B0aW9uYWwgcHJlLWxvYWRlZCBvciBjYW52YXMtc2hhcmVkIHJlc3VsdCBkYXRhICovXG4gIHJlYWRvbmx5IGluaXRpYWxEYXRhID0gaW5wdXQ8dW5rbm93bltdIHwgbnVsbD4obnVsbCwgeyBhbGlhczogJ3Jlc3VsdERhdGEnIH0pO1xuXG4gIHJlYWRvbmx5IHJlc2V0UmVxdWVzdGVkID0gb3V0cHV0PHsgZGVmaW5pdGlvbjogUmVwb3J0RGVmaW5pdGlvbiB9PigpO1xuICByZWFkb25seSBleGVjdXRlID0gb3V0cHV0PHtcbiAgICBkZWZpbml0aW9uOiBSZXBvcnREZWZpbml0aW9uO1xuICAgIHBhcmFtZXRlcnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIGRhdGE6IHVua25vd25bXSB8IG51bGw7XG4gIH0+KCk7XG4gIHJlYWRvbmx5IGV4ZWN1dGVkID0gb3V0cHV0PHtcbiAgICBkZWZpbml0aW9uOiBSZXBvcnREZWZpbml0aW9uO1xuICAgIHBhcmFtZXRlcnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIGRhdGE6IHVua25vd25bXSB8IG51bGw7XG4gIH0+KCk7XG4gIHJlYWRvbmx5IGV4cG9ydFJlcXVlc3RlZCA9IG91dHB1dDx7XG4gICAgZm9ybWF0OiBzdHJpbmc7XG4gICAgZmlsZU5hbWU/OiBzdHJpbmc7XG4gICAgcGFyYW1ldGVyczogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgZGF0YTogdW5rbm93bltdIHwgbnVsbDtcbiAgfT4oKTtcbiAgcmVhZG9ubHkgcHJpbnRSZXF1ZXN0ZWQgPSBvdXRwdXQ8e1xuICAgIHJwdEZpbGVOYW1lPzogc3RyaW5nO1xuICAgIGV4cG9ydFR5cGU/OiBzdHJpbmc7XG4gICAgcGFyYW1ldGVyczogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIH0+KCk7XG4gIHJlYWRvbmx5IGN1c3RvbUFjdGlvblRyaWdnZXJlZCA9IG91dHB1dDx7XG4gICAgYWN0aW9uOiBDb21wb25lbnRBY3Rpb25EZWZpbml0aW9uO1xuICAgIGNvbXBvbmVudDogUmVwb3J0Q29tcG9uZW50RGVmaW5pdGlvbjtcbiAgICBwYXJhbWV0ZXJzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgfT4oKTtcbiAgcmVhZG9ubHkgZ3JpZFN0YXRlQ2hhbmdlID0gb3V0cHV0PGFueT4oKTtcbiAgcmVhZG9ubHkgY29sdW1uRGVmc0NoYW5nZSA9IG91dHB1dDxhbnk+KCk7XG4gIHJlYWRvbmx5IHNlbGVjdGlvbkNoYW5nZSA9IG91dHB1dDxhbnlbXT4oKTtcbiAgcmVhZG9ubHkgc2VsZWN0aW9uQ2hhbmdlZCA9IG91dHB1dDxhbnlbXT4oKTtcbiAgcmVhZG9ubHkgcm93QWN0aW9uVHJpZ2dlcmVkID0gb3V0cHV0PHtcbiAgICBhY3Rpb246IEdyaWRSb3dDbGlja0FjdGlvbjtcbiAgICByb3c6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIHBhcmFtZXRlcnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICB9PigpO1xuICByZWFkb25seSBkcmlsbGRvd25SZXF1ZXN0ZWQgPSBvdXRwdXQ8e1xuICAgIHRhcmdldFJlcG9ydElkOiBzdHJpbmc7XG4gICAgcGFyYW1ldGVyczogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgcm93OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgfT4oKTtcblxuICByZWFkb25seSBpbnRlcm5hbERlZmluaXRpb24gPSBzaWduYWw8UmVwb3J0RGVmaW5pdGlvbiB8IG51bGw+KG51bGwpO1xuICByZWFkb25seSByZXN1bHREYXRhID0gc2lnbmFsPHVua25vd25bXSB8IG51bGw+KG51bGwpO1xuICByZWFkb25seSBpc0xvYWRpbmcgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBsb2FkaW5nTWVzc2FnZSA9IHNpZ25hbDxzdHJpbmc+KCdMb2FkaW5nIHJlcG9ydC4uLicpO1xuICByZWFkb25seSBlcnJvck1lc3NhZ2UgPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgLy8gU2xpZGUtb3ZlciBEcmF3ZXIgU2lnbmFsc1xuICByZWFkb25seSBpc0RyYXdlck9wZW4gPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBkcmF3ZXJUaXRsZSA9IHNpZ25hbDxzdHJpbmc+KCdSZXBvcnQgRGV0YWlscycpO1xuICByZWFkb25seSBkcmF3ZXJXaWR0aCA9IHNpZ25hbDxzdHJpbmc+KCc3NjBweCcpO1xuICByZWFkb25seSBkcmF3ZXJEZWZpbml0aW9uID0gc2lnbmFsPFJlcG9ydERlZmluaXRpb24gfCBudWxsPihudWxsKTtcbiAgcmVhZG9ubHkgZHJhd2VyUGFyYW1ldGVycyA9IHNpZ25hbDxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oe30pO1xuICByZWFkb25seSBkcmF3ZXJSZXN1bHREYXRhID0gc2lnbmFsPHVua25vd25bXSB8IG51bGw+KG51bGwpO1xuICByZWFkb25seSBkcmF3ZXJDb250ZXh0QmFkZ2UgPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gIHJlYWRvbmx5IGlzRHJhd2VyTG9hZGluZyA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IGRyYXdlckxvYWRpbmdNZXNzYWdlID0gc2lnbmFsPHN0cmluZz4oJ0xvYWRpbmcgZHJpbGwtZG93biBkZXRhaWxzLi4uJyk7XG4gIHJlYWRvbmx5IGRyYXdlckVycm9yID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuXG4gIC8vIFByaXZhdGUgdHJhY2tlcnMgZm9yIGRyYXdlciByZXRyeVxuICBwcml2YXRlIGFjdGl2ZURyYXdlclRhcmdldElkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBhY3RpdmVEcmF3ZXJSb3c6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG4gIHByaXZhdGUgYWN0aXZlRHJhd2VyQWN0aW9uPzogR3JpZFJvd0NsaWNrQWN0aW9uO1xuXG4gIHJlYWRvbmx5IGN1cnJlbnREZWZpbml0aW9uID0gY29tcHV0ZWQ8UmVwb3J0RGVmaW5pdGlvbiB8IG51bGw+KCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5kZWZpbml0aW9uKCkgPz8gdGhpcy5pbnRlcm5hbERlZmluaXRpb24oKTtcbiAgfSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgZWZmZWN0KFxuICAgICAgKCkgPT4ge1xuICAgICAgICBjb25zdCBpZCA9IHRoaXMucmVwb3J0SWQoKTtcbiAgICAgICAgaWYgKGlkICYmICF0aGlzLmRlZmluaXRpb24oKSkge1xuICAgICAgICAgIHRoaXMubG9hZFJlcG9ydChpZCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICApO1xuXG4gICAgZWZmZWN0KFxuICAgICAgKCkgPT4ge1xuICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5pbml0aWFsRGF0YSgpO1xuICAgICAgICBpZiAoZGF0YSAhPT0gdW5kZWZpbmVkICYmIGRhdGEgIT09IG51bGwpIHtcbiAgICAgICAgICB0aGlzLnJlc3VsdERhdGEuc2V0KGRhdGEpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG4gICAgKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzprZXlkb3duLmVzY2FwZScpXG4gIG9uRXNjYXBlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzRHJhd2VyT3BlbigpKSB7XG4gICAgICB0aGlzLmNsb3NlRHJhd2VyKCk7XG4gICAgfVxuICB9XG5cbiAgbG9hZFJlcG9ydChpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnBlcnNpc3RlbmNlQWRhcHRlcikge1xuICAgICAgdGhpcy5lcnJvck1lc3NhZ2Uuc2V0KFxuICAgICAgICBgUmVwb3J0IHBlcnNpc3RlbmNlIGFkYXB0ZXIgbm90IHByb3ZpZGVkIHRvIGxvYWQgcmVwb3J0IFwiJHtpZH1cIi5gXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaXNMb2FkaW5nLnNldCh0cnVlKTtcbiAgICB0aGlzLmxvYWRpbmdNZXNzYWdlLnNldCgnTG9hZGluZyByZXBvcnQgZGVmaW5pdGlvbi4uLicpO1xuICAgIHRoaXMuZXJyb3JNZXNzYWdlLnNldChudWxsKTtcblxuICAgIHRoaXMucGVyc2lzdGVuY2VBZGFwdGVyLmxvYWQoaWQpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoZGVmKSA9PiB7XG4gICAgICAgIHRoaXMuaW50ZXJuYWxEZWZpbml0aW9uLnNldChkZWYpO1xuICAgICAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyKSA9PiB7XG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlLnNldChcbiAgICAgICAgICBlcnI/Lm1lc3NhZ2UgPz8gYEZhaWxlZCB0byBsb2FkIHJlcG9ydCBkZWZpbml0aW9uIHdpdGggSUQ6ICR7aWR9YFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIG9uRXhlY3V0ZVJlcG9ydChldmVudDoge1xuICAgIGRlZmluaXRpb246IFJlcG9ydERlZmluaXRpb247XG4gICAgcGFyYW1ldGVyczogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIH0pOiB2b2lkIHtcbiAgICBjb25zdCBncmlkID0gZXZlbnQuZGVmaW5pdGlvbi5ncmlkO1xuICAgIGlmICghZ3JpZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmV4ZWN1dGlvblNlcnZpY2UpIHtcbiAgICAgIGNvbnN0IG1pc3NpbmcgPSB0aGlzLmV4ZWN1dGlvblNlcnZpY2UuZ2V0TWlzc2luZ0ZpZWxkcyhldmVudC5kZWZpbml0aW9uLCBldmVudC5wYXJhbWV0ZXJzKTtcbiAgICAgIGlmIChtaXNzaW5nLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2Uuc2V0KGBNaXNzaW5nIHJlcXVpcmVkIGZpbHRlciB2YWx1ZXM6ICR7bWlzc2luZy5qb2luKCcsICcpfS4gUGxlYXNlIGVudGVyIHZhbHVlcyB0byBydW4uYCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KHRydWUpO1xuICAgICAgdGhpcy5sb2FkaW5nTWVzc2FnZS5zZXQoJ0V4ZWN1dGluZyByZXBvcnQgcXVlcnkuLi4nKTtcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlLnNldChudWxsKTtcblxuICAgICAgdGhpcy5leGVjdXRpb25TZXJ2aWNlLmV4ZWN1dGUoZXZlbnQuZGVmaW5pdGlvbiwgZXZlbnQucGFyYW1ldGVycykuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKGRhdGEpID0+IHtcbiAgICAgICAgICB0aGlzLnJlc3VsdERhdGEuc2V0KGRhdGEpO1xuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICAgICAgdGhpcy5leGVjdXRlLmVtaXQoeyBkZWZpbml0aW9uOiBldmVudC5kZWZpbml0aW9uLCBwYXJhbWV0ZXJzOiBldmVudC5wYXJhbWV0ZXJzLCBkYXRhIH0pO1xuICAgICAgICAgIHRoaXMuZXhlY3V0ZWQuZW1pdCh7IGRlZmluaXRpb246IGV2ZW50LmRlZmluaXRpb24sIHBhcmFtZXRlcnM6IGV2ZW50LnBhcmFtZXRlcnMsIGRhdGEgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2Uuc2V0KFxuICAgICAgICAgICAgZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6IFN0cmluZyhlcnIpXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZHMgPSBldmVudC5kZWZpbml0aW9uLmRhdGFTb3VyY2VzLmZpbmQoXG4gICAgICAoZCkgPT4gZC5pZCA9PT0gZ3JpZC5kYXRhU291cmNlSWQgfHwgZC5uYW1lID09PSBncmlkLmRhdGFTb3VyY2VJZFxuICAgICkgfHwgZXZlbnQuZGVmaW5pdGlvbi5kYXRhU291cmNlc1swXTtcblxuICAgIGlmICghZHMpIHtcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlLnNldChcbiAgICAgICAgYERhdGEgc291cmNlIFwiJHtncmlkLmRhdGFTb3VyY2VJZH1cIiByZWZlcmVuY2VkIGJ5IGdyaWQgbm90IGZvdW5kIGluIHJlcG9ydCBkZWZpbml0aW9uLmBcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmRhdGFTb3VyY2VBZGFwdGVyKSB7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZS5zZXQoXG4gICAgICAgICdObyBSZXBvcnREYXRhU291cmNlQWRhcHRlciBwcm92aWRlZCB0byBleGVjdXRlIHRoZSBkYXRhIHNvdXJjZS4nXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaXNMb2FkaW5nLnNldCh0cnVlKTtcbiAgICB0aGlzLmxvYWRpbmdNZXNzYWdlLnNldCgnRXhlY3V0aW5nIHJlcG9ydCBxdWVyeS4uLicpO1xuICAgIHRoaXMuZXJyb3JNZXNzYWdlLnNldChudWxsKTtcblxuICAgIGNvbnN0IHNlc3Npb24gPSB0aGlzLnNlc3Npb25TZXJ2aWNlPy5nZXRDdXJyZW50U2Vzc2lvbkNvbnRleHQoKSA/PyB7fTtcbiAgICBjb25zdCBleGVjdXRpb25QYXJhbXMgPSB7IC4uLnNlc3Npb24sIC4uLmV2ZW50LnBhcmFtZXRlcnMgfTtcblxuICAgIHRoaXMuZGF0YVNvdXJjZUFkYXB0ZXIuZXhlY3V0ZShkcywgZXhlY3V0aW9uUGFyYW1zKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGRhdGEpID0+IHtcbiAgICAgICAgdGhpcy5yZXN1bHREYXRhLnNldChkYXRhKTtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5leGVjdXRlLmVtaXQoeyBkZWZpbml0aW9uOiBldmVudC5kZWZpbml0aW9uLCBwYXJhbWV0ZXJzOiBldmVudC5wYXJhbWV0ZXJzLCBkYXRhIH0pO1xuICAgICAgICB0aGlzLmV4ZWN1dGVkLmVtaXQoeyBkZWZpbml0aW9uOiBldmVudC5kZWZpbml0aW9uLCBwYXJhbWV0ZXJzOiBldmVudC5wYXJhbWV0ZXJzLCBkYXRhIH0pO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyKSA9PiB7XG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlLnNldChcbiAgICAgICAgICBlcnI/Lm1lc3NhZ2UgPz8gJ0FuIGVycm9yIG9jY3VycmVkIHdoaWxlIGV4ZWN1dGluZyByZXBvcnQgZGF0YSBzb3VyY2UuJ1xuICAgICAgICApO1xuICAgICAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIG9uUmVzZXRSZXBvcnQoZXZlbnQ6IHsgZGVmaW5pdGlvbjogUmVwb3J0RGVmaW5pdGlvbiB9KTogdm9pZCB7XG4gICAgdGhpcy5yZXN1bHREYXRhLnNldChudWxsKTtcbiAgICB0aGlzLmVycm9yTWVzc2FnZS5zZXQobnVsbCk7XG4gICAgdGhpcy5yZXNldFJlcXVlc3RlZC5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIG9uRXhwb3J0UmVxdWVzdGVkKGV2ZW50OiB7XG4gICAgZm9ybWF0OiBzdHJpbmc7XG4gICAgZmlsZU5hbWU/OiBzdHJpbmc7XG4gICAgcGFyYW1ldGVyczogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgZGF0YTogdW5rbm93bltdIHwgbnVsbDtcbiAgfSk6IHZvaWQge1xuICAgIHRoaXMuZXhwb3J0UmVxdWVzdGVkLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgb25QcmludFJlcXVlc3RlZChldmVudDoge1xuICAgIHJwdEZpbGVOYW1lPzogc3RyaW5nO1xuICAgIGV4cG9ydFR5cGU/OiBzdHJpbmc7XG4gICAgcGFyYW1ldGVyczogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIH0pOiB2b2lkIHtcbiAgICB0aGlzLnByaW50UmVxdWVzdGVkLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgb25DdXN0b21BY3Rpb24oZXZlbnQ6IHtcbiAgICBhY3Rpb246IENvbXBvbmVudEFjdGlvbkRlZmluaXRpb247XG4gICAgY29tcG9uZW50OiBSZXBvcnRDb21wb25lbnREZWZpbml0aW9uO1xuICAgIHBhcmFtZXRlcnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICB9KTogdm9pZCB7XG4gICAgdGhpcy5jdXN0b21BY3Rpb25UcmlnZ2VyZWQuZW1pdChldmVudCk7XG4gIH1cblxuICBvblNlbGVjdGlvbkNoYW5nZShyb3dzOiBhbnlbXSk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQocm93cyk7XG4gICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2VkLmVtaXQocm93cyk7XG4gIH1cblxuICBvblJvd0FjdGlvblRyaWdnZXJlZChldmVudDoge1xuICAgIGFjdGlvbjogR3JpZFJvd0NsaWNrQWN0aW9uO1xuICAgIHJvdzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgcGFyYW1ldGVyczogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIH0pOiB2b2lkIHtcbiAgICB0aGlzLnJvd0FjdGlvblRyaWdnZXJlZC5lbWl0KGV2ZW50KTtcblxuICAgIGlmIChldmVudC5hY3Rpb24udGFyZ2V0UmVwb3J0SWQpIHtcbiAgICAgIHRoaXMuZHJpbGxkb3duUmVxdWVzdGVkLmVtaXQoe1xuICAgICAgICB0YXJnZXRSZXBvcnRJZDogZXZlbnQuYWN0aW9uLnRhcmdldFJlcG9ydElkLFxuICAgICAgICBwYXJhbWV0ZXJzOiBldmVudC5wYXJhbWV0ZXJzLFxuICAgICAgICByb3c6IGV2ZW50LnJvdyxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChldmVudC5hY3Rpb24udHlwZSA9PT0gJ29wZW4tZHJhd2VyJyB8fCBldmVudC5hY3Rpb24udHlwZSA9PT0gJ2RyaWxsZG93bi1yZXBvcnQnKSB7XG4gICAgICBpZiAoZXZlbnQuYWN0aW9uLnRhcmdldFJlcG9ydElkKSB7XG4gICAgICAgIHRoaXMub3BlbkRyaWxsZG93bkRyYXdlcihcbiAgICAgICAgICBldmVudC5hY3Rpb24udGFyZ2V0UmVwb3J0SWQsXG4gICAgICAgICAgZXZlbnQucGFyYW1ldGVycyxcbiAgICAgICAgICBldmVudC5yb3csXG4gICAgICAgICAgZXZlbnQuYWN0aW9uXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb3BlbkRyaWxsZG93bkRyYXdlcihcbiAgICB0YXJnZXRSZXBvcnRJZDogc3RyaW5nLFxuICAgIHBhcmFtZXRlcnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgIHJvdzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgYWN0aW9uPzogR3JpZFJvd0NsaWNrQWN0aW9uXG4gICk6IHZvaWQge1xuICAgIHRoaXMuYWN0aXZlRHJhd2VyVGFyZ2V0SWQgPSB0YXJnZXRSZXBvcnRJZDtcbiAgICB0aGlzLmFjdGl2ZURyYXdlclJvdyA9IHJvdztcbiAgICB0aGlzLmFjdGl2ZURyYXdlckFjdGlvbiA9IGFjdGlvbjtcblxuICAgIHRoaXMuZHJhd2VyUGFyYW1ldGVycy5zZXQocGFyYW1ldGVycyk7XG4gICAgdGhpcy5kcmF3ZXJXaWR0aC5zZXQoYWN0aW9uPy5kcmF3ZXJXaWR0aCB8fCAnNzYwcHgnKTtcbiAgICB0aGlzLmRyYXdlclRpdGxlLnNldChhY3Rpb24/LmRyYXdlclRpdGxlIHx8ICdSZXBvcnQgRGV0YWlscycpO1xuICAgIHRoaXMuZHJhd2VyUmVzdWx0RGF0YS5zZXQobnVsbCk7XG4gICAgdGhpcy5kcmF3ZXJEZWZpbml0aW9uLnNldChudWxsKTtcbiAgICB0aGlzLmRyYXdlckVycm9yLnNldChudWxsKTtcbiAgICB0aGlzLmlzRHJhd2VyTG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgdGhpcy5kcmF3ZXJMb2FkaW5nTWVzc2FnZS5zZXQoJ0xvYWRpbmcgZHJpbGwtZG93biBkZXRhaWxzLi4uJyk7XG4gICAgdGhpcy5pc0RyYXdlck9wZW4uc2V0KHRydWUpO1xuXG4gICAgLy8gQ29tcHV0ZSBmcmllbmRseSBjb250ZXh0IGJhZGdlXG4gICAgY29uc3QgZW50cmllcyA9IE9iamVjdC5lbnRyaWVzKHBhcmFtZXRlcnMpLmZpbHRlcigoW18sIHZdKSA9PiB2ICE9PSB1bmRlZmluZWQgJiYgdiAhPT0gbnVsbCAmJiB2ICE9PSAnJyk7XG4gICAgaWYgKGVudHJpZXMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgYmFkZ2VUZXh0ID0gZW50cmllcy5zbGljZSgwLCAyKS5tYXAoKFtrLCB2XSkgPT4gYCR7a306ICR7dn1gKS5qb2luKCcgfCAnKTtcbiAgICAgIHRoaXMuZHJhd2VyQ29udGV4dEJhZGdlLnNldChiYWRnZVRleHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRyYXdlckNvbnRleHRCYWRnZS5zZXQobnVsbCk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnBlcnNpc3RlbmNlQWRhcHRlcikge1xuICAgICAgdGhpcy5kcmF3ZXJFcnJvci5zZXQoXG4gICAgICAgIGBSZXBvcnQgcGVyc2lzdGVuY2UgYWRhcHRlciBub3QgcHJvdmlkZWQgdG8gbG9hZCBkcmlsbC1kb3duIHJlcG9ydCBcIiR7dGFyZ2V0UmVwb3J0SWR9XCIuYFxuICAgICAgKTtcbiAgICAgIHRoaXMuaXNEcmF3ZXJMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5wZXJzaXN0ZW5jZUFkYXB0ZXIubG9hZCh0YXJnZXRSZXBvcnRJZCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChkZWYpID0+IHtcbiAgICAgICAgdGhpcy5kcmF3ZXJEZWZpbml0aW9uLnNldChkZWYpO1xuICAgICAgICBpZiAoIWFjdGlvbj8uZHJhd2VyVGl0bGUpIHtcbiAgICAgICAgICB0aGlzLmRyYXdlclRpdGxlLnNldChkZWYubmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gQXV0by1leGVjdXRlIHRhcmdldCBjaGlsZCByZXBvcnRcbiAgICAgICAgdGhpcy5leGVjdXRlRHJhd2VyUmVwb3J0KGRlZiwgcGFyYW1ldGVycyk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnIpID0+IHtcbiAgICAgICAgdGhpcy5kcmF3ZXJFcnJvci5zZXQoXG4gICAgICAgICAgZXJyPy5tZXNzYWdlID8/IGBGYWlsZWQgdG8gbG9hZCBkcmlsbGRvd24gcmVwb3J0IFwiJHt0YXJnZXRSZXBvcnRJZH1cImBcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5pc0RyYXdlckxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGV4ZWN1dGVEcmF3ZXJSZXBvcnQoXG4gICAgZGVmOiBSZXBvcnREZWZpbml0aW9uLFxuICAgIHBhcmFtZXRlcnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICk6IHZvaWQge1xuICAgIGlmICghZGVmLmdyaWQpIHtcbiAgICAgIHRoaXMuaXNEcmF3ZXJMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZXhlY3V0aW9uU2VydmljZSkge1xuICAgICAgdGhpcy5kcmF3ZXJMb2FkaW5nTWVzc2FnZS5zZXQoJ0ZldGNoaW5nIGRyaWxsLWRvd24gZGF0YS4uLicpO1xuICAgICAgdGhpcy5leGVjdXRpb25TZXJ2aWNlLmV4ZWN1dGUoZGVmLCBwYXJhbWV0ZXJzKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoZGF0YSkgPT4ge1xuICAgICAgICAgIHRoaXMuZHJhd2VyUmVzdWx0RGF0YS5zZXQoZGF0YSk7XG4gICAgICAgICAgdGhpcy5pc0RyYXdlckxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcbiAgICAgICAgICB0aGlzLmRyYXdlckVycm9yLnNldChlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogU3RyaW5nKGVycikpO1xuICAgICAgICAgIHRoaXMuaXNEcmF3ZXJMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBkcyA9IGRlZi5kYXRhU291cmNlcy5maW5kKFxuICAgICAgKGQpID0+IGQuaWQgPT09IGRlZi5ncmlkPy5kYXRhU291cmNlSWQgfHwgZC5uYW1lID09PSBkZWYuZ3JpZD8uZGF0YVNvdXJjZUlkXG4gICAgKSB8fCBkZWYuZGF0YVNvdXJjZXNbMF07XG5cbiAgICBpZiAoIWRzIHx8ICF0aGlzLmRhdGFTb3VyY2VBZGFwdGVyKSB7XG4gICAgICB0aGlzLmlzRHJhd2VyTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHNlc3Npb24gPSB0aGlzLnNlc3Npb25TZXJ2aWNlPy5nZXRDdXJyZW50U2Vzc2lvbkNvbnRleHQoKSA/PyB7fTtcbiAgICBjb25zdCBleGVjdXRpb25QYXJhbXMgPSB7IC4uLnNlc3Npb24sIC4uLnBhcmFtZXRlcnMgfTtcblxuICAgIHRoaXMuZGF0YVNvdXJjZUFkYXB0ZXIuZXhlY3V0ZShkcywgZXhlY3V0aW9uUGFyYW1zKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGRhdGEpID0+IHtcbiAgICAgICAgdGhpcy5kcmF3ZXJSZXN1bHREYXRhLnNldChkYXRhKTtcbiAgICAgICAgdGhpcy5pc0RyYXdlckxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKGVycikgPT4ge1xuICAgICAgICB0aGlzLmRyYXdlckVycm9yLnNldChlcnI/Lm1lc3NhZ2UgPz8gJ0ZhaWxlZCB0byBleGVjdXRlIGRyaWxsLWRvd24gZGF0YSBzb3VyY2UuJyk7XG4gICAgICAgIHRoaXMuaXNEcmF3ZXJMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgb25EcmF3ZXJFeGVjdXRlKGV2ZW50OiB7XG4gICAgZGVmaW5pdGlvbjogUmVwb3J0RGVmaW5pdGlvbjtcbiAgICBwYXJhbWV0ZXJzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgfSk6IHZvaWQge1xuICAgIHRoaXMuZXhlY3V0ZURyYXdlclJlcG9ydChldmVudC5kZWZpbml0aW9uLCBldmVudC5wYXJhbWV0ZXJzKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzprZXlkb3duLmVzY2FwZScpXG4gIG9uRXNjYXBlUHJlc3NlZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0RyYXdlck9wZW4oKSkge1xuICAgICAgdGhpcy5jbG9zZURyYXdlcigpO1xuICAgIH1cbiAgfVxuXG4gIGNsb3NlRHJhd2VyKCk6IHZvaWQge1xuICAgIHRoaXMuaXNEcmF3ZXJPcGVuLnNldChmYWxzZSk7XG4gICAgdGhpcy5kcmF3ZXJEZWZpbml0aW9uLnNldChudWxsKTtcbiAgICB0aGlzLmRyYXdlclJlc3VsdERhdGEuc2V0KG51bGwpO1xuICAgIHRoaXMuZHJhd2VyRXJyb3Iuc2V0KG51bGwpO1xuICB9XG5cbiAgcmV0cnlEcmF3ZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYWN0aXZlRHJhd2VyVGFyZ2V0SWQpIHtcbiAgICAgIHRoaXMub3BlbkRyaWxsZG93bkRyYXdlcihcbiAgICAgICAgdGhpcy5hY3RpdmVEcmF3ZXJUYXJnZXRJZCxcbiAgICAgICAgdGhpcy5kcmF3ZXJQYXJhbWV0ZXJzKCksXG4gICAgICAgIHRoaXMuYWN0aXZlRHJhd2VyUm93LFxuICAgICAgICB0aGlzLmFjdGl2ZURyYXdlckFjdGlvblxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZXRyeSgpOiB2b2lkIHtcbiAgICBjb25zdCBpZCA9IHRoaXMucmVwb3J0SWQoKTtcbiAgICBpZiAoaWQpIHtcbiAgICAgIHRoaXMubG9hZFJlcG9ydChpZCk7XG4gICAgfVxuICB9XG59XG5cbiJdfQ==
|
|
@@ -364,7 +364,7 @@ export class RptReportComponent {
|
|
|
364
364
|
</div>
|
|
365
365
|
}
|
|
366
366
|
</div>
|
|
367
|
-
`, isInline: true, styles: [":host{display:block;width:100%;box-sizing:border-box;font-family:var(--rpt-font-family, inherit)}.rpt-facade-container{width:100%;position:relative}.rpt-facade-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 16px;background:#fff;border:1px solid var(--rpt-color-border-subtle, #e2e8f0);border-radius:var(--rpt-border-radius-lg, 8px);box-shadow:var(--rpt-box-shadow-xs, 0 1px 2px rgba(0, 0, 0, .04));margin-bottom:14px;flex-wrap:wrap}.rpt-toolbar-left,.rpt-toolbar-right{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.rpt-report-title-badge{display:inline-flex;align-items:center;gap:6px;font-size:.875rem;font-weight:700;color:#0f172a;padding-right:4px}.rpt-title-dot{width:8px;height:8px;border-radius:50%;background:var(--rpt-color-primary, #2563eb)}.rpt-record-count-chip{display:inline-flex;align-items:center;gap:5px;background:#f1f5f9;color:#475569;font-size:.725rem;font-weight:600;padding:3px 8px;border-radius:var(--rpt-border-radius-full, 9999px);border:1px solid #e2e8f0}.rpt-chip-dot{width:6px;height:6px;border-radius:50%;background:#10b981}.rpt-preset-control{display:flex;align-items:center;gap:6px;background:#f8fafc;padding:3px 6px;border-radius:var(--rpt-border-radius, 6px);border:1px solid #e2e8f0}.rpt-preset-label{display:inline-flex;align-items:center;gap:4px;font-size:.725rem;font-weight:600;color:#64748b}.rpt-preset-select{border:1px solid #cbd5e1;border-radius:var(--rpt-border-radius-sm, 4px);padding:3px 8px;font-size:.75rem;font-weight:500;color:#0f172a;background:#fff;outline:none;cursor:pointer;transition:border-color var(--rpt-transition-speed, .15s) ease}.rpt-preset-select:focus{border-color:var(--rpt-color-primary, #2563eb);box-shadow:0 0 0 2px var(--rpt-color-primary-focus, rgba(37, 99, 235, .25))}.rpt-btn-save-view{display:inline-flex;align-items:center;gap:4px;background:var(--rpt-color-primary-light, #eff6ff);border:1px solid #bfdbfe;color:var(--rpt-color-primary, #2563eb);font-size:.725rem;font-weight:600;padding:3px 8px;border-radius:var(--rpt-border-radius-sm, 4px);cursor:pointer;transition:all var(--rpt-transition-speed, .15s) ease}.rpt-btn-save-view:hover{background:#dbeafe;border-color:#93c5fd}.rpt-export-btn{display:inline-flex;align-items:center;gap:5px;border-radius:var(--rpt-border-radius, 6px);padding:5px 12px;font-size:.75rem;font-weight:600;cursor:pointer;transition:all var(--rpt-transition-speed, .15s) ease}.rpt-export-btn:disabled{opacity:.45;cursor:not-allowed}.rpt-export-excel{background:#f0fdf4;border:1px solid #bbf7d0;color:#15803d}.rpt-export-excel:hover:not(:disabled){background:#dcfce7;border-color:#86efac}.rpt-export-csv{background:#f8fafc;border:1px solid #cbd5e1;color:#334155}.rpt-export-csv:hover:not(:disabled){background:#f1f5f9;border-color:#94a3b8;color:#0f172a}.rpt-export-print{background:#eef2ff;border:1px solid #c7d2fe;color:#4338ca}.rpt-export-print:hover:not(:disabled){background:#e0e7ff;border-color:#a5b4fc}.rpt-modal-backdrop{position:fixed;inset:0;background:#0f172a73;backdrop-filter:blur(6px);z-index:1100}.rpt-modal-dialog{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:min(460px,92vw);background:#fff;border:1px solid #cbd5e1;border-radius:var(--rpt-border-radius-lg, 8px);box-shadow:0 20px 25px -5px #00000026,0 8px 10px -6px #0000001a;z-index:1101;display:flex;flex-direction:column;overflow:hidden;animation:rpt-modal-pop .16s cubic-bezier(.16,1,.3,1)}@keyframes rpt-modal-pop{0%{opacity:0;transform:translate(-50%,-46%) scale(.97)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}.rpt-modal-header{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid #e2e8f0;background:#f8fafc}.rpt-modal-header-title{display:inline-flex;align-items:center;gap:8px;color:var(--rpt-color-primary, #2563eb)}.rpt-modal-title{font-size:.95rem;font-weight:700;color:#0f172a;margin:0}.rpt-modal-close{background:transparent;border:none;color:#64748b;font-size:1.1rem;cursor:pointer;width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all .12s ease}.rpt-modal-close:hover{background:#e2e8f0;color:#0f172a}.rpt-modal-body{padding:18px}.rpt-modal-hint{font-size:.8rem;color:#64748b;margin:0 0 16px;line-height:1.45}.rpt-input-group{margin-bottom:16px}.rpt-field-label{display:block;font-size:.75rem;font-weight:600;color:#334155;margin-bottom:6px}.rpt-modal-input{width:100%;box-sizing:border-box;border:1px solid #cbd5e1;border-radius:var(--rpt-border-radius, 6px);padding:8px 12px;font-size:.85rem;outline:none;transition:all var(--rpt-transition-speed, .15s) ease}.rpt-modal-input:focus{border-color:var(--rpt-color-primary, #2563eb);box-shadow:0 0 0 3px var(--rpt-color-primary-focus, rgba(37, 99, 235, .25))}.rpt-existing-presets{border-top:1px solid #e2e8f0;padding-top:12px;margin-top:8px}.rpt-existing-label{display:block;font-size:.725rem;font-weight:600;color:#64748b;margin-bottom:8px;text-transform:uppercase;letter-spacing:.5px}.rpt-presets-list{max-height:140px;overflow-y:auto;display:flex;flex-direction:column;gap:6px}.rpt-preset-row{display:flex;align-items:center;justify-content:space-between;padding:6px 10px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:4px}.rpt-preset-info{display:inline-flex;align-items:center;gap:8px}.rpt-preset-row-name{font-size:.775rem;font-weight:600;color:#1e293b}.rpt-preset-active-tag{font-size:.65rem;font-weight:600;background:#dbeafe;color:#1d4ed8;padding:1px 6px;border-radius:9999px}.rpt-btn-del-preset{background:transparent;border:none;color:#94a3b8;cursor:pointer;padding:4px;border-radius:4px;display:flex;align-items:center;justify-content:center;transition:all .12s ease}.rpt-btn-del-preset:hover{background:#fee2e2;color:#dc2626}.rpt-modal-footer{display:flex;align-items:center;justify-content:flex-end;gap:10px;padding:12px 18px;border-top:1px solid #e2e8f0;background:#f8fafc}.rpt-btn-cancel{background:#fff;border:1px solid #cbd5e1;border-radius:var(--rpt-border-radius, 6px);padding:6px 14px;font-size:.775rem;font-weight:500;color:#475569;cursor:pointer;transition:all .12s ease}.rpt-btn-cancel:hover{background:#f1f5f9;color:#0f172a}.rpt-btn-confirm{background:var(--rpt-color-primary, #2563eb);color:#fff;border:none;border-radius:var(--rpt-border-radius, 6px);padding:6px 16px;font-size:.775rem;font-weight:600;cursor:pointer;transition:all .12s ease}.rpt-btn-confirm:hover:not(:disabled){background:var(--rpt-color-primary-hover, #1d4ed8)}.rpt-btn-confirm:disabled{opacity:.5;cursor:not-allowed}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ReportRuntimeComponent, selector: "rpt-report-runtime, rpt-runtime", inputs: ["reportId", "report"], outputs: ["resetRequested", "exportRequested", "printRequested", "customActionTriggered", "gridStateChange", "columnDefsChange", "selectionChange", "selectionChanged", "rowActionTriggered", "drilldownRequested"] }, { kind: "component", type: RptIconComponent, selector: "rpt-icon", inputs: ["name", "size", "color", "strokeWidth"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
367
|
+
`, isInline: true, styles: [":host{display:block;width:100%;box-sizing:border-box;font-family:var(--rpt-font-family, inherit)}.rpt-facade-container{width:100%;position:relative}.rpt-facade-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 16px;background:#fff;border:1px solid var(--rpt-color-border-subtle, #e2e8f0);border-radius:var(--rpt-border-radius-lg, 8px);box-shadow:var(--rpt-box-shadow-xs, 0 1px 2px rgba(0, 0, 0, .04));margin-bottom:14px;flex-wrap:wrap}.rpt-toolbar-left,.rpt-toolbar-right{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.rpt-report-title-badge{display:inline-flex;align-items:center;gap:6px;font-size:.875rem;font-weight:700;color:#0f172a;padding-right:4px}.rpt-title-dot{width:8px;height:8px;border-radius:50%;background:var(--rpt-color-primary, #2563eb)}.rpt-record-count-chip{display:inline-flex;align-items:center;gap:5px;background:#f1f5f9;color:#475569;font-size:.725rem;font-weight:600;padding:3px 8px;border-radius:var(--rpt-border-radius-full, 9999px);border:1px solid #e2e8f0}.rpt-chip-dot{width:6px;height:6px;border-radius:50%;background:#10b981}.rpt-preset-control{display:flex;align-items:center;gap:6px;background:#f8fafc;padding:3px 6px;border-radius:var(--rpt-border-radius, 6px);border:1px solid #e2e8f0}.rpt-preset-label{display:inline-flex;align-items:center;gap:4px;font-size:.725rem;font-weight:600;color:#64748b}.rpt-preset-select{border:1px solid #cbd5e1;border-radius:var(--rpt-border-radius-sm, 4px);padding:3px 8px;font-size:.75rem;font-weight:500;color:#0f172a;background:#fff;outline:none;cursor:pointer;transition:border-color var(--rpt-transition-speed, .15s) ease}.rpt-preset-select:focus{border-color:var(--rpt-color-primary, #2563eb);box-shadow:0 0 0 2px var(--rpt-color-primary-focus, rgba(37, 99, 235, .25))}.rpt-btn-save-view{display:inline-flex;align-items:center;gap:4px;background:var(--rpt-color-primary-light, #eff6ff);border:1px solid #bfdbfe;color:var(--rpt-color-primary, #2563eb);font-size:.725rem;font-weight:600;padding:3px 8px;border-radius:var(--rpt-border-radius-sm, 4px);cursor:pointer;transition:all var(--rpt-transition-speed, .15s) ease}.rpt-btn-save-view:hover{background:#dbeafe;border-color:#93c5fd}.rpt-export-btn{display:inline-flex;align-items:center;gap:5px;border-radius:var(--rpt-border-radius, 6px);padding:5px 12px;font-size:.75rem;font-weight:600;cursor:pointer;transition:all var(--rpt-transition-speed, .15s) ease}.rpt-export-btn:disabled{opacity:.45;cursor:not-allowed}.rpt-export-excel{background:#f0fdf4;border:1px solid #bbf7d0;color:#15803d}.rpt-export-excel:hover:not(:disabled){background:#dcfce7;border-color:#86efac}.rpt-export-csv{background:#f8fafc;border:1px solid #cbd5e1;color:#334155}.rpt-export-csv:hover:not(:disabled){background:#f1f5f9;border-color:#94a3b8;color:#0f172a}.rpt-export-print{background:#eef2ff;border:1px solid #c7d2fe;color:#4338ca}.rpt-export-print:hover:not(:disabled){background:#e0e7ff;border-color:#a5b4fc}.rpt-modal-backdrop{position:fixed;inset:0;background:#0f172a73;backdrop-filter:blur(6px);z-index:1100}.rpt-modal-dialog{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:min(460px,92vw);background:#fff;border:1px solid #cbd5e1;border-radius:var(--rpt-border-radius-lg, 8px);box-shadow:0 20px 25px -5px #00000026,0 8px 10px -6px #0000001a;z-index:1101;display:flex;flex-direction:column;overflow:hidden;animation:rpt-modal-pop .16s cubic-bezier(.16,1,.3,1)}@keyframes rpt-modal-pop{0%{opacity:0;transform:translate(-50%,-46%) scale(.97)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}.rpt-modal-header{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid #e2e8f0;background:#f8fafc}.rpt-modal-header-title{display:inline-flex;align-items:center;gap:8px;color:var(--rpt-color-primary, #2563eb)}.rpt-modal-title{font-size:.95rem;font-weight:700;color:#0f172a;margin:0}.rpt-modal-close{background:transparent;border:none;color:#64748b;font-size:1.1rem;cursor:pointer;width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all .12s ease}.rpt-modal-close:hover{background:#e2e8f0;color:#0f172a}.rpt-modal-body{padding:18px}.rpt-modal-hint{font-size:.8rem;color:#64748b;margin:0 0 16px;line-height:1.45}.rpt-input-group{margin-bottom:16px}.rpt-field-label{display:block;font-size:.75rem;font-weight:600;color:#334155;margin-bottom:6px}.rpt-modal-input{width:100%;box-sizing:border-box;border:1px solid #cbd5e1;border-radius:var(--rpt-border-radius, 6px);padding:8px 12px;font-size:.85rem;outline:none;transition:all var(--rpt-transition-speed, .15s) ease}.rpt-modal-input:focus{border-color:var(--rpt-color-primary, #2563eb);box-shadow:0 0 0 3px var(--rpt-color-primary-focus, rgba(37, 99, 235, .25))}.rpt-existing-presets{border-top:1px solid #e2e8f0;padding-top:12px;margin-top:8px}.rpt-existing-label{display:block;font-size:.725rem;font-weight:600;color:#64748b;margin-bottom:8px;text-transform:uppercase;letter-spacing:.5px}.rpt-presets-list{max-height:140px;overflow-y:auto;display:flex;flex-direction:column;gap:6px}.rpt-preset-row{display:flex;align-items:center;justify-content:space-between;padding:6px 10px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:4px}.rpt-preset-info{display:inline-flex;align-items:center;gap:8px}.rpt-preset-row-name{font-size:.775rem;font-weight:600;color:#1e293b}.rpt-preset-active-tag{font-size:.65rem;font-weight:600;background:#dbeafe;color:#1d4ed8;padding:1px 6px;border-radius:9999px}.rpt-btn-del-preset{background:transparent;border:none;color:#94a3b8;cursor:pointer;padding:4px;border-radius:4px;display:flex;align-items:center;justify-content:center;transition:all .12s ease}.rpt-btn-del-preset:hover{background:#fee2e2;color:#dc2626}.rpt-modal-footer{display:flex;align-items:center;justify-content:flex-end;gap:10px;padding:12px 18px;border-top:1px solid #e2e8f0;background:#f8fafc}.rpt-btn-cancel{background:#fff;border:1px solid #cbd5e1;border-radius:var(--rpt-border-radius, 6px);padding:6px 14px;font-size:.775rem;font-weight:500;color:#475569;cursor:pointer;transition:all .12s ease}.rpt-btn-cancel:hover{background:#f1f5f9;color:#0f172a}.rpt-btn-confirm{background:var(--rpt-color-primary, #2563eb);color:#fff;border:none;border-radius:var(--rpt-border-radius, 6px);padding:6px 16px;font-size:.775rem;font-weight:600;cursor:pointer;transition:all .12s ease}.rpt-btn-confirm:hover:not(:disabled){background:var(--rpt-color-primary-hover, #1d4ed8)}.rpt-btn-confirm:disabled{opacity:.5;cursor:not-allowed}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ReportRuntimeComponent, selector: "rpt-report-runtime, rpt-runtime", inputs: ["reportId", "report", "resultData"], outputs: ["resetRequested", "execute", "executed", "exportRequested", "printRequested", "customActionTriggered", "gridStateChange", "columnDefsChange", "selectionChange", "selectionChanged", "rowActionTriggered", "drilldownRequested"] }, { kind: "component", type: RptIconComponent, selector: "rpt-icon", inputs: ["name", "size", "color", "strokeWidth"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
368
368
|
}
|
|
369
369
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RptReportComponent, decorators: [{
|
|
370
370
|
type: Component,
|
|
@@ -542,4 +542,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
542
542
|
</div>
|
|
543
543
|
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;width:100%;box-sizing:border-box;font-family:var(--rpt-font-family, inherit)}.rpt-facade-container{width:100%;position:relative}.rpt-facade-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 16px;background:#fff;border:1px solid var(--rpt-color-border-subtle, #e2e8f0);border-radius:var(--rpt-border-radius-lg, 8px);box-shadow:var(--rpt-box-shadow-xs, 0 1px 2px rgba(0, 0, 0, .04));margin-bottom:14px;flex-wrap:wrap}.rpt-toolbar-left,.rpt-toolbar-right{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.rpt-report-title-badge{display:inline-flex;align-items:center;gap:6px;font-size:.875rem;font-weight:700;color:#0f172a;padding-right:4px}.rpt-title-dot{width:8px;height:8px;border-radius:50%;background:var(--rpt-color-primary, #2563eb)}.rpt-record-count-chip{display:inline-flex;align-items:center;gap:5px;background:#f1f5f9;color:#475569;font-size:.725rem;font-weight:600;padding:3px 8px;border-radius:var(--rpt-border-radius-full, 9999px);border:1px solid #e2e8f0}.rpt-chip-dot{width:6px;height:6px;border-radius:50%;background:#10b981}.rpt-preset-control{display:flex;align-items:center;gap:6px;background:#f8fafc;padding:3px 6px;border-radius:var(--rpt-border-radius, 6px);border:1px solid #e2e8f0}.rpt-preset-label{display:inline-flex;align-items:center;gap:4px;font-size:.725rem;font-weight:600;color:#64748b}.rpt-preset-select{border:1px solid #cbd5e1;border-radius:var(--rpt-border-radius-sm, 4px);padding:3px 8px;font-size:.75rem;font-weight:500;color:#0f172a;background:#fff;outline:none;cursor:pointer;transition:border-color var(--rpt-transition-speed, .15s) ease}.rpt-preset-select:focus{border-color:var(--rpt-color-primary, #2563eb);box-shadow:0 0 0 2px var(--rpt-color-primary-focus, rgba(37, 99, 235, .25))}.rpt-btn-save-view{display:inline-flex;align-items:center;gap:4px;background:var(--rpt-color-primary-light, #eff6ff);border:1px solid #bfdbfe;color:var(--rpt-color-primary, #2563eb);font-size:.725rem;font-weight:600;padding:3px 8px;border-radius:var(--rpt-border-radius-sm, 4px);cursor:pointer;transition:all var(--rpt-transition-speed, .15s) ease}.rpt-btn-save-view:hover{background:#dbeafe;border-color:#93c5fd}.rpt-export-btn{display:inline-flex;align-items:center;gap:5px;border-radius:var(--rpt-border-radius, 6px);padding:5px 12px;font-size:.75rem;font-weight:600;cursor:pointer;transition:all var(--rpt-transition-speed, .15s) ease}.rpt-export-btn:disabled{opacity:.45;cursor:not-allowed}.rpt-export-excel{background:#f0fdf4;border:1px solid #bbf7d0;color:#15803d}.rpt-export-excel:hover:not(:disabled){background:#dcfce7;border-color:#86efac}.rpt-export-csv{background:#f8fafc;border:1px solid #cbd5e1;color:#334155}.rpt-export-csv:hover:not(:disabled){background:#f1f5f9;border-color:#94a3b8;color:#0f172a}.rpt-export-print{background:#eef2ff;border:1px solid #c7d2fe;color:#4338ca}.rpt-export-print:hover:not(:disabled){background:#e0e7ff;border-color:#a5b4fc}.rpt-modal-backdrop{position:fixed;inset:0;background:#0f172a73;backdrop-filter:blur(6px);z-index:1100}.rpt-modal-dialog{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:min(460px,92vw);background:#fff;border:1px solid #cbd5e1;border-radius:var(--rpt-border-radius-lg, 8px);box-shadow:0 20px 25px -5px #00000026,0 8px 10px -6px #0000001a;z-index:1101;display:flex;flex-direction:column;overflow:hidden;animation:rpt-modal-pop .16s cubic-bezier(.16,1,.3,1)}@keyframes rpt-modal-pop{0%{opacity:0;transform:translate(-50%,-46%) scale(.97)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}.rpt-modal-header{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid #e2e8f0;background:#f8fafc}.rpt-modal-header-title{display:inline-flex;align-items:center;gap:8px;color:var(--rpt-color-primary, #2563eb)}.rpt-modal-title{font-size:.95rem;font-weight:700;color:#0f172a;margin:0}.rpt-modal-close{background:transparent;border:none;color:#64748b;font-size:1.1rem;cursor:pointer;width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all .12s ease}.rpt-modal-close:hover{background:#e2e8f0;color:#0f172a}.rpt-modal-body{padding:18px}.rpt-modal-hint{font-size:.8rem;color:#64748b;margin:0 0 16px;line-height:1.45}.rpt-input-group{margin-bottom:16px}.rpt-field-label{display:block;font-size:.75rem;font-weight:600;color:#334155;margin-bottom:6px}.rpt-modal-input{width:100%;box-sizing:border-box;border:1px solid #cbd5e1;border-radius:var(--rpt-border-radius, 6px);padding:8px 12px;font-size:.85rem;outline:none;transition:all var(--rpt-transition-speed, .15s) ease}.rpt-modal-input:focus{border-color:var(--rpt-color-primary, #2563eb);box-shadow:0 0 0 3px var(--rpt-color-primary-focus, rgba(37, 99, 235, .25))}.rpt-existing-presets{border-top:1px solid #e2e8f0;padding-top:12px;margin-top:8px}.rpt-existing-label{display:block;font-size:.725rem;font-weight:600;color:#64748b;margin-bottom:8px;text-transform:uppercase;letter-spacing:.5px}.rpt-presets-list{max-height:140px;overflow-y:auto;display:flex;flex-direction:column;gap:6px}.rpt-preset-row{display:flex;align-items:center;justify-content:space-between;padding:6px 10px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:4px}.rpt-preset-info{display:inline-flex;align-items:center;gap:8px}.rpt-preset-row-name{font-size:.775rem;font-weight:600;color:#1e293b}.rpt-preset-active-tag{font-size:.65rem;font-weight:600;background:#dbeafe;color:#1d4ed8;padding:1px 6px;border-radius:9999px}.rpt-btn-del-preset{background:transparent;border:none;color:#94a3b8;cursor:pointer;padding:4px;border-radius:4px;display:flex;align-items:center;justify-content:center;transition:all .12s ease}.rpt-btn-del-preset:hover{background:#fee2e2;color:#dc2626}.rpt-modal-footer{display:flex;align-items:center;justify-content:flex-end;gap:10px;padding:12px 18px;border-top:1px solid #e2e8f0;background:#f8fafc}.rpt-btn-cancel{background:#fff;border:1px solid #cbd5e1;border-radius:var(--rpt-border-radius, 6px);padding:6px 14px;font-size:.775rem;font-weight:500;color:#475569;cursor:pointer;transition:all .12s ease}.rpt-btn-cancel:hover{background:#f1f5f9;color:#0f172a}.rpt-btn-confirm{background:var(--rpt-color-primary, #2563eb);color:#fff;border:none;border-radius:var(--rpt-border-radius, 6px);padding:6px 16px;font-size:.775rem;font-weight:600;cursor:pointer;transition:all .12s ease}.rpt-btn-confirm:hover:not(:disabled){background:var(--rpt-color-primary-hover, #1d4ed8)}.rpt-btn-confirm:disabled{opacity:.5;cursor:not-allowed}\n"] }]
|
|
544
544
|
}] });
|
|
545
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnB0LXJlcG9ydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9id2F5cy1yZXBvcnQvc3JjL2xpYi9mZWF0dXJlcy9ydW50aW1lL3JwdC1yZXBvcnQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHN0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDL0UsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDdkYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0seURBQXlELENBQUM7OztBQXdpQm5HLE1BQU0sT0FBTyxrQkFBa0I7SUFDWixhQUFhLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDNUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBRTNFLEVBQUUsR0FBRyxLQUFLLENBQXFCLFNBQVMsQ0FBQyxDQUFDO0lBQzFDLE1BQU0sR0FBRyxLQUFLLENBQTBCLElBQUksQ0FBQyxDQUFDO0lBQzlDLFVBQVUsR0FBRyxLQUFLLENBQTBCLEVBQUUsQ0FBQyxDQUFDO0lBQ2hELFVBQVUsR0FBRyxLQUFLLENBQVUsSUFBSSxDQUFDLENBQUM7SUFDbEMsYUFBYSxHQUFHLEtBQUssQ0FB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QUFFLFdBQVcsMGdDQUFFLHNCQUFzQixpVUFBRSxnQkFBZ0I7OzRGQTJoQmxFLGtCQUFrQjtrQkE5aEI5QixTQUFTOytCQUNFLHNCQUFzQixjQUNwQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLHNCQUFzQixFQUFFLGdCQUFnQixDQUFDLFlBQ3BFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNEtULG1CQTRXZ0IsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIGNvbXB1dGVkLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBvdXRwdXQsXG4gIHNpZ25hbCxcbiAgdmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFJlcG9ydERlZmluaXRpb24gfSBmcm9tICcuLi8uLi9jb3JlL21vZGVscy9yZXBvcnQtZGVmaW5pdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBHcmlkUm93Q2xpY2tBY3Rpb24gfSBmcm9tICcuLi8uLi9jb3JlL21vZGVscy9yZXBvcnQtZ3JpZC5tb2RlbCc7XG5pbXBvcnQgeyBSZXBvcnRFeHBvcnRTZXJ2aWNlIH0gZnJvbSAnLi4vZXhwb3J0L3NlcnZpY2VzL3JlcG9ydC1leHBvcnQuc2VydmljZSc7XG5pbXBvcnQgeyBSZXBvcnRSdW50aW1lQ29tcG9uZW50IH0gZnJvbSAnLi9yZXBvcnQtcnVudGltZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUnB0SWNvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3ByaW1pdGl2ZXMvY29tcG9uZW50cy9pY29uL3JwdC1pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSZXBvcnRQZXJzaXN0ZW5jZUFkYXB0ZXIgfSBmcm9tICcuLi8uLi9kYXRhLWFjY2Vzcy9jb250cmFjdHMvcmVwb3J0LXBlcnNpc3RlbmNlLmNvbnRyYWN0JztcblxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRWaWV3UHJlc2V0IHtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBncmlkU3RhdGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBmb3JtVmFsdWVzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGNyZWF0ZWRBdD86IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncnB0LXJlcG9ydCwgcnB0LXZpZXcnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgUmVwb3J0UnVudGltZUNvbXBvbmVudCwgUnB0SWNvbkNvbXBvbmVudF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cInJwdC1mYWNhZGUtY29udGFpbmVyXCI+XG4gICAgICA8IS0tIFRvcCBBY3Rpb24gJiBQcmVzZXQgQmFyIC0tPlxuICAgICAgQGlmIChzaG93VG9vbGJhcigpKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJycHQtZmFjYWRlLXRvb2xiYXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicnB0LXRvb2xiYXItbGVmdFwiPlxuICAgICAgICAgICAgQGlmIChhY3RpdmVEZWZpbml0aW9uKCk/Lm5hbWUpIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJwdC1yZXBvcnQtdGl0bGUtYmFkZ2VcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJwdC10aXRsZS1kb3RcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJycHQtdGl0bGUtdGV4dFwiPnt7IGFjdGl2ZURlZmluaXRpb24oKT8ubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpZiAocmVjb3JkQ291bnQoKSA+IDApIHtcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJycHQtcmVjb3JkLWNvdW50LWNoaXBcIiB0aXRsZT1cIkN1cnJlbnQgZGF0YXNldCBzaXplXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJycHQtY2hpcC1kb3RcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJycHQtdGFidWxhci1udW1zXCI+e3sgcmVjb3JkQ291bnQoKSB9fSByb3dzPC9zcGFuPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIDwhLS0gU2F2ZWQgVmlld3MgLyBQcmVzZXQgU3dpdGNoZXIgLS0+XG4gICAgICAgICAgICBAaWYgKGVuYWJsZVByZXNldHMoKSkge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicnB0LXByZXNldC1jb250cm9sXCI+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwicnB0LXByZXNldC1sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgPHJwdC1pY29uIG5hbWU9XCJib29rbWFya1wiIFtzaXplXT1cIjEyXCIgLz5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPlZpZXc6PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJycHQtcHJlc2V0LXNlbGVjdFwiXG4gICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJhY3RpdmVQcmVzZXRJZCgpXCJcbiAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uU2VsZWN0UHJlc2V0KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIlNlbGVjdCByZXBvcnQgdmlldyBwcmVzZXRcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJkZWZhdWx0XCI+RGVmYXVsdCBWaWV3PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICBAZm9yIChwcmVzZXQgb2Ygc2F2ZWRQcmVzZXRzKCk7IHRyYWNrIHByZXNldC5pZCkge1xuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJwcmVzZXQuaWRcIj57eyBwcmVzZXQubmFtZSB9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJycHQtYnRuLXNhdmUtdmlld1wiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlblNhdmVQcmVzZXRNb2RhbCgpXCJcbiAgICAgICAgICAgICAgICAgIHRpdGxlPVwiU2F2ZSBjdXJyZW50IGdyaWQgdmlldyBvciBtYW5hZ2UgcHJlc2V0c1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPHJwdC1pY29uIG5hbWU9XCJwbHVzXCIgW3NpemVdPVwiMTFcIiAvPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+U2F2ZSBWaWV3PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwhLS0gRXhwb3J0IEFjdGlvbnMgLS0+XG4gICAgICAgICAgQGlmIChzaG93RXhwb3J0KCkpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJycHQtdG9vbGJhci1yaWdodFwiPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJycHQtZXhwb3J0LWJ0biBycHQtZXhwb3J0LWV4Y2VsXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25FeHBvcnRFeGNlbCgpXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXJlY29yZENvdW50KClcIlxuICAgICAgICAgICAgICAgIHRpdGxlPVwiRXhwb3J0IHJlc3VsdCB0YWJsZSB0byBFeGNlbCBzcHJlYWRzaGVldCAoLnhscylcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHJwdC1pY29uIG5hbWU9XCJmaWxlLXRleHRcIiBbc2l6ZV09XCIxM1wiIC8+XG4gICAgICAgICAgICAgICAgPHNwYW4+RXhjZWw8L3NwYW4+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJycHQtZXhwb3J0LWJ0biBycHQtZXhwb3J0LWNzdlwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRXhwb3J0Q3N2KClcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhcmVjb3JkQ291bnQoKVwiXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJFeHBvcnQgcmVzdWx0IHRhYmxlIHRvIENTViBmaWxlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxycHQtaWNvbiBuYW1lPVwiZG93bmxvYWRcIiBbc2l6ZV09XCIxM1wiIC8+XG4gICAgICAgICAgICAgICAgPHNwYW4+Q1NWPC9zcGFuPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwicnB0LWV4cG9ydC1idG4gcnB0LWV4cG9ydC1wcmludFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uUHJpbnRSZXBvcnQoKVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFyZWNvcmRDb3VudCgpXCJcbiAgICAgICAgICAgICAgICB0aXRsZT1cIlByaW50IHJlcG9ydCB3aXRoIGJyYW5kZWQgbGF5b3V0XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxycHQtaWNvbiBuYW1lPVwicHJpbnRlclwiIFtzaXplXT1cIjEzXCIgLz5cbiAgICAgICAgICAgICAgICA8c3Bhbj5QcmludDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuXG4gICAgICA8IS0tIENvcmUgUnVudGltZSBFbmdpbmUgLS0+XG4gICAgICA8cnB0LXJlcG9ydC1ydW50aW1lXG4gICAgICAgICNydW50aW1lUmVmXG4gICAgICAgIFtyZXBvcnRJZF09XCJpZCgpXCJcbiAgICAgICAgW3JlcG9ydF09XCJjdXJyZW50RGVmaW5pdGlvbigpXCJcbiAgICAgICAgKHJvd0FjdGlvblRyaWdnZXJlZCk9XCJvblJvd0FjdGlvblRyaWdnZXJlZCgkZXZlbnQpXCJcbiAgICAgICAgKGdyaWRTdGF0ZUNoYW5nZSk9XCJvbkdyaWRTdGF0ZUNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwib25TZWxlY3Rpb25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIChleHBvcnRSZXF1ZXN0ZWQpPVwiZXhwb3J0UmVxdWVzdGVkLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgIChwcmludFJlcXVlc3RlZCk9XCJwcmludFJlcXVlc3RlZC5lbWl0KCRldmVudClcIlxuICAgICAgLz5cblxuICAgICAgPCEtLSBTYXZlIFZpZXcgUHJlc2V0IE1vZGFsIC0tPlxuICAgICAgQGlmIChpc1NhdmVQcmVzZXRNb2RhbE9wZW4oKSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwicnB0LW1vZGFsLWJhY2tkcm9wXCIgKGNsaWNrKT1cImNsb3NlU2F2ZVByZXNldE1vZGFsKClcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJwdC1tb2RhbC1kaWFsb2dcIiByb2xlPVwiZGlhbG9nXCIgYXJpYS1tb2RhbD1cInRydWVcIiBhcmlhLWxhYmVsPVwiU2F2ZSBWaWV3IFByZXNldFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJycHQtbW9kYWwtaGVhZGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicnB0LW1vZGFsLWhlYWRlci10aXRsZVwiPlxuICAgICAgICAgICAgICA8cnB0LWljb24gbmFtZT1cImJvb2ttYXJrXCIgW3NpemVdPVwiMTZcIiAvPlxuICAgICAgICAgICAgICA8aDQgY2xhc3M9XCJycHQtbW9kYWwtdGl0bGVcIj5DdXN0b20gVmlldyBQcmVzZXRzPC9oND5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJycHQtbW9kYWwtY2xvc2VcIiAoY2xpY2spPVwiY2xvc2VTYXZlUHJlc2V0TW9kYWwoKVwiIGFyaWEtbGFiZWw9XCJDbG9zZSBtb2RhbFwiPuKclTwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJycHQtbW9kYWwtYm9keVwiPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJycHQtbW9kYWwtaGludFwiPlxuICAgICAgICAgICAgICBTYXZlIHlvdXIgYWN0aXZlIGNvbHVtbiBvcmRlcmluZywgd2lkdGhzLCBzb3J0aW5ncywgYW5kIGZpbHRlcnMgaW50byBhIHJldXNhYmxlIHZpZXcgcHJlc2V0LlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicnB0LWlucHV0LWdyb3VwXCI+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInJwdC1maWVsZC1sYWJlbFwiPk5ldyBWaWV3IE5hbWU8L2xhYmVsPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJycHQtbW9kYWwtaW5wdXRcIlxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiZS5nLiBIaWdoIFZhbHVlIFRyYW5zYWN0aW9ucyAtIFEzXCJcbiAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJuZXdQcmVzZXROYW1lKClcIlxuICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm5ld1ByZXNldE5hbWUuc2V0KCRldmVudClcIlxuICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cInNhdmVDdXJyZW50UHJlc2V0KClcIlxuICAgICAgICAgICAgICAgIGF1dG9mb2N1c1xuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwhLS0gRXhpc3RpbmcgUHJlc2V0cyBNYW5hZ2VtZW50IExpc3QgLS0+XG4gICAgICAgICAgICBAaWYgKHNhdmVkUHJlc2V0cygpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJwdC1leGlzdGluZy1wcmVzZXRzXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJycHQtZXhpc3RpbmctbGFiZWxcIj5TYXZlZCBWaWV3cyBpbiB0aGlzIHJlcG9ydDo8L3NwYW4+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJwdC1wcmVzZXRzLWxpc3RcIj5cbiAgICAgICAgICAgICAgICAgIEBmb3IgKHByZXNldCBvZiBzYXZlZFByZXNldHMoKTsgdHJhY2sgcHJlc2V0LmlkKSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJycHQtcHJlc2V0LXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJycHQtcHJlc2V0LWluZm9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicnB0LXByZXNldC1yb3ctbmFtZVwiPnt7IHByZXNldC5uYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChwcmVzZXQuaWQgPT09IGFjdGl2ZVByZXNldElkKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJycHQtcHJlc2V0LWFjdGl2ZS10YWdcIj5BY3RpdmU8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJwdC1idG4tZGVsLXByZXNldFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlUHJlc2V0KHByZXNldC5pZClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJEZWxldGUgdmlldyBwcmVzZXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkRlbGV0ZSB2aWV3IHByZXNldFwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHJwdC1pY29uIG5hbWU9XCJ0cmFzaFwiIFtzaXplXT1cIjEyXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJycHQtbW9kYWwtZm9vdGVyXCI+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInJwdC1idG4tY2FuY2VsXCIgKGNsaWNrKT1cImNsb3NlU2F2ZVByZXNldE1vZGFsKClcIj5DYW5jZWw8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwicnB0LWJ0bi1jb25maXJtXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFuZXdQcmVzZXROYW1lKCkudHJpbSgpXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNhdmVDdXJyZW50UHJlc2V0KClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBTYXZlIFZpZXdcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBbYFxuICAgIDpob3N0IHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgZm9udC1mYW1pbHk6IHZhcigtLXJwdC1mb250LWZhbWlseSwgaW5oZXJpdCk7XG4gICAgfVxuICAgIC5ycHQtZmFjYWRlLWNvbnRhaW5lciB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB9XG4gICAgLnJwdC1mYWNhZGUtdG9vbGJhciB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgIGdhcDogMTJweDtcbiAgICAgIHBhZGRpbmc6IDEwcHggMTZweDtcbiAgICAgIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ycHQtY29sb3ItYm9yZGVyLXN1YnRsZSwgI2UyZThmMCk7XG4gICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1ycHQtYm9yZGVyLXJhZGl1cy1sZywgOHB4KTtcbiAgICAgIGJveC1zaGFkb3c6IHZhcigtLXJwdC1ib3gtc2hhZG93LXhzLCAwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjA0KSk7XG4gICAgICBtYXJnaW4tYm90dG9tOiAxNHB4O1xuICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgIH1cbiAgICAucnB0LXRvb2xiYXItbGVmdCwgLnJwdC10b29sYmFyLXJpZ2h0IHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgZ2FwOiAxMHB4O1xuICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgIH1cbiAgICAucnB0LXJlcG9ydC10aXRsZS1iYWRnZSB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBnYXA6IDZweDtcbiAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgY29sb3I6ICMwZjE3MmE7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiA0cHg7XG4gICAgfVxuICAgIC5ycHQtdGl0bGUtZG90IHtcbiAgICAgIHdpZHRoOiA4cHg7XG4gICAgICBoZWlnaHQ6IDhweDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLXJwdC1jb2xvci1wcmltYXJ5LCAjMjU2M2ViKTtcbiAgICB9XG4gICAgLnJwdC1yZWNvcmQtY291bnQtY2hpcCB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBnYXA6IDVweDtcbiAgICAgIGJhY2tncm91bmQ6ICNmMWY1Zjk7XG4gICAgICBjb2xvcjogIzQ3NTU2OTtcbiAgICAgIGZvbnQtc2l6ZTogMC43MjVyZW07XG4gICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgcGFkZGluZzogM3B4IDhweDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJwdC1ib3JkZXItcmFkaXVzLWZ1bGwsIDk5OTlweCk7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjZTJlOGYwO1xuICAgIH1cbiAgICAucnB0LWNoaXAtZG90IHtcbiAgICAgIHdpZHRoOiA2cHg7XG4gICAgICBoZWlnaHQ6IDZweDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgIGJhY2tncm91bmQ6ICMxMGI5ODE7XG4gICAgfVxuICAgIC5ycHQtcHJlc2V0LWNvbnRyb2wge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBnYXA6IDZweDtcbiAgICAgIGJhY2tncm91bmQ6ICNmOGZhZmM7XG4gICAgICBwYWRkaW5nOiAzcHggNnB4O1xuICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcnB0LWJvcmRlci1yYWRpdXMsIDZweCk7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjZTJlOGYwO1xuICAgIH1cbiAgICAucnB0LXByZXNldC1sYWJlbCB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBnYXA6IDRweDtcbiAgICAgIGZvbnQtc2l6ZTogMC43MjVyZW07XG4gICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgY29sb3I6ICM2NDc0OGI7XG4gICAgfVxuICAgIC5ycHQtcHJlc2V0LXNlbGVjdCB7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjY2JkNWUxO1xuICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcnB0LWJvcmRlci1yYWRpdXMtc20sIDRweCk7XG4gICAgICBwYWRkaW5nOiAzcHggOHB4O1xuICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgIGNvbG9yOiAjMGYxNzJhO1xuICAgICAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgdmFyKC0tcnB0LXRyYW5zaXRpb24tc3BlZWQsIDE1MG1zKSBlYXNlO1xuICAgIH1cbiAgICAucnB0LXByZXNldC1zZWxlY3Q6Zm9jdXMge1xuICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1ycHQtY29sb3ItcHJpbWFyeSwgIzI1NjNlYik7XG4gICAgICBib3gtc2hhZG93OiAwIDAgMCAycHggdmFyKC0tcnB0LWNvbG9yLXByaW1hcnktZm9jdXMsIHJnYmEoMzcsIDk5LCAyMzUsIDAuMjUpKTtcbiAgICB9XG4gICAgLnJwdC1idG4tc2F2ZS12aWV3IHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGdhcDogNHB4O1xuICAgICAgYmFja2dyb3VuZDogdmFyKC0tcnB0LWNvbG9yLXByaW1hcnktbGlnaHQsICNlZmY2ZmYpO1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgI2JmZGJmZTtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtY29sb3ItcHJpbWFyeSwgIzI1NjNlYik7XG4gICAgICBmb250LXNpemU6IDAuNzI1cmVtO1xuICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgIHBhZGRpbmc6IDNweCA4cHg7XG4gICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1ycHQtYm9yZGVyLXJhZGl1cy1zbSwgNHB4KTtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS1ycHQtdHJhbnNpdGlvbi1zcGVlZCwgMTUwbXMpIGVhc2U7XG4gICAgfVxuICAgIC5ycHQtYnRuLXNhdmUtdmlldzpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAjZGJlYWZlO1xuICAgICAgYm9yZGVyLWNvbG9yOiAjOTNjNWZkO1xuICAgIH1cbiAgICAucnB0LWV4cG9ydC1idG4ge1xuICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgZ2FwOiA1cHg7XG4gICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1ycHQtYm9yZGVyLXJhZGl1cywgNnB4KTtcbiAgICAgIHBhZGRpbmc6IDVweCAxMnB4O1xuICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS1ycHQtdHJhbnNpdGlvbi1zcGVlZCwgMTUwbXMpIGVhc2U7XG4gICAgfVxuICAgIC5ycHQtZXhwb3J0LWJ0bjpkaXNhYmxlZCB7XG4gICAgICBvcGFjaXR5OiAwLjQ1O1xuICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgICB9XG4gICAgLnJwdC1leHBvcnQtZXhjZWwge1xuICAgICAgYmFja2dyb3VuZDogI2YwZmRmNDtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNiYmY3ZDA7XG4gICAgICBjb2xvcjogIzE1ODAzZDtcbiAgICB9XG4gICAgLnJwdC1leHBvcnQtZXhjZWw6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICAgICAgYmFja2dyb3VuZDogI2RjZmNlNztcbiAgICAgIGJvcmRlci1jb2xvcjogIzg2ZWZhYztcbiAgICB9XG4gICAgLnJwdC1leHBvcnQtY3N2IHtcbiAgICAgIGJhY2tncm91bmQ6ICNmOGZhZmM7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjY2JkNWUxO1xuICAgICAgY29sb3I6ICMzMzQxNTU7XG4gICAgfVxuICAgIC5ycHQtZXhwb3J0LWNzdjpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG4gICAgICBiYWNrZ3JvdW5kOiAjZjFmNWY5O1xuICAgICAgYm9yZGVyLWNvbG9yOiAjOTRhM2I4O1xuICAgICAgY29sb3I6ICMwZjE3MmE7XG4gICAgfVxuICAgIC5ycHQtZXhwb3J0LXByaW50IHtcbiAgICAgIGJhY2tncm91bmQ6ICNlZWYyZmY7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjYzdkMmZlO1xuICAgICAgY29sb3I6ICM0MzM4Y2E7XG4gICAgfVxuICAgIC5ycHQtZXhwb3J0LXByaW50OmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAgIGJhY2tncm91bmQ6ICNlMGU3ZmY7XG4gICAgICBib3JkZXItY29sb3I6ICNhNWI0ZmM7XG4gICAgfVxuICAgIC8qIE1vZGFsICovXG4gICAgLnJwdC1tb2RhbC1iYWNrZHJvcCB7XG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICBpbnNldDogMDtcbiAgICAgIGJhY2tncm91bmQ6IHJnYmEoMTUsIDIzLCA0MiwgMC40NSk7XG4gICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoNnB4KTtcbiAgICAgIHotaW5kZXg6IDExMDA7XG4gICAgfVxuICAgIC5ycHQtbW9kYWwtZGlhbG9nIHtcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgIHRvcDogNTAlO1xuICAgICAgbGVmdDogNTAlO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gICAgICB3aWR0aDogbWluKDQ2MHB4LCA5MnZ3KTtcbiAgICAgIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjY2JkNWUxO1xuICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcnB0LWJvcmRlci1yYWRpdXMtbGcsIDhweCk7XG4gICAgICBib3gtc2hhZG93OiAwIDIwcHggMjVweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4xNSksIDAgOHB4IDEwcHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gICAgICB6LWluZGV4OiAxMTAxO1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgYW5pbWF0aW9uOiBycHQtbW9kYWwtcG9wIDE2MG1zIGN1YmljLWJlemllcigwLjE2LCAxLCAwLjMsIDEpO1xuICAgIH1cbiAgICBAa2V5ZnJhbWVzIHJwdC1tb2RhbC1wb3Age1xuICAgICAgZnJvbSB7IG9wYWNpdHk6IDA7IHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC00NiUpIHNjYWxlKDAuOTcpOyB9XG4gICAgICB0byB7IG9wYWNpdHk6IDE7IHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpIHNjYWxlKDEpOyB9XG4gICAgfVxuICAgIC5ycHQtbW9kYWwtaGVhZGVyIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgcGFkZGluZzogMTRweCAxOHB4O1xuICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlMmU4ZjA7XG4gICAgICBiYWNrZ3JvdW5kOiAjZjhmYWZjO1xuICAgIH1cbiAgICAucnB0LW1vZGFsLWhlYWRlci10aXRsZSB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBnYXA6IDhweDtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtY29sb3ItcHJpbWFyeSwgIzI1NjNlYik7XG4gICAgfVxuICAgIC5ycHQtbW9kYWwtdGl0bGUge1xuICAgICAgZm9udC1zaXplOiAwLjk1cmVtO1xuICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgIGNvbG9yOiAjMGYxNzJhO1xuICAgICAgbWFyZ2luOiAwO1xuICAgIH1cbiAgICAucnB0LW1vZGFsLWNsb3NlIHtcbiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgY29sb3I6ICM2NDc0OGI7XG4gICAgICBmb250LXNpemU6IDEuMXJlbTtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIHdpZHRoOiAyOHB4O1xuICAgICAgaGVpZ2h0OiAyOHB4O1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgIHRyYW5zaXRpb246IGFsbCAxMjBtcyBlYXNlO1xuICAgIH1cbiAgICAucnB0LW1vZGFsLWNsb3NlOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6ICNlMmU4ZjA7XG4gICAgICBjb2xvcjogIzBmMTcyYTtcbiAgICB9XG4gICAgLnJwdC1tb2RhbC1ib2R5IHtcbiAgICAgIHBhZGRpbmc6IDE4cHg7XG4gICAgfVxuICAgIC5ycHQtbW9kYWwtaGludCB7XG4gICAgICBmb250LXNpemU6IDAuOHJlbTtcbiAgICAgIGNvbG9yOiAjNjQ3NDhiO1xuICAgICAgbWFyZ2luOiAwIDAgMTZweCAwO1xuICAgICAgbGluZS1oZWlnaHQ6IDEuNDU7XG4gICAgfVxuICAgIC5ycHQtaW5wdXQtZ3JvdXAge1xuICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgICB9XG4gICAgLnJwdC1maWVsZC1sYWJlbCB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICBjb2xvcjogIzMzNDE1NTtcbiAgICAgIG1hcmdpbi1ib3R0b206IDZweDtcbiAgICB9XG4gICAgLnJwdC1tb2RhbC1pbnB1dCB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjY2JkNWUxO1xuICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcnB0LWJvcmRlci1yYWRpdXMsIDZweCk7XG4gICAgICBwYWRkaW5nOiA4cHggMTJweDtcbiAgICAgIGZvbnQtc2l6ZTogMC44NXJlbTtcbiAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tcnB0LXRyYW5zaXRpb24tc3BlZWQsIDE1MG1zKSBlYXNlO1xuICAgIH1cbiAgICAucnB0LW1vZGFsLWlucHV0OmZvY3VzIHtcbiAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tcnB0LWNvbG9yLXByaW1hcnksICMyNTYzZWIpO1xuICAgICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHZhcigtLXJwdC1jb2xvci1wcmltYXJ5LWZvY3VzLCByZ2JhKDM3LCA5OSwgMjM1LCAwLjI1KSk7XG4gICAgfVxuICAgIC5ycHQtZXhpc3RpbmctcHJlc2V0cyB7XG4gICAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2UyZThmMDtcbiAgICAgIHBhZGRpbmctdG9wOiAxMnB4O1xuICAgICAgbWFyZ2luLXRvcDogOHB4O1xuICAgIH1cbiAgICAucnB0LWV4aXN0aW5nLWxhYmVsIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgZm9udC1zaXplOiAwLjcyNXJlbTtcbiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICBjb2xvcjogIzY0NzQ4YjtcbiAgICAgIG1hcmdpbi1ib3R0b206IDhweDtcbiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICBsZXR0ZXItc3BhY2luZzogMC41cHg7XG4gICAgfVxuICAgIC5ycHQtcHJlc2V0cy1saXN0IHtcbiAgICAgIG1heC1oZWlnaHQ6IDE0MHB4O1xuICAgICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgZ2FwOiA2cHg7XG4gICAgfVxuICAgIC5ycHQtcHJlc2V0LXJvdyB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgIHBhZGRpbmc6IDZweCAxMHB4O1xuICAgICAgYmFja2dyb3VuZDogI2Y4ZmFmYztcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNlMmU4ZjA7XG4gICAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgfVxuICAgIC5ycHQtcHJlc2V0LWluZm8ge1xuICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgZ2FwOiA4cHg7XG4gICAgfVxuICAgIC5ycHQtcHJlc2V0LXJvdy1uYW1lIHtcbiAgICAgIGZvbnQtc2l6ZTogMC43NzVyZW07XG4gICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgY29sb3I6ICMxZTI5M2I7XG4gICAgfVxuICAgIC5ycHQtcHJlc2V0LWFjdGl2ZS10YWcge1xuICAgICAgZm9udC1zaXplOiAwLjY1cmVtO1xuICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgIGJhY2tncm91bmQ6ICNkYmVhZmU7XG4gICAgICBjb2xvcjogIzFkNGVkODtcbiAgICAgIHBhZGRpbmc6IDFweCA2cHg7XG4gICAgICBib3JkZXItcmFkaXVzOiA5OTk5cHg7XG4gICAgfVxuICAgIC5ycHQtYnRuLWRlbC1wcmVzZXQge1xuICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXI6IG5vbmU7XG4gICAgICBjb2xvcjogIzk0YTNiODtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIHBhZGRpbmc6IDRweDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICB0cmFuc2l0aW9uOiBhbGwgMTIwbXMgZWFzZTtcbiAgICB9XG4gICAgLnJwdC1idG4tZGVsLXByZXNldDpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAjZmVlMmUyO1xuICAgICAgY29sb3I6ICNkYzI2MjY7XG4gICAgfVxuICAgIC5ycHQtbW9kYWwtZm9vdGVyIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICAgIGdhcDogMTBweDtcbiAgICAgIHBhZGRpbmc6IDEycHggMThweDtcbiAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZTJlOGYwO1xuICAgICAgYmFja2dyb3VuZDogI2Y4ZmFmYztcbiAgICB9XG4gICAgLnJwdC1idG4tY2FuY2VsIHtcbiAgICAgIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjY2JkNWUxO1xuICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcnB0LWJvcmRlci1yYWRpdXMsIDZweCk7XG4gICAgICBwYWRkaW5nOiA2cHggMTRweDtcbiAgICAgIGZvbnQtc2l6ZTogMC43NzVyZW07XG4gICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgY29sb3I6ICM0NzU1Njk7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICB0cmFuc2l0aW9uOiBhbGwgMTIwbXMgZWFzZTtcbiAgICB9XG4gICAgLnJwdC1idG4tY2FuY2VsOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6ICNmMWY1Zjk7XG4gICAgICBjb2xvcjogIzBmMTcyYTtcbiAgICB9XG4gICAgLnJwdC1idG4tY29uZmlybSB7XG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ycHQtY29sb3ItcHJpbWFyeSwgIzI1NjNlYik7XG4gICAgICBjb2xvcjogI2ZmZmZmZjtcbiAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJwdC1ib3JkZXItcmFkaXVzLCA2cHgpO1xuICAgICAgcGFkZGluZzogNnB4IDE2cHg7XG4gICAgICBmb250LXNpemU6IDAuNzc1cmVtO1xuICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIHRyYW5zaXRpb246IGFsbCAxMjBtcyBlYXNlO1xuICAgIH1cbiAgICAucnB0LWJ0bi1jb25maXJtOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLXJwdC1jb2xvci1wcmltYXJ5LWhvdmVyLCAjMWQ0ZWQ4KTtcbiAgICB9XG4gICAgLnJwdC1idG4tY29uZmlybTpkaXNhYmxlZCB7XG4gICAgICBvcGFjaXR5OiAwLjU7XG4gICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgIH1cbiAgYF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBScHRSZXBvcnRDb21wb25lbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IGV4cG9ydFNlcnZpY2UgPSBpbmplY3QoUmVwb3J0RXhwb3J0U2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGVyc2lzdGVuY2UgPSBpbmplY3QoUmVwb3J0UGVyc2lzdGVuY2VBZGFwdGVyLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gIHJlYWRvbmx5IGlkID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSByZXBvcnQgPSBpbnB1dDxSZXBvcnREZWZpbml0aW9uIHwgbnVsbD4obnVsbCk7XG4gIHJlYWRvbmx5IHBhcmFtZXRlcnMgPSBpbnB1dDxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oe30pO1xuICByZWFkb25seSBzaG93RXhwb3J0ID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG4gIHJlYWRvbmx5IGVuYWJsZVByZXNldHMgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcbiAgcmVhZG9ubHkgYXV0b0V4ZWN1dGUgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcblxuICByZWFkb25seSByb3dDbGljayA9IG91dHB1dDx7XG4gICAgcm93OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICBwYXJhbWV0ZXJzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICBhY3Rpb24/OiBHcmlkUm93Q2xpY2tBY3Rpb247XG4gIH0+KCk7XG4gIHJlYWRvbmx5IGRhdGFMb2FkZWQgPSBvdXRwdXQ8dW5rbm93bltdPigpO1xuICByZWFkb25seSBncmlkU3RhdGVDaGFuZ2UgPSBvdXRwdXQ8YW55PigpO1xuICByZWFkb25seSBzZWxlY3Rpb25DaGFuZ2UgPSBvdXRwdXQ8YW55W10+KCk7XG4gIHJlYWRvbmx5IHNlbGVjdGlvbkNoYW5nZWQgPSBvdXRwdXQ8YW55W10+KCk7XG4gIHJlYWRvbmx5IHByZXNldFNhdmVkID0gb3V0cHV0PHsgbmFtZTogc3RyaW5nOyBwcmVzZXQ6IFJlcG9ydFZpZXdQcmVzZXQgfT4oKTtcbiAgcmVhZG9ubHkgcHJlc2V0Q2hhbmdlID0gb3V0cHV0PFJlcG9ydFZpZXdQcmVzZXQgfCBudWxsPigpO1xuICByZWFkb25seSBleHBvcnRSZXF1ZXN0ZWQgPSBvdXRwdXQ8YW55PigpO1xuICByZWFkb25seSBwcmludFJlcXVlc3RlZCA9IG91dHB1dDxhbnk+KCk7XG5cbiAgcmVhZG9ubHkgcnVudGltZUNvbXBvbmVudCA9IHZpZXdDaGlsZChSZXBvcnRSdW50aW1lQ29tcG9uZW50KTtcblxuICAvLyBQcmVzZXQgc3RhdGVzXG4gIHJlYWRvbmx5IGFjdGl2ZVByZXNldElkID0gc2lnbmFsPHN0cmluZz4oJ2RlZmF1bHQnKTtcbiAgcmVhZG9ubHkgaXNTYXZlUHJlc2V0TW9kYWxPcGVuID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgbmV3UHJlc2V0TmFtZSA9IHNpZ25hbDxzdHJpbmc+KCcnKTtcbiAgcmVhZG9ubHkgbGF0ZXN0R3JpZFN0YXRlID0gc2lnbmFsPFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgbnVsbD4obnVsbCk7XG4gIHJlYWRvbmx5IGN1c3RvbVByZXNldHMgPSBzaWduYWw8UmVwb3J0Vmlld1ByZXNldFtdPihbXSk7XG5cbiAgcmVhZG9ubHkgY3VycmVudERlZmluaXRpb24gPSBjb21wdXRlZDxSZXBvcnREZWZpbml0aW9uIHwgbnVsbD4oKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLnJlcG9ydCgpO1xuICB9KTtcblxuICByZWFkb25seSBhY3RpdmVEZWZpbml0aW9uID0gY29tcHV0ZWQ8UmVwb3J0RGVmaW5pdGlvbiB8IG51bGw+KCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5yZXBvcnQoKSA/PyB0aGlzLnJ1bnRpbWVDb21wb25lbnQoKT8uY3VycmVudERlZmluaXRpb24oKSA/PyBudWxsO1xuICB9KTtcblxuICByZWFkb25seSByZWNvcmRDb3VudCA9IGNvbXB1dGVkPG51bWJlcj4oKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLnJ1bnRpbWVDb21wb25lbnQoKT8ucmVzdWx0RGF0YSgpPy5sZW5ndGggPz8gMDtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgc2hvd1Rvb2xiYXIgPSBjb21wdXRlZDxib29sZWFuPigoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuc2hvd0V4cG9ydCgpIHx8IHRoaXMuZW5hYmxlUHJlc2V0cygpO1xuICB9KTtcblxuICByZWFkb25seSBzYXZlZFByZXNldHMgPSBjb21wdXRlZDxSZXBvcnRWaWV3UHJlc2V0W10+KCgpID0+IHtcbiAgICBjb25zdCBkZWYgPSB0aGlzLmFjdGl2ZURlZmluaXRpb24oKTtcbiAgICBjb25zdCBpbml0aWFsUHJlc2V0cyA9ICgoZGVmPy5ncmlkPy5vcHRpb25zIGFzIGFueSk/LnByZXNldHMgYXMgUmVwb3J0Vmlld1ByZXNldFtdKSA/PyBbXTtcbiAgICBjb25zdCBtYXAgPSBuZXcgTWFwPHN0cmluZywgUmVwb3J0Vmlld1ByZXNldD4oKTtcbiAgICBmb3IgKGNvbnN0IHAgb2YgaW5pdGlhbFByZXNldHMpIHtcbiAgICAgIGlmIChwICYmIHAuaWQpIG1hcC5zZXQocC5pZCwgcCk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgcCBvZiB0aGlzLmN1c3RvbVByZXNldHMoKSkge1xuICAgICAgaWYgKHAgJiYgcC5pZCkgbWFwLnNldChwLmlkLCBwKTtcbiAgICB9XG4gICAgcmV0dXJuIEFycmF5LmZyb20obWFwLnZhbHVlcygpKTtcbiAgfSk7XG5cbiAgb25Sb3dBY3Rpb25UcmlnZ2VyZWQoZXZlbnQ6IHtcbiAgICBhY3Rpb246IEdyaWRSb3dDbGlja0FjdGlvbjtcbiAgICByb3c6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIHBhcmFtZXRlcnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICB9KTogdm9pZCB7XG4gICAgdGhpcy5yb3dDbGljay5lbWl0KHtcbiAgICAgIHJvdzogZXZlbnQucm93LFxuICAgICAgcGFyYW1ldGVyczogZXZlbnQucGFyYW1ldGVycyxcbiAgICAgIGFjdGlvbjogZXZlbnQuYWN0aW9uLFxuICAgIH0pO1xuICB9XG5cbiAgb25HcmlkU3RhdGVDaGFuZ2VkKHN0YXRlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmxhdGVzdEdyaWRTdGF0ZS5zZXQoc3RhdGUpO1xuICAgIHRoaXMuZ3JpZFN0YXRlQ2hhbmdlLmVtaXQoc3RhdGUpO1xuICB9XG5cbiAgb25TZWxlY3Rpb25DaGFuZ2Uocm93czogYW55W10pOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHJvd3MpO1xuICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlZC5lbWl0KHJvd3MpO1xuICB9XG5cbiAgb25TZWxlY3RQcmVzZXQocHJlc2V0SWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuYWN0aXZlUHJlc2V0SWQuc2V0KHByZXNldElkKTtcbiAgICBpZiAocHJlc2V0SWQgPT09ICdkZWZhdWx0Jykge1xuICAgICAgdGhpcy5wcmVzZXRDaGFuZ2UuZW1pdChudWxsKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBwcmVzZXQgPSB0aGlzLnNhdmVkUHJlc2V0cygpLmZpbmQoKHApID0+IHAuaWQgPT09IHByZXNldElkKTtcbiAgICBpZiAocHJlc2V0KSB7XG4gICAgICBpZiAocHJlc2V0LmdyaWRTdGF0ZSkge1xuICAgICAgICB0aGlzLmxhdGVzdEdyaWRTdGF0ZS5zZXQocHJlc2V0LmdyaWRTdGF0ZSk7XG4gICAgICAgIHRoaXMuZ3JpZFN0YXRlQ2hhbmdlLmVtaXQocHJlc2V0LmdyaWRTdGF0ZSk7XG4gICAgICB9XG4gICAgICB0aGlzLnByZXNldENoYW5nZS5lbWl0KHByZXNldCk7XG4gICAgfVxuICB9XG5cbiAgY29uZmlybVNhdmVQcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy5zYXZlQ3VycmVudFByZXNldCgpO1xuICB9XG5cbiAgZXhwb3J0RXhjZWwoKTogdm9pZCB7XG4gICAgdGhpcy5vbkV4cG9ydEV4Y2VsKCk7XG4gIH1cblxuICBleHBvcnRDc3YoKTogdm9pZCB7XG4gICAgdGhpcy5vbkV4cG9ydENzdigpO1xuICB9XG5cbiAgcHJpbnQoKTogdm9pZCB7XG4gICAgdGhpcy5vblByaW50UmVwb3J0KCk7XG4gIH1cblxuICBvcGVuU2F2ZVByZXNldE1vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMubmV3UHJlc2V0TmFtZS5zZXQoJycpO1xuICAgIHRoaXMuaXNTYXZlUHJlc2V0TW9kYWxPcGVuLnNldCh0cnVlKTtcbiAgfVxuXG4gIGNsb3NlU2F2ZVByZXNldE1vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMuaXNTYXZlUHJlc2V0TW9kYWxPcGVuLnNldChmYWxzZSk7XG4gIH1cblxuICBzYXZlQ3VycmVudFByZXNldCgpOiB2b2lkIHtcbiAgICBjb25zdCBuYW1lID0gdGhpcy5uZXdQcmVzZXROYW1lKCkudHJpbSgpO1xuICAgIGlmICghbmFtZSkgcmV0dXJuO1xuXG4gICAgY29uc3QgcHJlc2V0SWQgPSBgcHJlc2V0XyR7RGF0ZS5ub3coKX1gO1xuICAgIGNvbnN0IG5ld1ByZXNldDogUmVwb3J0Vmlld1ByZXNldCA9IHtcbiAgICAgIGlkOiBwcmVzZXRJZCxcbiAgICAgIG5hbWUsXG4gICAgICBncmlkU3RhdGU6IHRoaXMubGF0ZXN0R3JpZFN0YXRlKCkgPz8ge30sXG4gICAgICBjcmVhdGVkQXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICB9O1xuXG4gICAgY29uc3QgZGVmID0gdGhpcy5hY3RpdmVEZWZpbml0aW9uKCk7XG4gICAgaWYgKGRlZiAmJiBkZWYuZ3JpZCkge1xuICAgICAgaWYgKCFkZWYuZ3JpZC5vcHRpb25zKSBkZWYuZ3JpZC5vcHRpb25zID0ge307XG4gICAgICBjb25zdCBjdXJyZW50UHJlc2V0czogUmVwb3J0Vmlld1ByZXNldFtdID0gKGRlZi5ncmlkLm9wdGlvbnMgYXMgYW55KS5wcmVzZXRzID8/IFtdO1xuICAgICAgKGRlZi5ncmlkLm9wdGlvbnMgYXMgYW55KS5wcmVzZXRzID0gWy4uLmN1cnJlbnRQcmVzZXRzLCBuZXdQcmVzZXRdO1xuXG4gICAgICBpZiAodGhpcy5wZXJzaXN0ZW5jZSAmJiBkZWYuaWQpIHtcbiAgICAgICAgdGhpcy5wZXJzaXN0ZW5jZS5zYXZlKGRlZikuc3Vic2NyaWJlKHtcbiAgICAgICAgICBuZXh0OiAoKSA9PiB7fSxcbiAgICAgICAgICBlcnJvcjogKCkgPT4ge30sXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuY3VzdG9tUHJlc2V0cy51cGRhdGUoKHByZXYpID0+IFsuLi5wcmV2LCBuZXdQcmVzZXRdKTtcbiAgICB0aGlzLmFjdGl2ZVByZXNldElkLnNldChwcmVzZXRJZCk7XG4gICAgdGhpcy5wcmVzZXRTYXZlZC5lbWl0KHsgbmFtZSwgcHJlc2V0OiBuZXdQcmVzZXQgfSk7XG4gICAgdGhpcy5jbG9zZVNhdmVQcmVzZXRNb2RhbCgpO1xuICB9XG5cbiAgZGVsZXRlUHJlc2V0KHByZXNldElkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAocHJlc2V0SWQgPT09ICdkZWZhdWx0JykgcmV0dXJuO1xuXG4gICAgdGhpcy5jdXN0b21QcmVzZXRzLnVwZGF0ZSgocHJldikgPT4gcHJldi5maWx0ZXIoKHApID0+IHAuaWQgIT09IHByZXNldElkKSk7XG5cbiAgICBjb25zdCBkZWYgPSB0aGlzLmFjdGl2ZURlZmluaXRpb24oKTtcbiAgICBpZiAoZGVmICYmIGRlZi5ncmlkICYmIGRlZi5ncmlkLm9wdGlvbnMpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnQgPSAoKGRlZi5ncmlkLm9wdGlvbnMgYXMgYW55KS5wcmVzZXRzIGFzIFJlcG9ydFZpZXdQcmVzZXRbXSkgPz8gW107XG4gICAgICAoZGVmLmdyaWQub3B0aW9ucyBhcyBhbnkpLnByZXNldHMgPSBjdXJyZW50LmZpbHRlcigocCkgPT4gcC5pZCAhPT0gcHJlc2V0SWQpO1xuXG4gICAgICBpZiAodGhpcy5wZXJzaXN0ZW5jZSAmJiBkZWYuaWQpIHtcbiAgICAgICAgdGhpcy5wZXJzaXN0ZW5jZS5zYXZlKGRlZikuc3Vic2NyaWJlKHtcbiAgICAgICAgICBuZXh0OiAoKSA9PiB7fSxcbiAgICAgICAgICBlcnJvcjogKCkgPT4ge30sXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLmFjdGl2ZVByZXNldElkKCkgPT09IHByZXNldElkKSB7XG4gICAgICB0aGlzLm9uU2VsZWN0UHJlc2V0KCdkZWZhdWx0Jyk7XG4gICAgfVxuICB9XG5cbiAgb25FeHBvcnRFeGNlbCgpOiB2b2lkIHtcbiAgICBjb25zdCBkYXRhID0gdGhpcy5ydW50aW1lQ29tcG9uZW50KCk/LnJlc3VsdERhdGEoKTtcbiAgICBpZiAoIWRhdGEgfHwgIUFycmF5LmlzQXJyYXkoZGF0YSkgfHwgZGF0YS5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICBjb25zdCBkZWYgPSB0aGlzLmFjdGl2ZURlZmluaXRpb24oKTtcbiAgICBjb25zdCBjb2xzID0gZGVmPy5ncmlkPy5jb2x1bW5zLm1hcCgoYykgPT4gKHsgZmllbGQ6IGMuZmllbGQsIGhlYWRlcjogYy5sYWJlbCB9KSk7XG4gICAgdGhpcy5leHBvcnRTZXJ2aWNlLmV4cG9ydEV4Y2VsKGRhdGEgYXMgYW55LCB7XG4gICAgICBmaWxlTmFtZTogZGVmPy5uYW1lID8gYCR7ZGVmLm5hbWV9Lnhsc2AgOiAncmVwb3J0LnhscycsXG4gICAgICBjb2x1bW5zOiBjb2xzLFxuICAgICAgYnJhbmRlZEhlYWRlcjogeyByZXBvcnRUaXRsZTogZGVmPy5uYW1lIH0sXG4gICAgfSk7XG4gIH1cblxuICBvbkV4cG9ydENzdigpOiB2b2lkIHtcbiAgICBjb25zdCBkYXRhID0gdGhpcy5ydW50aW1lQ29tcG9uZW50KCk/LnJlc3VsdERhdGEoKTtcbiAgICBpZiAoIWRhdGEgfHwgIUFycmF5LmlzQXJyYXkoZGF0YSkgfHwgZGF0YS5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICBjb25zdCBkZWYgPSB0aGlzLmFjdGl2ZURlZmluaXRpb24oKTtcbiAgICBjb25zdCBjb2xzID0gZGVmPy5ncmlkPy5jb2x1bW5zLm1hcCgoYykgPT4gKHsgZmllbGQ6IGMuZmllbGQsIGhlYWRlcjogYy5sYWJlbCB9KSk7XG4gICAgdGhpcy5leHBvcnRTZXJ2aWNlLmV4cG9ydENzdihkYXRhIGFzIGFueSwge1xuICAgICAgZmlsZU5hbWU6IGRlZj8ubmFtZSA/IGAke2RlZi5uYW1lfS5jc3ZgIDogJ3JlcG9ydC5jc3YnLFxuICAgICAgY29sdW1uczogY29scyxcbiAgICAgIGJyYW5kZWRIZWFkZXI6IHsgcmVwb3J0VGl0bGU6IGRlZj8ubmFtZSB9LFxuICAgIH0pO1xuICB9XG5cbiAgb25QcmludFJlcG9ydCgpOiB2b2lkIHtcbiAgICBjb25zdCBkYXRhID0gdGhpcy5ydW50aW1lQ29tcG9uZW50KCk/LnJlc3VsdERhdGEoKTtcbiAgICBpZiAoIWRhdGEgfHwgIUFycmF5LmlzQXJyYXkoZGF0YSkgfHwgZGF0YS5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICBjb25zdCBkZWYgPSB0aGlzLmFjdGl2ZURlZmluaXRpb24oKTtcbiAgICBjb25zdCBjb2xzID0gZGVmPy5ncmlkPy5jb2x1bW5zLm1hcCgoYykgPT4gKHsgZmllbGQ6IGMuZmllbGQsIGhlYWRlcjogYy5sYWJlbCB9KSk7XG4gICAgdGhpcy5leHBvcnRTZXJ2aWNlLnByaW50UmVwb3J0KGRhdGEgYXMgYW55LCB7XG4gICAgICB0aXRsZTogZGVmPy5uYW1lIHx8ICdSZXBvcnQgUHJpbnQgUHJldmlldycsXG4gICAgICBjb2x1bW5zOiBjb2xzLFxuICAgICAgYnJhbmRlZEhlYWRlcjogeyByZXBvcnRUaXRsZTogZGVmPy5uYW1lIH0sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
545
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnB0LXJlcG9ydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9id2F5cy1yZXBvcnQvc3JjL2xpYi9mZWF0dXJlcy9ydW50aW1lL3JwdC1yZXBvcnQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHN0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDL0UsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDdkYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0seURBQXlELENBQUM7OztBQXdpQm5HLE1BQU0sT0FBTyxrQkFBa0I7SUFDWixhQUFhLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDNUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBRTNFLEVBQUUsR0FBRyxLQUFLLENBQXFCLFNBQVMsQ0FBQyxDQUFDO0lBQzFDLE1BQU0sR0FBRyxLQUFLLENBQTBCLElBQUksQ0FBQyxDQUFDO0lBQzlDLFVBQVUsR0FBRyxLQUFLLENBQTBCLEVBQUUsQ0FBQyxDQUFDO0lBQ2hELFVBQVUsR0FBRyxLQUFLLENBQVUsSUFBSSxDQUFDLENBQUM7SUFDbEMsYUFBYSxHQUFHLEtBQUssQ0FB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QUFFLFdBQVcsMGdDQUFFLHNCQUFzQixzV0FBRSxnQkFBZ0I7OzRGQTJoQmxFLGtCQUFrQjtrQkE5aEI5QixTQUFTOytCQUNFLHNCQUFzQixjQUNwQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLHNCQUFzQixFQUFFLGdCQUFnQixDQUFDLFlBQ3BFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNEtULG1CQTRXZ0IsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIGNvbXB1dGVkLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBvdXRwdXQsXG4gIHNpZ25hbCxcbiAgdmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFJlcG9ydERlZmluaXRpb24gfSBmcm9tICcuLi8uLi9jb3JlL21vZGVscy9yZXBvcnQtZGVmaW5pdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBHcmlkUm93Q2xpY2tBY3Rpb24gfSBmcm9tICcuLi8uLi9jb3JlL21vZGVscy9yZXBvcnQtZ3JpZC5tb2RlbCc7XG5pbXBvcnQgeyBSZXBvcnRFeHBvcnRTZXJ2aWNlIH0gZnJvbSAnLi4vZXhwb3J0L3NlcnZpY2VzL3JlcG9ydC1leHBvcnQuc2VydmljZSc7XG5pbXBvcnQgeyBSZXBvcnRSdW50aW1lQ29tcG9uZW50IH0gZnJvbSAnLi9yZXBvcnQtcnVudGltZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUnB0SWNvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3ByaW1pdGl2ZXMvY29tcG9uZW50cy9pY29uL3JwdC1pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSZXBvcnRQZXJzaXN0ZW5jZUFkYXB0ZXIgfSBmcm9tICcuLi8uLi9kYXRhLWFjY2Vzcy9jb250cmFjdHMvcmVwb3J0LXBlcnNpc3RlbmNlLmNvbnRyYWN0JztcblxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRWaWV3UHJlc2V0IHtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBncmlkU3RhdGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBmb3JtVmFsdWVzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGNyZWF0ZWRBdD86IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncnB0LXJlcG9ydCwgcnB0LXZpZXcnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgUmVwb3J0UnVudGltZUNvbXBvbmVudCwgUnB0SWNvbkNvbXBvbmVudF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cInJwdC1mYWNhZGUtY29udGFpbmVyXCI+XG4gICAgICA8IS0tIFRvcCBBY3Rpb24gJiBQcmVzZXQgQmFyIC0tPlxuICAgICAgQGlmIChzaG93VG9vbGJhcigpKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJycHQtZmFjYWRlLXRvb2xiYXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicnB0LXRvb2xiYXItbGVmdFwiPlxuICAgICAgICAgICAgQGlmIChhY3RpdmVEZWZpbml0aW9uKCk/Lm5hbWUpIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJwdC1yZXBvcnQtdGl0bGUtYmFkZ2VcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJwdC10aXRsZS1kb3RcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJycHQtdGl0bGUtdGV4dFwiPnt7IGFjdGl2ZURlZmluaXRpb24oKT8ubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpZiAocmVjb3JkQ291bnQoKSA+IDApIHtcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJycHQtcmVjb3JkLWNvdW50LWNoaXBcIiB0aXRsZT1cIkN1cnJlbnQgZGF0YXNldCBzaXplXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJycHQtY2hpcC1kb3RcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJycHQtdGFidWxhci1udW1zXCI+e3sgcmVjb3JkQ291bnQoKSB9fSByb3dzPC9zcGFuPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIDwhLS0gU2F2ZWQgVmlld3MgLyBQcmVzZXQgU3dpdGNoZXIgLS0+XG4gICAgICAgICAgICBAaWYgKGVuYWJsZVByZXNldHMoKSkge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicnB0LXByZXNldC1jb250cm9sXCI+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwicnB0LXByZXNldC1sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgPHJwdC1pY29uIG5hbWU9XCJib29rbWFya1wiIFtzaXplXT1cIjEyXCIgLz5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPlZpZXc6PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJycHQtcHJlc2V0LXNlbGVjdFwiXG4gICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJhY3RpdmVQcmVzZXRJZCgpXCJcbiAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uU2VsZWN0UHJlc2V0KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIlNlbGVjdCByZXBvcnQgdmlldyBwcmVzZXRcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJkZWZhdWx0XCI+RGVmYXVsdCBWaWV3PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICBAZm9yIChwcmVzZXQgb2Ygc2F2ZWRQcmVzZXRzKCk7IHRyYWNrIHByZXNldC5pZCkge1xuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJwcmVzZXQuaWRcIj57eyBwcmVzZXQubmFtZSB9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJycHQtYnRuLXNhdmUtdmlld1wiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlblNhdmVQcmVzZXRNb2RhbCgpXCJcbiAgICAgICAgICAgICAgICAgIHRpdGxlPVwiU2F2ZSBjdXJyZW50IGdyaWQgdmlldyBvciBtYW5hZ2UgcHJlc2V0c1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPHJwdC1pY29uIG5hbWU9XCJwbHVzXCIgW3NpemVdPVwiMTFcIiAvPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+U2F2ZSBWaWV3PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwhLS0gRXhwb3J0IEFjdGlvbnMgLS0+XG4gICAgICAgICAgQGlmIChzaG93RXhwb3J0KCkpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJycHQtdG9vbGJhci1yaWdodFwiPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJycHQtZXhwb3J0LWJ0biBycHQtZXhwb3J0LWV4Y2VsXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25FeHBvcnRFeGNlbCgpXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXJlY29yZENvdW50KClcIlxuICAgICAgICAgICAgICAgIHRpdGxlPVwiRXhwb3J0IHJlc3VsdCB0YWJsZSB0byBFeGNlbCBzcHJlYWRzaGVldCAoLnhscylcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHJwdC1pY29uIG5hbWU9XCJmaWxlLXRleHRcIiBbc2l6ZV09XCIxM1wiIC8+XG4gICAgICAgICAgICAgICAgPHNwYW4+RXhjZWw8L3NwYW4+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJycHQtZXhwb3J0LWJ0biBycHQtZXhwb3J0LWNzdlwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRXhwb3J0Q3N2KClcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhcmVjb3JkQ291bnQoKVwiXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJFeHBvcnQgcmVzdWx0IHRhYmxlIHRvIENTViBmaWxlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxycHQtaWNvbiBuYW1lPVwiZG93bmxvYWRcIiBbc2l6ZV09XCIxM1wiIC8+XG4gICAgICAgICAgICAgICAgPHNwYW4+Q1NWPC9zcGFuPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwicnB0LWV4cG9ydC1idG4gcnB0LWV4cG9ydC1wcmludFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uUHJpbnRSZXBvcnQoKVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFyZWNvcmRDb3VudCgpXCJcbiAgICAgICAgICAgICAgICB0aXRsZT1cIlByaW50IHJlcG9ydCB3aXRoIGJyYW5kZWQgbGF5b3V0XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxycHQtaWNvbiBuYW1lPVwicHJpbnRlclwiIFtzaXplXT1cIjEzXCIgLz5cbiAgICAgICAgICAgICAgICA8c3Bhbj5QcmludDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuXG4gICAgICA8IS0tIENvcmUgUnVudGltZSBFbmdpbmUgLS0+XG4gICAgICA8cnB0LXJlcG9ydC1ydW50aW1lXG4gICAgICAgICNydW50aW1lUmVmXG4gICAgICAgIFtyZXBvcnRJZF09XCJpZCgpXCJcbiAgICAgICAgW3JlcG9ydF09XCJjdXJyZW50RGVmaW5pdGlvbigpXCJcbiAgICAgICAgKHJvd0FjdGlvblRyaWdnZXJlZCk9XCJvblJvd0FjdGlvblRyaWdnZXJlZCgkZXZlbnQpXCJcbiAgICAgICAgKGdyaWRTdGF0ZUNoYW5nZSk9XCJvbkdyaWRTdGF0ZUNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwib25TZWxlY3Rpb25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIChleHBvcnRSZXF1ZXN0ZWQpPVwiZXhwb3J0UmVxdWVzdGVkLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgIChwcmludFJlcXVlc3RlZCk9XCJwcmludFJlcXVlc3RlZC5lbWl0KCRldmVudClcIlxuICAgICAgLz5cblxuICAgICAgPCEtLSBTYXZlIFZpZXcgUHJlc2V0IE1vZGFsIC0tPlxuICAgICAgQGlmIChpc1NhdmVQcmVzZXRNb2RhbE9wZW4oKSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwicnB0LW1vZGFsLWJhY2tkcm9wXCIgKGNsaWNrKT1cImNsb3NlU2F2ZVByZXNldE1vZGFsKClcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJwdC1tb2RhbC1kaWFsb2dcIiByb2xlPVwiZGlhbG9nXCIgYXJpYS1tb2RhbD1cInRydWVcIiBhcmlhLWxhYmVsPVwiU2F2ZSBWaWV3IFByZXNldFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJycHQtbW9kYWwtaGVhZGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicnB0LW1vZGFsLWhlYWRlci10aXRsZVwiPlxuICAgICAgICAgICAgICA8cnB0LWljb24gbmFtZT1cImJvb2ttYXJrXCIgW3NpemVdPVwiMTZcIiAvPlxuICAgICAgICAgICAgICA8aDQgY2xhc3M9XCJycHQtbW9kYWwtdGl0bGVcIj5DdXN0b20gVmlldyBQcmVzZXRzPC9oND5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJycHQtbW9kYWwtY2xvc2VcIiAoY2xpY2spPVwiY2xvc2VTYXZlUHJlc2V0TW9kYWwoKVwiIGFyaWEtbGFiZWw9XCJDbG9zZSBtb2RhbFwiPuKclTwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJycHQtbW9kYWwtYm9keVwiPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJycHQtbW9kYWwtaGludFwiPlxuICAgICAgICAgICAgICBTYXZlIHlvdXIgYWN0aXZlIGNvbHVtbiBvcmRlcmluZywgd2lkdGhzLCBzb3J0aW5ncywgYW5kIGZpbHRlcnMgaW50byBhIHJldXNhYmxlIHZpZXcgcHJlc2V0LlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicnB0LWlucHV0LWdyb3VwXCI+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInJwdC1maWVsZC1sYWJlbFwiPk5ldyBWaWV3IE5hbWU8L2xhYmVsPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJycHQtbW9kYWwtaW5wdXRcIlxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiZS5nLiBIaWdoIFZhbHVlIFRyYW5zYWN0aW9ucyAtIFEzXCJcbiAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJuZXdQcmVzZXROYW1lKClcIlxuICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm5ld1ByZXNldE5hbWUuc2V0KCRldmVudClcIlxuICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cInNhdmVDdXJyZW50UHJlc2V0KClcIlxuICAgICAgICAgICAgICAgIGF1dG9mb2N1c1xuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwhLS0gRXhpc3RpbmcgUHJlc2V0cyBNYW5hZ2VtZW50IExpc3QgLS0+XG4gICAgICAgICAgICBAaWYgKHNhdmVkUHJlc2V0cygpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJwdC1leGlzdGluZy1wcmVzZXRzXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJycHQtZXhpc3RpbmctbGFiZWxcIj5TYXZlZCBWaWV3cyBpbiB0aGlzIHJlcG9ydDo8L3NwYW4+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJwdC1wcmVzZXRzLWxpc3RcIj5cbiAgICAgICAgICAgICAgICAgIEBmb3IgKHByZXNldCBvZiBzYXZlZFByZXNldHMoKTsgdHJhY2sgcHJlc2V0LmlkKSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJycHQtcHJlc2V0LXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJycHQtcHJlc2V0LWluZm9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicnB0LXByZXNldC1yb3ctbmFtZVwiPnt7IHByZXNldC5uYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChwcmVzZXQuaWQgPT09IGFjdGl2ZVByZXNldElkKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJycHQtcHJlc2V0LWFjdGl2ZS10YWdcIj5BY3RpdmU8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJwdC1idG4tZGVsLXByZXNldFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlUHJlc2V0KHByZXNldC5pZClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJEZWxldGUgdmlldyBwcmVzZXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkRlbGV0ZSB2aWV3IHByZXNldFwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHJwdC1pY29uIG5hbWU9XCJ0cmFzaFwiIFtzaXplXT1cIjEyXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJycHQtbW9kYWwtZm9vdGVyXCI+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInJwdC1idG4tY2FuY2VsXCIgKGNsaWNrKT1cImNsb3NlU2F2ZVByZXNldE1vZGFsKClcIj5DYW5jZWw8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwicnB0LWJ0bi1jb25maXJtXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFuZXdQcmVzZXROYW1lKCkudHJpbSgpXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNhdmVDdXJyZW50UHJlc2V0KClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBTYXZlIFZpZXdcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBbYFxuICAgIDpob3N0IHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgZm9udC1mYW1pbHk6IHZhcigtLXJwdC1mb250LWZhbWlseSwgaW5oZXJpdCk7XG4gICAgfVxuICAgIC5ycHQtZmFjYWRlLWNvbnRhaW5lciB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB9XG4gICAgLnJwdC1mYWNhZGUtdG9vbGJhciB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgIGdhcDogMTJweDtcbiAgICAgIHBhZGRpbmc6IDEwcHggMTZweDtcbiAgICAgIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ycHQtY29sb3ItYm9yZGVyLXN1YnRsZSwgI2UyZThmMCk7XG4gICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1ycHQtYm9yZGVyLXJhZGl1cy1sZywgOHB4KTtcbiAgICAgIGJveC1zaGFkb3c6IHZhcigtLXJwdC1ib3gtc2hhZG93LXhzLCAwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjA0KSk7XG4gICAgICBtYXJnaW4tYm90dG9tOiAxNHB4O1xuICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgIH1cbiAgICAucnB0LXRvb2xiYXItbGVmdCwgLnJwdC10b29sYmFyLXJpZ2h0IHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgZ2FwOiAxMHB4O1xuICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgIH1cbiAgICAucnB0LXJlcG9ydC10aXRsZS1iYWRnZSB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBnYXA6IDZweDtcbiAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgY29sb3I6ICMwZjE3MmE7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiA0cHg7XG4gICAgfVxuICAgIC5ycHQtdGl0bGUtZG90IHtcbiAgICAgIHdpZHRoOiA4cHg7XG4gICAgICBoZWlnaHQ6IDhweDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLXJwdC1jb2xvci1wcmltYXJ5LCAjMjU2M2ViKTtcbiAgICB9XG4gICAgLnJwdC1yZWNvcmQtY291bnQtY2hpcCB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBnYXA6IDVweDtcbiAgICAgIGJhY2tncm91bmQ6ICNmMWY1Zjk7XG4gICAgICBjb2xvcjogIzQ3NTU2OTtcbiAgICAgIGZvbnQtc2l6ZTogMC43MjVyZW07XG4gICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgcGFkZGluZzogM3B4IDhweDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJwdC1ib3JkZXItcmFkaXVzLWZ1bGwsIDk5OTlweCk7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjZTJlOGYwO1xuICAgIH1cbiAgICAucnB0LWNoaXAtZG90IHtcbiAgICAgIHdpZHRoOiA2cHg7XG4gICAgICBoZWlnaHQ6IDZweDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgIGJhY2tncm91bmQ6ICMxMGI5ODE7XG4gICAgfVxuICAgIC5ycHQtcHJlc2V0LWNvbnRyb2wge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBnYXA6IDZweDtcbiAgICAgIGJhY2tncm91bmQ6ICNmOGZhZmM7XG4gICAgICBwYWRkaW5nOiAzcHggNnB4O1xuICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcnB0LWJvcmRlci1yYWRpdXMsIDZweCk7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjZTJlOGYwO1xuICAgIH1cbiAgICAucnB0LXByZXNldC1sYWJlbCB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBnYXA6IDRweDtcbiAgICAgIGZvbnQtc2l6ZTogMC43MjVyZW07XG4gICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgY29sb3I6ICM2NDc0OGI7XG4gICAgfVxuICAgIC5ycHQtcHJlc2V0LXNlbGVjdCB7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjY2JkNWUxO1xuICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcnB0LWJvcmRlci1yYWRpdXMtc20sIDRweCk7XG4gICAgICBwYWRkaW5nOiAzcHggOHB4O1xuICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgIGNvbG9yOiAjMGYxNzJhO1xuICAgICAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgdmFyKC0tcnB0LXRyYW5zaXRpb24tc3BlZWQsIDE1MG1zKSBlYXNlO1xuICAgIH1cbiAgICAucnB0LXByZXNldC1zZWxlY3Q6Zm9jdXMge1xuICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1ycHQtY29sb3ItcHJpbWFyeSwgIzI1NjNlYik7XG4gICAgICBib3gtc2hhZG93OiAwIDAgMCAycHggdmFyKC0tcnB0LWNvbG9yLXByaW1hcnktZm9jdXMsIHJnYmEoMzcsIDk5LCAyMzUsIDAuMjUpKTtcbiAgICB9XG4gICAgLnJwdC1idG4tc2F2ZS12aWV3IHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGdhcDogNHB4O1xuICAgICAgYmFja2dyb3VuZDogdmFyKC0tcnB0LWNvbG9yLXByaW1hcnktbGlnaHQsICNlZmY2ZmYpO1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgI2JmZGJmZTtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtY29sb3ItcHJpbWFyeSwgIzI1NjNlYik7XG4gICAgICBmb250LXNpemU6IDAuNzI1cmVtO1xuICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgIHBhZGRpbmc6IDNweCA4cHg7XG4gICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1ycHQtYm9yZGVyLXJhZGl1cy1zbSwgNHB4KTtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS1ycHQtdHJhbnNpdGlvbi1zcGVlZCwgMTUwbXMpIGVhc2U7XG4gICAgfVxuICAgIC5ycHQtYnRuLXNhdmUtdmlldzpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAjZGJlYWZlO1xuICAgICAgYm9yZGVyLWNvbG9yOiAjOTNjNWZkO1xuICAgIH1cbiAgICAucnB0LWV4cG9ydC1idG4ge1xuICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgZ2FwOiA1cHg7XG4gICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1ycHQtYm9yZGVyLXJhZGl1cywgNnB4KTtcbiAgICAgIHBhZGRpbmc6IDVweCAxMnB4O1xuICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS1ycHQtdHJhbnNpdGlvbi1zcGVlZCwgMTUwbXMpIGVhc2U7XG4gICAgfVxuICAgIC5ycHQtZXhwb3J0LWJ0bjpkaXNhYmxlZCB7XG4gICAgICBvcGFjaXR5OiAwLjQ1O1xuICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgICB9XG4gICAgLnJwdC1leHBvcnQtZXhjZWwge1xuICAgICAgYmFja2dyb3VuZDogI2YwZmRmNDtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNiYmY3ZDA7XG4gICAgICBjb2xvcjogIzE1ODAzZDtcbiAgICB9XG4gICAgLnJwdC1leHBvcnQtZXhjZWw6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICAgICAgYmFja2dyb3VuZDogI2RjZmNlNztcbiAgICAgIGJvcmRlci1jb2xvcjogIzg2ZWZhYztcbiAgICB9XG4gICAgLnJwdC1leHBvcnQtY3N2IHtcbiAgICAgIGJhY2tncm91bmQ6ICNmOGZhZmM7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjY2JkNWUxO1xuICAgICAgY29sb3I6ICMzMzQxNTU7XG4gICAgfVxuICAgIC5ycHQtZXhwb3J0LWNzdjpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG4gICAgICBiYWNrZ3JvdW5kOiAjZjFmNWY5O1xuICAgICAgYm9yZGVyLWNvbG9yOiAjOTRhM2I4O1xuICAgICAgY29sb3I6ICMwZjE3MmE7XG4gICAgfVxuICAgIC5ycHQtZXhwb3J0LXByaW50IHtcbiAgICAgIGJhY2tncm91bmQ6ICNlZWYyZmY7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjYzdkMmZlO1xuICAgICAgY29sb3I6ICM0MzM4Y2E7XG4gICAgfVxuICAgIC5ycHQtZXhwb3J0LXByaW50OmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAgIGJhY2tncm91bmQ6ICNlMGU3ZmY7XG4gICAgICBib3JkZXItY29sb3I6ICNhNWI0ZmM7XG4gICAgfVxuICAgIC8qIE1vZGFsICovXG4gICAgLnJwdC1tb2RhbC1iYWNrZHJvcCB7XG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICBpbnNldDogMDtcbiAgICAgIGJhY2tncm91bmQ6IHJnYmEoMTUsIDIzLCA0MiwgMC40NSk7XG4gICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoNnB4KTtcbiAgICAgIHotaW5kZXg6IDExMDA7XG4gICAgfVxuICAgIC5ycHQtbW9kYWwtZGlhbG9nIHtcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgIHRvcDogNTAlO1xuICAgICAgbGVmdDogNTAlO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gICAgICB3aWR0aDogbWluKDQ2MHB4LCA5MnZ3KTtcbiAgICAgIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjY2JkNWUxO1xuICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcnB0LWJvcmRlci1yYWRpdXMtbGcsIDhweCk7XG4gICAgICBib3gtc2hhZG93OiAwIDIwcHggMjVweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4xNSksIDAgOHB4IDEwcHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gICAgICB6LWluZGV4OiAxMTAxO1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgYW5pbWF0aW9uOiBycHQtbW9kYWwtcG9wIDE2MG1zIGN1YmljLWJlemllcigwLjE2LCAxLCAwLjMsIDEpO1xuICAgIH1cbiAgICBAa2V5ZnJhbWVzIHJwdC1tb2RhbC1wb3Age1xuICAgICAgZnJvbSB7IG9wYWNpdHk6IDA7IHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC00NiUpIHNjYWxlKDAuOTcpOyB9XG4gICAgICB0byB7IG9wYWNpdHk6IDE7IHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpIHNjYWxlKDEpOyB9XG4gICAgfVxuICAgIC5ycHQtbW9kYWwtaGVhZGVyIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgcGFkZGluZzogMTRweCAxOHB4O1xuICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlMmU4ZjA7XG4gICAgICBiYWNrZ3JvdW5kOiAjZjhmYWZjO1xuICAgIH1cbiAgICAucnB0LW1vZGFsLWhlYWRlci10aXRsZSB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBnYXA6IDhweDtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtY29sb3ItcHJpbWFyeSwgIzI1NjNlYik7XG4gICAgfVxuICAgIC5ycHQtbW9kYWwtdGl0bGUge1xuICAgICAgZm9udC1zaXplOiAwLjk1cmVtO1xuICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgIGNvbG9yOiAjMGYxNzJhO1xuICAgICAgbWFyZ2luOiAwO1xuICAgIH1cbiAgICAucnB0LW1vZGFsLWNsb3NlIHtcbiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgY29sb3I6ICM2NDc0OGI7XG4gICAgICBmb250LXNpemU6IDEuMXJlbTtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIHdpZHRoOiAyOHB4O1xuICAgICAgaGVpZ2h0OiAyOHB4O1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgIHRyYW5zaXRpb246IGFsbCAxMjBtcyBlYXNlO1xuICAgIH1cbiAgICAucnB0LW1vZGFsLWNsb3NlOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6ICNlMmU4ZjA7XG4gICAgICBjb2xvcjogIzBmMTcyYTtcbiAgICB9XG4gICAgLnJwdC1tb2RhbC1ib2R5IHtcbiAgICAgIHBhZGRpbmc6IDE4cHg7XG4gICAgfVxuICAgIC5ycHQtbW9kYWwtaGludCB7XG4gICAgICBmb250LXNpemU6IDAuOHJlbTtcbiAgICAgIGNvbG9yOiAjNjQ3NDhiO1xuICAgICAgbWFyZ2luOiAwIDAgMTZweCAwO1xuICAgICAgbGluZS1oZWlnaHQ6IDEuNDU7XG4gICAgfVxuICAgIC5ycHQtaW5wdXQtZ3JvdXAge1xuICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgICB9XG4gICAgLnJwdC1maWVsZC1sYWJlbCB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICBjb2xvcjogIzMzNDE1NTtcbiAgICAgIG1hcmdpbi1ib3R0b206IDZweDtcbiAgICB9XG4gICAgLnJwdC1tb2RhbC1pbnB1dCB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjY2JkNWUxO1xuICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcnB0LWJvcmRlci1yYWRpdXMsIDZweCk7XG4gICAgICBwYWRkaW5nOiA4cHggMTJweDtcbiAgICAgIGZvbnQtc2l6ZTogMC44NXJlbTtcbiAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tcnB0LXRyYW5zaXRpb24tc3BlZWQsIDE1MG1zKSBlYXNlO1xuICAgIH1cbiAgICAucnB0LW1vZGFsLWlucHV0OmZvY3VzIHtcbiAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tcnB0LWNvbG9yLXByaW1hcnksICMyNTYzZWIpO1xuICAgICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHZhcigtLXJwdC1jb2xvci1wcmltYXJ5LWZvY3VzLCByZ2JhKDM3LCA5OSwgMjM1LCAwLjI1KSk7XG4gICAgfVxuICAgIC5ycHQtZXhpc3RpbmctcHJlc2V0cyB7XG4gICAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2UyZThmMDtcbiAgICAgIHBhZGRpbmctdG9wOiAxMnB4O1xuICAgICAgbWFyZ2luLXRvcDogOHB4O1xuICAgIH1cbiAgICAucnB0LWV4aXN0aW5nLWxhYmVsIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgZm9udC1zaXplOiAwLjcyNXJlbTtcbiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICBjb2xvcjogIzY0NzQ4YjtcbiAgICAgIG1hcmdpbi1ib3R0b206IDhweDtcbiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICBsZXR0ZXItc3BhY2luZzogMC41cHg7XG4gICAgfVxuICAgIC5ycHQtcHJlc2V0cy1saXN0IHtcbiAgICAgIG1heC1oZWlnaHQ6IDE0MHB4O1xuICAgICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgZ2FwOiA2cHg7XG4gICAgfVxuICAgIC5ycHQtcHJlc2V0LXJvdyB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgIHBhZGRpbmc6IDZweCAxMHB4O1xuICAgICAgYmFja2dyb3VuZDogI2Y4ZmFmYztcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNlMmU4ZjA7XG4gICAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgfVxuICAgIC5ycHQtcHJlc2V0LWluZm8ge1xuICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgZ2FwOiA4cHg7XG4gICAgfVxuICAgIC5ycHQtcHJlc2V0LXJvdy1uYW1lIHtcbiAgICAgIGZvbnQtc2l6ZTogMC43NzVyZW07XG4gICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgY29sb3I6ICMxZTI5M2I7XG4gICAgfVxuICAgIC5ycHQtcHJlc2V0LWFjdGl2ZS10YWcge1xuICAgICAgZm9udC1zaXplOiAwLjY1cmVtO1xuICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgIGJhY2tncm91bmQ6ICNkYmVhZmU7XG4gICAgICBjb2xvcjogIzFkNGVkODtcbiAgICAgIHBhZGRpbmc6IDFweCA2cHg7XG4gICAgICBib3JkZXItcmFkaXVzOiA5OTk5cHg7XG4gICAgfVxuICAgIC5ycHQtYnRuLWRlbC1wcmVzZXQge1xuICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXI6IG5vbmU7XG4gICAgICBjb2xvcjogIzk0YTNiODtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIHBhZGRpbmc6IDRweDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICB0cmFuc2l0aW9uOiBhbGwgMTIwbXMgZWFzZTtcbiAgICB9XG4gICAgLnJwdC1idG4tZGVsLXByZXNldDpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiAjZmVlMmUyO1xuICAgICAgY29sb3I6ICNkYzI2MjY7XG4gICAgfVxuICAgIC5ycHQtbW9kYWwtZm9vdGVyIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICAgIGdhcDogMTBweDtcbiAgICAgIHBhZGRpbmc6IDEycHggMThweDtcbiAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZTJlOGYwO1xuICAgICAgYmFja2dyb3VuZDogI2Y4ZmFmYztcbiAgICB9XG4gICAgLnJwdC1idG4tY2FuY2VsIHtcbiAgICAgIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjY2JkNWUxO1xuICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcnB0LWJvcmRlci1yYWRpdXMsIDZweCk7XG4gICAgICBwYWRkaW5nOiA2cHggMTRweDtcbiAgICAgIGZvbnQtc2l6ZTogMC43NzVyZW07XG4gICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgY29sb3I6ICM0NzU1Njk7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICB0cmFuc2l0aW9uOiBhbGwgMTIwbXMgZWFzZTtcbiAgICB9XG4gICAgLnJwdC1idG4tY2FuY2VsOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6ICNmMWY1Zjk7XG4gICAgICBjb2xvcjogIzBmMTcyYTtcbiAgICB9XG4gICAgLnJwdC1idG4tY29uZmlybSB7XG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ycHQtY29sb3ItcHJpbWFyeSwgIzI1NjNlYik7XG4gICAgICBjb2xvcjogI2ZmZmZmZjtcbiAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJwdC1ib3JkZXItcmFkaXVzLCA2cHgpO1xuICAgICAgcGFkZGluZzogNnB4IDE2cHg7XG4gICAgICBmb250LXNpemU6IDAuNzc1cmVtO1xuICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIHRyYW5zaXRpb246IGFsbCAxMjBtcyBlYXNlO1xuICAgIH1cbiAgICAucnB0LWJ0bi1jb25maXJtOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLXJwdC1jb2xvci1wcmltYXJ5LWhvdmVyLCAjMWQ0ZWQ4KTtcbiAgICB9XG4gICAgLnJwdC1idG4tY29uZmlybTpkaXNhYmxlZCB7XG4gICAgICBvcGFjaXR5OiAwLjU7XG4gICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgIH1cbiAgYF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBScHRSZXBvcnRDb21wb25lbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IGV4cG9ydFNlcnZpY2UgPSBpbmplY3QoUmVwb3J0RXhwb3J0U2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGVyc2lzdGVuY2UgPSBpbmplY3QoUmVwb3J0UGVyc2lzdGVuY2VBZGFwdGVyLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gIHJlYWRvbmx5IGlkID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSByZXBvcnQgPSBpbnB1dDxSZXBvcnREZWZpbml0aW9uIHwgbnVsbD4obnVsbCk7XG4gIHJlYWRvbmx5IHBhcmFtZXRlcnMgPSBpbnB1dDxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oe30pO1xuICByZWFkb25seSBzaG93RXhwb3J0ID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG4gIHJlYWRvbmx5IGVuYWJsZVByZXNldHMgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcbiAgcmVhZG9ubHkgYXV0b0V4ZWN1dGUgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcblxuICByZWFkb25seSByb3dDbGljayA9IG91dHB1dDx7XG4gICAgcm93OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICBwYXJhbWV0ZXJzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICBhY3Rpb24/OiBHcmlkUm93Q2xpY2tBY3Rpb247XG4gIH0+KCk7XG4gIHJlYWRvbmx5IGRhdGFMb2FkZWQgPSBvdXRwdXQ8dW5rbm93bltdPigpO1xuICByZWFkb25seSBncmlkU3RhdGVDaGFuZ2UgPSBvdXRwdXQ8YW55PigpO1xuICByZWFkb25seSBzZWxlY3Rpb25DaGFuZ2UgPSBvdXRwdXQ8YW55W10+KCk7XG4gIHJlYWRvbmx5IHNlbGVjdGlvbkNoYW5nZWQgPSBvdXRwdXQ8YW55W10+KCk7XG4gIHJlYWRvbmx5IHByZXNldFNhdmVkID0gb3V0cHV0PHsgbmFtZTogc3RyaW5nOyBwcmVzZXQ6IFJlcG9ydFZpZXdQcmVzZXQgfT4oKTtcbiAgcmVhZG9ubHkgcHJlc2V0Q2hhbmdlID0gb3V0cHV0PFJlcG9ydFZpZXdQcmVzZXQgfCBudWxsPigpO1xuICByZWFkb25seSBleHBvcnRSZXF1ZXN0ZWQgPSBvdXRwdXQ8YW55PigpO1xuICByZWFkb25seSBwcmludFJlcXVlc3RlZCA9IG91dHB1dDxhbnk+KCk7XG5cbiAgcmVhZG9ubHkgcnVudGltZUNvbXBvbmVudCA9IHZpZXdDaGlsZChSZXBvcnRSdW50aW1lQ29tcG9uZW50KTtcblxuICAvLyBQcmVzZXQgc3RhdGVzXG4gIHJlYWRvbmx5IGFjdGl2ZVByZXNldElkID0gc2lnbmFsPHN0cmluZz4oJ2RlZmF1bHQnKTtcbiAgcmVhZG9ubHkgaXNTYXZlUHJlc2V0TW9kYWxPcGVuID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgbmV3UHJlc2V0TmFtZSA9IHNpZ25hbDxzdHJpbmc+KCcnKTtcbiAgcmVhZG9ubHkgbGF0ZXN0R3JpZFN0YXRlID0gc2lnbmFsPFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgbnVsbD4obnVsbCk7XG4gIHJlYWRvbmx5IGN1c3RvbVByZXNldHMgPSBzaWduYWw8UmVwb3J0Vmlld1ByZXNldFtdPihbXSk7XG5cbiAgcmVhZG9ubHkgY3VycmVudERlZmluaXRpb24gPSBjb21wdXRlZDxSZXBvcnREZWZpbml0aW9uIHwgbnVsbD4oKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLnJlcG9ydCgpO1xuICB9KTtcblxuICByZWFkb25seSBhY3RpdmVEZWZpbml0aW9uID0gY29tcHV0ZWQ8UmVwb3J0RGVmaW5pdGlvbiB8IG51bGw+KCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5yZXBvcnQoKSA/PyB0aGlzLnJ1bnRpbWVDb21wb25lbnQoKT8uY3VycmVudERlZmluaXRpb24oKSA/PyBudWxsO1xuICB9KTtcblxuICByZWFkb25seSByZWNvcmRDb3VudCA9IGNvbXB1dGVkPG51bWJlcj4oKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLnJ1bnRpbWVDb21wb25lbnQoKT8ucmVzdWx0RGF0YSgpPy5sZW5ndGggPz8gMDtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgc2hvd1Rvb2xiYXIgPSBjb21wdXRlZDxib29sZWFuPigoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuc2hvd0V4cG9ydCgpIHx8IHRoaXMuZW5hYmxlUHJlc2V0cygpO1xuICB9KTtcblxuICByZWFkb25seSBzYXZlZFByZXNldHMgPSBjb21wdXRlZDxSZXBvcnRWaWV3UHJlc2V0W10+KCgpID0+IHtcbiAgICBjb25zdCBkZWYgPSB0aGlzLmFjdGl2ZURlZmluaXRpb24oKTtcbiAgICBjb25zdCBpbml0aWFsUHJlc2V0cyA9ICgoZGVmPy5ncmlkPy5vcHRpb25zIGFzIGFueSk/LnByZXNldHMgYXMgUmVwb3J0Vmlld1ByZXNldFtdKSA/PyBbXTtcbiAgICBjb25zdCBtYXAgPSBuZXcgTWFwPHN0cmluZywgUmVwb3J0Vmlld1ByZXNldD4oKTtcbiAgICBmb3IgKGNvbnN0IHAgb2YgaW5pdGlhbFByZXNldHMpIHtcbiAgICAgIGlmIChwICYmIHAuaWQpIG1hcC5zZXQocC5pZCwgcCk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgcCBvZiB0aGlzLmN1c3RvbVByZXNldHMoKSkge1xuICAgICAgaWYgKHAgJiYgcC5pZCkgbWFwLnNldChwLmlkLCBwKTtcbiAgICB9XG4gICAgcmV0dXJuIEFycmF5LmZyb20obWFwLnZhbHVlcygpKTtcbiAgfSk7XG5cbiAgb25Sb3dBY3Rpb25UcmlnZ2VyZWQoZXZlbnQ6IHtcbiAgICBhY3Rpb246IEdyaWRSb3dDbGlja0FjdGlvbjtcbiAgICByb3c6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIHBhcmFtZXRlcnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICB9KTogdm9pZCB7XG4gICAgdGhpcy5yb3dDbGljay5lbWl0KHtcbiAgICAgIHJvdzogZXZlbnQucm93LFxuICAgICAgcGFyYW1ldGVyczogZXZlbnQucGFyYW1ldGVycyxcbiAgICAgIGFjdGlvbjogZXZlbnQuYWN0aW9uLFxuICAgIH0pO1xuICB9XG5cbiAgb25HcmlkU3RhdGVDaGFuZ2VkKHN0YXRlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmxhdGVzdEdyaWRTdGF0ZS5zZXQoc3RhdGUpO1xuICAgIHRoaXMuZ3JpZFN0YXRlQ2hhbmdlLmVtaXQoc3RhdGUpO1xuICB9XG5cbiAgb25TZWxlY3Rpb25DaGFuZ2Uocm93czogYW55W10pOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHJvd3MpO1xuICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlZC5lbWl0KHJvd3MpO1xuICB9XG5cbiAgb25TZWxlY3RQcmVzZXQocHJlc2V0SWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuYWN0aXZlUHJlc2V0SWQuc2V0KHByZXNldElkKTtcbiAgICBpZiAocHJlc2V0SWQgPT09ICdkZWZhdWx0Jykge1xuICAgICAgdGhpcy5wcmVzZXRDaGFuZ2UuZW1pdChudWxsKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBwcmVzZXQgPSB0aGlzLnNhdmVkUHJlc2V0cygpLmZpbmQoKHApID0+IHAuaWQgPT09IHByZXNldElkKTtcbiAgICBpZiAocHJlc2V0KSB7XG4gICAgICBpZiAocHJlc2V0LmdyaWRTdGF0ZSkge1xuICAgICAgICB0aGlzLmxhdGVzdEdyaWRTdGF0ZS5zZXQocHJlc2V0LmdyaWRTdGF0ZSk7XG4gICAgICAgIHRoaXMuZ3JpZFN0YXRlQ2hhbmdlLmVtaXQocHJlc2V0LmdyaWRTdGF0ZSk7XG4gICAgICB9XG4gICAgICB0aGlzLnByZXNldENoYW5nZS5lbWl0KHByZXNldCk7XG4gICAgfVxuICB9XG5cbiAgY29uZmlybVNhdmVQcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy5zYXZlQ3VycmVudFByZXNldCgpO1xuICB9XG5cbiAgZXhwb3J0RXhjZWwoKTogdm9pZCB7XG4gICAgdGhpcy5vbkV4cG9ydEV4Y2VsKCk7XG4gIH1cblxuICBleHBvcnRDc3YoKTogdm9pZCB7XG4gICAgdGhpcy5vbkV4cG9ydENzdigpO1xuICB9XG5cbiAgcHJpbnQoKTogdm9pZCB7XG4gICAgdGhpcy5vblByaW50UmVwb3J0KCk7XG4gIH1cblxuICBvcGVuU2F2ZVByZXNldE1vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMubmV3UHJlc2V0TmFtZS5zZXQoJycpO1xuICAgIHRoaXMuaXNTYXZlUHJlc2V0TW9kYWxPcGVuLnNldCh0cnVlKTtcbiAgfVxuXG4gIGNsb3NlU2F2ZVByZXNldE1vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMuaXNTYXZlUHJlc2V0TW9kYWxPcGVuLnNldChmYWxzZSk7XG4gIH1cblxuICBzYXZlQ3VycmVudFByZXNldCgpOiB2b2lkIHtcbiAgICBjb25zdCBuYW1lID0gdGhpcy5uZXdQcmVzZXROYW1lKCkudHJpbSgpO1xuICAgIGlmICghbmFtZSkgcmV0dXJuO1xuXG4gICAgY29uc3QgcHJlc2V0SWQgPSBgcHJlc2V0XyR7RGF0ZS5ub3coKX1gO1xuICAgIGNvbnN0IG5ld1ByZXNldDogUmVwb3J0Vmlld1ByZXNldCA9IHtcbiAgICAgIGlkOiBwcmVzZXRJZCxcbiAgICAgIG5hbWUsXG4gICAgICBncmlkU3RhdGU6IHRoaXMubGF0ZXN0R3JpZFN0YXRlKCkgPz8ge30sXG4gICAgICBjcmVhdGVkQXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICB9O1xuXG4gICAgY29uc3QgZGVmID0gdGhpcy5hY3RpdmVEZWZpbml0aW9uKCk7XG4gICAgaWYgKGRlZiAmJiBkZWYuZ3JpZCkge1xuICAgICAgaWYgKCFkZWYuZ3JpZC5vcHRpb25zKSBkZWYuZ3JpZC5vcHRpb25zID0ge307XG4gICAgICBjb25zdCBjdXJyZW50UHJlc2V0czogUmVwb3J0Vmlld1ByZXNldFtdID0gKGRlZi5ncmlkLm9wdGlvbnMgYXMgYW55KS5wcmVzZXRzID8/IFtdO1xuICAgICAgKGRlZi5ncmlkLm9wdGlvbnMgYXMgYW55KS5wcmVzZXRzID0gWy4uLmN1cnJlbnRQcmVzZXRzLCBuZXdQcmVzZXRdO1xuXG4gICAgICBpZiAodGhpcy5wZXJzaXN0ZW5jZSAmJiBkZWYuaWQpIHtcbiAgICAgICAgdGhpcy5wZXJzaXN0ZW5jZS5zYXZlKGRlZikuc3Vic2NyaWJlKHtcbiAgICAgICAgICBuZXh0OiAoKSA9PiB7fSxcbiAgICAgICAgICBlcnJvcjogKCkgPT4ge30sXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuY3VzdG9tUHJlc2V0cy51cGRhdGUoKHByZXYpID0+IFsuLi5wcmV2LCBuZXdQcmVzZXRdKTtcbiAgICB0aGlzLmFjdGl2ZVByZXNldElkLnNldChwcmVzZXRJZCk7XG4gICAgdGhpcy5wcmVzZXRTYXZlZC5lbWl0KHsgbmFtZSwgcHJlc2V0OiBuZXdQcmVzZXQgfSk7XG4gICAgdGhpcy5jbG9zZVNhdmVQcmVzZXRNb2RhbCgpO1xuICB9XG5cbiAgZGVsZXRlUHJlc2V0KHByZXNldElkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAocHJlc2V0SWQgPT09ICdkZWZhdWx0JykgcmV0dXJuO1xuXG4gICAgdGhpcy5jdXN0b21QcmVzZXRzLnVwZGF0ZSgocHJldikgPT4gcHJldi5maWx0ZXIoKHApID0+IHAuaWQgIT09IHByZXNldElkKSk7XG5cbiAgICBjb25zdCBkZWYgPSB0aGlzLmFjdGl2ZURlZmluaXRpb24oKTtcbiAgICBpZiAoZGVmICYmIGRlZi5ncmlkICYmIGRlZi5ncmlkLm9wdGlvbnMpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnQgPSAoKGRlZi5ncmlkLm9wdGlvbnMgYXMgYW55KS5wcmVzZXRzIGFzIFJlcG9ydFZpZXdQcmVzZXRbXSkgPz8gW107XG4gICAgICAoZGVmLmdyaWQub3B0aW9ucyBhcyBhbnkpLnByZXNldHMgPSBjdXJyZW50LmZpbHRlcigocCkgPT4gcC5pZCAhPT0gcHJlc2V0SWQpO1xuXG4gICAgICBpZiAodGhpcy5wZXJzaXN0ZW5jZSAmJiBkZWYuaWQpIHtcbiAgICAgICAgdGhpcy5wZXJzaXN0ZW5jZS5zYXZlKGRlZikuc3Vic2NyaWJlKHtcbiAgICAgICAgICBuZXh0OiAoKSA9PiB7fSxcbiAgICAgICAgICBlcnJvcjogKCkgPT4ge30sXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLmFjdGl2ZVByZXNldElkKCkgPT09IHByZXNldElkKSB7XG4gICAgICB0aGlzLm9uU2VsZWN0UHJlc2V0KCdkZWZhdWx0Jyk7XG4gICAgfVxuICB9XG5cbiAgb25FeHBvcnRFeGNlbCgpOiB2b2lkIHtcbiAgICBjb25zdCBkYXRhID0gdGhpcy5ydW50aW1lQ29tcG9uZW50KCk/LnJlc3VsdERhdGEoKTtcbiAgICBpZiAoIWRhdGEgfHwgIUFycmF5LmlzQXJyYXkoZGF0YSkgfHwgZGF0YS5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICBjb25zdCBkZWYgPSB0aGlzLmFjdGl2ZURlZmluaXRpb24oKTtcbiAgICBjb25zdCBjb2xzID0gZGVmPy5ncmlkPy5jb2x1bW5zLm1hcCgoYykgPT4gKHsgZmllbGQ6IGMuZmllbGQsIGhlYWRlcjogYy5sYWJlbCB9KSk7XG4gICAgdGhpcy5leHBvcnRTZXJ2aWNlLmV4cG9ydEV4Y2VsKGRhdGEgYXMgYW55LCB7XG4gICAgICBmaWxlTmFtZTogZGVmPy5uYW1lID8gYCR7ZGVmLm5hbWV9Lnhsc2AgOiAncmVwb3J0LnhscycsXG4gICAgICBjb2x1bW5zOiBjb2xzLFxuICAgICAgYnJhbmRlZEhlYWRlcjogeyByZXBvcnRUaXRsZTogZGVmPy5uYW1lIH0sXG4gICAgfSk7XG4gIH1cblxuICBvbkV4cG9ydENzdigpOiB2b2lkIHtcbiAgICBjb25zdCBkYXRhID0gdGhpcy5ydW50aW1lQ29tcG9uZW50KCk/LnJlc3VsdERhdGEoKTtcbiAgICBpZiAoIWRhdGEgfHwgIUFycmF5LmlzQXJyYXkoZGF0YSkgfHwgZGF0YS5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICBjb25zdCBkZWYgPSB0aGlzLmFjdGl2ZURlZmluaXRpb24oKTtcbiAgICBjb25zdCBjb2xzID0gZGVmPy5ncmlkPy5jb2x1bW5zLm1hcCgoYykgPT4gKHsgZmllbGQ6IGMuZmllbGQsIGhlYWRlcjogYy5sYWJlbCB9KSk7XG4gICAgdGhpcy5leHBvcnRTZXJ2aWNlLmV4cG9ydENzdihkYXRhIGFzIGFueSwge1xuICAgICAgZmlsZU5hbWU6IGRlZj8ubmFtZSA/IGAke2RlZi5uYW1lfS5jc3ZgIDogJ3JlcG9ydC5jc3YnLFxuICAgICAgY29sdW1uczogY29scyxcbiAgICAgIGJyYW5kZWRIZWFkZXI6IHsgcmVwb3J0VGl0bGU6IGRlZj8ubmFtZSB9LFxuICAgIH0pO1xuICB9XG5cbiAgb25QcmludFJlcG9ydCgpOiB2b2lkIHtcbiAgICBjb25zdCBkYXRhID0gdGhpcy5ydW50aW1lQ29tcG9uZW50KCk/LnJlc3VsdERhdGEoKTtcbiAgICBpZiAoIWRhdGEgfHwgIUFycmF5LmlzQXJyYXkoZGF0YSkgfHwgZGF0YS5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICBjb25zdCBkZWYgPSB0aGlzLmFjdGl2ZURlZmluaXRpb24oKTtcbiAgICBjb25zdCBjb2xzID0gZGVmPy5ncmlkPy5jb2x1bW5zLm1hcCgoYykgPT4gKHsgZmllbGQ6IGMuZmllbGQsIGhlYWRlcjogYy5sYWJlbCB9KSk7XG4gICAgdGhpcy5leHBvcnRTZXJ2aWNlLnByaW50UmVwb3J0KGRhdGEgYXMgYW55LCB7XG4gICAgICB0aXRsZTogZGVmPy5uYW1lIHx8ICdSZXBvcnQgUHJpbnQgUHJldmlldycsXG4gICAgICBjb2x1bW5zOiBjb2xzLFxuICAgICAgYnJhbmRlZEhlYWRlcjogeyByZXBvcnRUaXRsZTogZGVmPy5uYW1lIH0sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|