@firestitch/report 18.20.0 → 18.21.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/reports/components/component-grid/component-grid.component.d.ts +1 -0
- package/app/reports/export/report-grid-export.d.ts +2 -1
- package/app/reports/interfaces/report-grid-params.interface.d.ts +1 -0
- package/esm2022/app/reports/components/component-grid/component-grid.component.mjs +25 -10
- package/esm2022/app/reports/export/report-grid-export.mjs +4 -4
- package/esm2022/app/reports/export/report-pdf.service.mjs +2 -1
- package/esm2022/app/reports/export/report-pptx.service.mjs +4 -1
- package/esm2022/app/reports/interfaces/report-grid-params.interface.mjs +1 -1
- package/fesm2022/{firestitch-report-echarts-CgZBsQWf.mjs → firestitch-report-echarts-D1UDj4L9.mjs} +2 -2
- package/fesm2022/{firestitch-report-echarts-CgZBsQWf.mjs.map → firestitch-report-echarts-D1UDj4L9.mjs.map} +1 -1
- package/fesm2022/{firestitch-report-firestitch-report-BQseFyHJ.mjs → firestitch-report-firestitch-report-cys9XusN.mjs} +35 -16
- package/fesm2022/firestitch-report-firestitch-report-cys9XusN.mjs.map +1 -0
- package/fesm2022/firestitch-report.mjs +1 -1
- package/package.json +2 -2
- package/fesm2022/firestitch-report-firestitch-report-BQseFyHJ.mjs.map +0 -1
|
@@ -23,6 +23,7 @@ export declare class ComponentGridComponent implements OnInit {
|
|
|
23
23
|
private _injector;
|
|
24
24
|
private _isPruned;
|
|
25
25
|
private _paramsVersion;
|
|
26
|
+
private _reportLoads;
|
|
26
27
|
ngOnInit(): void;
|
|
27
28
|
setLayout(layout: GridLayout): void;
|
|
28
29
|
setExpansion(expansion: GridExpansion | undefined): void;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { GridLayout, GridTable } from '@firestitch/grid';
|
|
1
|
+
import { GridCellShade, GridLayout, GridTable } from '@firestitch/grid';
|
|
2
2
|
import { ReportFormatContext } from '../interfaces/report.interface';
|
|
3
3
|
export declare const GRID_EXPORT_COLUMNS = 60;
|
|
4
4
|
export interface GridExportCell {
|
|
@@ -8,6 +8,7 @@ export interface GridExportCell {
|
|
|
8
8
|
bold: boolean;
|
|
9
9
|
indent: number;
|
|
10
10
|
numeric: boolean;
|
|
11
|
+
shade: GridCellShade | null;
|
|
11
12
|
}
|
|
12
13
|
export interface GridExportTable {
|
|
13
14
|
head: GridExportCell[][];
|
|
@@ -20,6 +20,13 @@ import * as i0 from "@angular/core";
|
|
|
20
20
|
// them. After that a change to one of the tile's filter groups settles for
|
|
21
21
|
// TILE_REFRESH_DEBOUNCE_MS, so a sweep of changes costs one read; one sent
|
|
22
22
|
// under an older state version is dropped.
|
|
23
|
+
// - A report load (a Refresh, a chat edit, a settings save, all of which
|
|
24
|
+
// re-init the filter state) reads the table again at once, even when its
|
|
25
|
+
// filters did not move: the rows behind it, or its own query, may have.
|
|
26
|
+
// The load is counted into the params (reportLoads), since fs-grid reads
|
|
27
|
+
// only when they move. The new params land in the same tick as the
|
|
28
|
+
// reloaded tile, so a load that also moves the authored layout costs one
|
|
29
|
+
// read.
|
|
23
30
|
// - The layout on screen is the state service's (gridLayout): the viewer's
|
|
24
31
|
// own while they changed it from the layout authored now, else the
|
|
25
32
|
// authored one. It outlives a page switch, and the chat reads it. So do
|
|
@@ -68,6 +75,8 @@ export class ComponentGridComponent {
|
|
|
68
75
|
_isPruned = false;
|
|
69
76
|
// The state version the params on screen were read under.
|
|
70
77
|
_paramsVersion = 0;
|
|
78
|
+
// The report loads seen since the tile was drawn (ReportGridParams).
|
|
79
|
+
_reportLoads = 0;
|
|
71
80
|
ngOnInit() {
|
|
72
81
|
this.expansion.set(this._filterState.gridExpansion(this.component()));
|
|
73
82
|
this._init();
|
|
@@ -82,8 +91,9 @@ export class ComponentGridComponent {
|
|
|
82
91
|
_init() {
|
|
83
92
|
this._paramsVersion = this._filterState.stateVersion();
|
|
84
93
|
this.params.set(this._readParams());
|
|
94
|
+
// A null group is a full re-init: a report load, or a reset.
|
|
85
95
|
this._filterState.changesFor(this.component())
|
|
86
|
-
.pipe(switchMap(() => this._settled$()), tap(() => this._applyParams()), takeUntilDestroyed(this._destroyRef))
|
|
96
|
+
.pipe(switchMap((groupId) => this._settled$(groupId === null)), tap((isLoad) => this._applyParams(isLoad)), takeUntilDestroyed(this._destroyRef))
|
|
87
97
|
.subscribe();
|
|
88
98
|
if (followsGroupBy(this.component())) {
|
|
89
99
|
this._filterState.frequencyChanges()
|
|
@@ -115,21 +125,25 @@ export class ComponentGridComponent {
|
|
|
115
125
|
this._filterState.setGridLayout(component, pruned);
|
|
116
126
|
}
|
|
117
127
|
}
|
|
118
|
-
// A change, once it has settled
|
|
119
|
-
//
|
|
120
|
-
//
|
|
121
|
-
|
|
128
|
+
// A change, once it has settled, passing on whether it was a report load:
|
|
129
|
+
// at once for a load (one event, not a sweep) or when the state version
|
|
130
|
+
// moved, else after the debounce; dropped when the version moves while it
|
|
131
|
+
// waits, since that move brings its own change.
|
|
132
|
+
_settled$(isLoad) {
|
|
122
133
|
const version = this._filterState.stateVersion();
|
|
123
134
|
const moved = version !== this._paramsVersion;
|
|
124
|
-
return (moved ? of(0) : timer(TILE_REFRESH_DEBOUNCE_MS))
|
|
125
|
-
.pipe(filter(() => this._filterState.stateVersion() === version), map(() =>
|
|
135
|
+
return (isLoad || moved ? of(0) : timer(TILE_REFRESH_DEBOUNCE_MS))
|
|
136
|
+
.pipe(filter(() => this._filterState.stateVersion() === version), map(() => isLoad));
|
|
126
137
|
}
|
|
127
|
-
_applyParams() {
|
|
138
|
+
_applyParams(isLoad = false) {
|
|
139
|
+
if (isLoad) {
|
|
140
|
+
this._reportLoads++;
|
|
141
|
+
}
|
|
128
142
|
this._paramsVersion = this._filterState.stateVersion();
|
|
129
143
|
this.params.set(this._readParams());
|
|
130
144
|
}
|
|
131
145
|
// The tile's report filters, 'any' groups and group-by grain as they stand
|
|
132
|
-
// (tileState()).
|
|
146
|
+
// (tileState()), and the report loads it has seen.
|
|
133
147
|
_readParams() {
|
|
134
148
|
const component = this.component();
|
|
135
149
|
const { matchAnyGroupIds, frequency } = this._filterState.tileState(component);
|
|
@@ -137,6 +151,7 @@ export class ComponentGridComponent {
|
|
|
137
151
|
filters: this._filterState.resolveForComponent(component),
|
|
138
152
|
...(matchAnyGroupIds?.length ? { matchAnyGroupIds } : {}),
|
|
139
153
|
...(frequency ? { frequency } : {}),
|
|
154
|
+
...(this._reportLoads ? { reportLoads: this._reportLoads } : {}),
|
|
140
155
|
};
|
|
141
156
|
}
|
|
142
157
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ComponentGridComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
@@ -152,4 +167,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
152
167
|
ReportGridCellPipe,
|
|
153
168
|
], template: "<!-- The comparison and window note strip above the table, from the report\n line of the latest read; the windows' descriptions and notes go in each\n column's \"About this column\" instead. -->\n<div class=\"fs-column grid-pane\">\n <app-report-component-note\n [data]=\"noteData()\"\n [windowNotes]=\"false\">\n </app-report-component-note>\n <!-- The params are seeded before the first render, so the grid's first read\n carries the tile's report filters. -->\n @if (params(); as params) {\n <fs-grid\n class=\"fs-flex\"\n [source]=\"source()\"\n [layout]=\"layout()\"\n [expansion]=\"expansion()\"\n [clearedFilter]=\"clearedFilter()\"\n (expansionChange)=\"setExpansion($event)\"\n [params]=\"params\"\n [controls]=\"controls()\"\n [formatter]=\"formatter()\"\n (layoutChange)=\"setLayout($event)\">\n <ng-template fsGridCell let-value let-field=\"field\" let-record=\"record\" let-text=\"text\">\n @if (value | fsReportGridCell: field : record : text : noteData() : formatContext(); as shown) {\n <!-- A cell that says why (a missing or zero prior) opens it on a\n click; no cell carries a native tooltip. -->\n @if (shown.title) {\n <span\n class=\"explained\"\n fsPopover\n trigger=\"click\"\n [template]=\"explanation\"\n [indication]=\"false\"\n [maxWidth]=\"320\">\n {{ shown.text }}\n </span>\n <ng-template #explanation>{{ shown.title }}</ng-template>\n } @else {\n <span>{{ shown.text }}</span>\n }\n }\n </ng-template>\n </fs-grid>\n }\n</div>\n", styles: [":host{display:block;height:100%}.grid-pane{height:100%;min-height:0}fs-grid{min-height:0}.explained{cursor:pointer;text-decoration:underline dotted;text-underline-offset:2px}\n"] }]
|
|
154
169
|
}] });
|
|
155
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LWdyaWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9yZXBvcnRzL2NvbXBvbmVudHMvY29tcG9uZW50LWdyaWQvY29tcG9uZW50LWdyaWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9yZXBvcnRzL2NvbXBvbmVudHMvY29tcG9uZW50LWdyaWQvY29tcG9uZW50LWdyaWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFVLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxHQUNySCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUF1QyxNQUFNLGtCQUFrQixDQUFDO0FBQzdHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXpELE9BQU8sRUFBYyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUxRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR2hELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3RGLE9BQU8sRUFB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LEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFL0UsT0FBTztZQUNMLE9BQU8sRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQztZQUN6RCxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUN6RCxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7U0FDcEMsQ0FBQztJQUNKLENBQUM7d0dBN0hVLHNCQUFzQjs0RkFBdEIsc0JBQXNCLG9XQ2pFbkMsb3VEQTZDQSwwT0RhSSxlQUFlLDJQQUNmLG1CQUFtQix5REFDbkIsa0JBQWtCLGlWQUNsQixzQkFBc0IsbUlBQ3RCLGtCQUFrQjs7NEZBR1Qsc0JBQXNCO2tCQWRsQyxTQUFTOytCQUNFLDJCQUEyQixtQkFHcEIsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1A7d0JBQ1AsZUFBZTt3QkFDZixtQkFBbUI7d0JBQ25CLGtCQUFrQjt3QkFDbEIsc0JBQXNCO3dCQUN0QixrQkFBa0I7cUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRGVzdHJveVJlZiwgSW5qZWN0b3IsIE9uSW5pdCwgY29tcHV0ZWQsIGVmZmVjdCwgaW5qZWN0LCBpbnB1dCwgc2lnbmFsLCB1bnRyYWNrZWQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5pbXBvcnQgeyBGc0dyaWRDZWxsRGlyZWN0aXZlLCBGc0dyaWRDb21wb25lbnQsIEdyaWRFeHBhbnNpb24sIEdyaWRMYXlvdXQsIEdyaWROb3RlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvZ3JpZCc7XG5pbXBvcnQgeyBGc1BvcG92ZXJEaXJlY3RpdmUgfSBmcm9tICdAZmlyZXN0aXRjaC9wb3BvdmVyJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZmlsdGVyLCBtYXAsIG9mLCBzd2l0Y2hNYXAsIHRhcCwgdGltZXIgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgUmVwb3J0RGF0YSB9IGZyb20gJy4uLy4uL2RhdGEvcmVwb3J0LmRhdGEnO1xuaW1wb3J0IHsgUmVwb3J0R3JpZFNvdXJjZSB9IGZyb20gJy4uLy4uL2RhdGEvcmVwb3J0LWdyaWQtc291cmNlJztcbmltcG9ydCB7IGZvbGxvd3NHcm91cEJ5IH0gZnJvbSAnLi4vLi4vZ3JvdXAtYnknO1xuaW1wb3J0IHsgUmVwb3J0R3JpZFBhcmFtcyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvcmVwb3J0LWdyaWQtcGFyYW1zLmludGVyZmFjZSc7XG5pbXBvcnQgeyBSZXBvcnRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3JlcG9ydC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgYXV0aG9yZWRHcmlkTGF5b3V0LCBwcnVuZWRHcmlkTGF5b3V0IH0gZnJvbSAnLi4vLi4vcmVwb3J0LWdyaWQtbGF5b3V0JztcbmltcG9ydCB7IFJlcG9ydEZpbHRlclN0YXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3JlcG9ydC1maWx0ZXItc3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBUSUxFX1JFRlJFU0hfREVCT1VOQ0VfTVMgfSBmcm9tICcuLi8uLi90aWxlLWxvYWRzJztcbmltcG9ydCB7IENvbXBvbmVudE5vdGVDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnQtbm90ZS9jb21wb25lbnQtbm90ZS5jb21wb25lbnQnO1xuXG5pbXBvcnQgeyBSZXBvcnRHcmlkQ2VsbFBpcGUgfSBmcm9tICcuL3JlcG9ydC1ncmlkLWNlbGwucGlwZSc7XG5pbXBvcnQgeyByZXBvcnRHcmlkRm9ybWF0dGVyIH0gZnJvbSAnLi9yZXBvcnQtZ3JpZC1mb3JtYXR0ZXInO1xuXG5cbi8vIEEgZ3JpZCB0aWxlOiBmcy1ncmlkIG92ZXIgdGhlIHRpbGUncyByb3dzLCByZWFkIHRocm91Z2ggUmVwb3J0R3JpZFNvdXJjZS5cbi8vXG4vLyAtIFRoZSBwYXJhbXMgKHRoZSByZXBvcnQgZmlsdGVycyB0aGUgdGlsZSByZXNvbHZlcyB0byBhbmQgdGhlICdhbnknXG4vLyAgIGdyb3VwcykgYXJlIHNlZWRlZCBiZWZvcmUgdGhlIGZpcnN0IHJlbmRlciwgc28gbm8gcmVhZCBnb2VzIG91dCB3aXRob3V0XG4vLyAgIHRoZW0uIEFmdGVyIHRoYXQgYSBjaGFuZ2UgdG8gb25lIG9mIHRoZSB0aWxlJ3MgZmlsdGVyIGdyb3VwcyBzZXR0bGVzIGZvclxuLy8gICBUSUxFX1JFRlJFU0hfREVCT1VOQ0VfTVMsIHNvIGEgc3dlZXAgb2YgY2hhbmdlcyBjb3N0cyBvbmUgcmVhZDsgb25lIHNlbnRcbi8vICAgdW5kZXIgYW4gb2xkZXIgc3RhdGUgdmVyc2lvbiBpcyBkcm9wcGVkLlxuLy8gLSBUaGUgbGF5b3V0IG9uIHNjcmVlbiBpcyB0aGUgc3RhdGUgc2VydmljZSdzIChncmlkTGF5b3V0KTogdGhlIHZpZXdlcidzXG4vLyAgIG93biB3aGlsZSB0aGV5IGNoYW5nZWQgaXQgZnJvbSB0aGUgbGF5b3V0IGF1dGhvcmVkIG5vdywgZWxzZSB0aGVcbi8vICAgYXV0aG9yZWQgb25lLiBJdCBvdXRsaXZlcyBhIHBhZ2Ugc3dpdGNoLCBhbmQgdGhlIGNoYXQgcmVhZHMgaXQuIFNvIGRvXG4vLyAgIHRoZSBncm91cHMgdGhlIHZpZXdlciBsZWZ0IG9wZW4gKGdyaWRFeHBhbnNpb24pLCB3aGljaCBhIENsZWFyIGxlYXZlcy5cbi8vIC0gQSBzdGF0ZSB2ZXJzaW9uIG1vdmUgKENsZWFyIGZpbHRlcnMsIGEgc2F2ZWQgZmlsdGVyKSBza2lwcyB0aGUgd2FpdDsgdGhlXG4vLyAgIHJlc2V0IGhhcyBwdXQgdGhlIGF1dGhvcmVkIGxheW91dCBiYWNrIGluIHRoZSBzYW1lIHRpY2ssIHNvIGl0IGNvc3RzIG9uZVxuLy8gICByZWFkLlxuLy8gLSBBIHRhYmxlIHRoYXQgZm9sbG93cyB0aGUgcmVwb3J0J3MgZ3JvdXAtYnkgKGZvbGxvd3NHcm91cEJ5KSBzZW5kcyBpdHNcbi8vICAgZ3JhaW4sIGFuZCByZWFkcyBhZ2FpbiBhdCBvbmNlIHdoZW4gaXQgY2hhbmdlcy4gVGhlIHN0YXRlIHNlcnZpY2UgaGFzXG4vLyAgIG1vdmVkIGl0cyBmaWx0ZXIgb24gdGhlIGdyb3VwLWJ5J3MgZmllbGQgdG8gdGhlIG5ldyBncmFpbiBieSB0aGVuLCBvclxuLy8gICB0YWtlbiBpdCBvdXQgKGNsZWFyZWRGaWx0ZXIsIHdoaWNoIHRoZSBzdGF0dXMgbGluZSBuYW1lcyksIHNvIG9uZSByZWFkXG4vLyAgIGdvZXMgb3V0IGFuZCBub3RoaW5nIHBhaW50cyB1bmZpbHRlcmVkLlxuLy8gLSBmcy1ncmlkIGNvbXBhcmVzIHRoZSBsYXlvdXQgYW5kIHBhcmFtcyBieSB2YWx1ZTogYSBjbG9uZWQgdmFsdWUgbmV2ZXJcbi8vICAgcmVhZHMgYWdhaW4uXG4vLyAtIEFuIG91dHB1dCdzIGRldGFpbCBjZWxsIGlzIGRyYXduIGJ5IGZzUmVwb3J0R3JpZENlbGwsIHNvIGEgY2hhbmdlIHRlbGxzXG4vLyAgIGEgbWlzc2luZyBwcmlvciBmcm9tIGEgemVybyBvbmUsIGFzIGEgbGlzdCBkb2VzOyBhIGNsaWNrIG9uIGl0IG9wZW5zXG4vLyAgIHdoeSwgYXMgbm8gY2VsbCBjYXJyaWVzIGEgbmF0aXZlIHRvb2x0aXAuXG4vLyAtIEFmdGVyIHRoZSB0aWxlJ3MgZmlyc3QgcmVhZCwgdGhlIHZpZXdlcidzIGxheW91dCBsb3NlcyB0aGUgZmlsdGVycyBhbmRcbi8vICAgc29ydCB0ZXJtcyB0aGF0IHJlYWQgcmVmdXNlZCAocHJ1bmVkR3JpZExheW91dCksIHNvIHN0YWxlIHRpbGUgc3RhdGVcbi8vICAgKGEgZmllbGQgdGhlIEFJIHRvb2sgb3V0IG9mIHRoZSBxdWVyeSkgZG9lcyBub3QgbGluZ2VyLlxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXJlcG9ydC1jb21wb25lbnQtZ3JpZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb21wb25lbnQtZ3JpZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvbXBvbmVudC1ncmlkLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgRnNHcmlkQ29tcG9uZW50LFxuICAgIEZzR3JpZENlbGxEaXJlY3RpdmUsXG4gICAgRnNQb3BvdmVyRGlyZWN0aXZlLFxuICAgIENvbXBvbmVudE5vdGVDb21wb25lbnQsXG4gICAgUmVwb3J0R3JpZENlbGxQaXBlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDb21wb25lbnRHcmlkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBwdWJsaWMgcmVhZG9ubHkgcmVwb3J0SWQgPSBpbnB1dC5yZXF1aXJlZDxudW1iZXI+KCk7XG4gIHB1YmxpYyByZWFkb25seSBjb21wb25lbnQgPSBpbnB1dC5yZXF1aXJlZDxSZXBvcnRDb21wb25lbnQ+KCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHBhcmFtcyA9IHNpZ25hbDxSZXBvcnRHcmlkUGFyYW1zIHwgbnVsbD4obnVsbCk7XG4gIHB1YmxpYyByZWFkb25seSBjb250cm9scyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY29tcG9uZW50KCkuY29uZmlnPy5jb250cm9scyA/PyB7fSk7XG4gIHB1YmxpYyByZWFkb25seSBzb3VyY2UgPSBjb21wdXRlZCgoKSA9PiBuZXcgUmVwb3J0R3JpZFNvdXJjZSh0aGlzLl9yZXBvcnREYXRhLCB0aGlzLnJlcG9ydElkKCksIHRoaXMuX2NvbXBvbmVudElkKCksIHtcbiAgICBsb2NhbGU6ICgpID0+IHRoaXMuX2ZpbHRlclN0YXRlLmZvcm1hdENvbnRleHQoKS5sb2NhbGUsXG4gIH0pKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgbGF5b3V0ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5fZmlsdGVyU3RhdGUuZ3JpZExheW91dCh0aGlzLmNvbXBvbmVudCgpKSk7XG4gIHB1YmxpYyByZWFkb25seSBjbGVhcmVkRmlsdGVyID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5fZmlsdGVyU3RhdGUuZ3JpZENsZWFyZWRGaWx0ZXIodGhpcy5jb21wb25lbnQoKSkpO1xuICAvLyBSZWFkIG9uY2U6IGZzLWdyaWQgb3ducyB0aGUgb3BlbiBncm91cHMgZnJvbSB0aGVuIG9uIGFuZCB3cml0ZXMgdGhlbSBvdXQuXG4gIHB1YmxpYyByZWFkb25seSBleHBhbnNpb24gPSBzaWduYWw8R3JpZEV4cGFuc2lvbiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgbm90ZURhdGEgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnNvdXJjZSgpLnJlcG9ydCgpKTtcbiAgcHVibGljIHJlYWRvbmx5IGZvcm1hdENvbnRleHQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLl9maWx0ZXJTdGF0ZS5mb3JtYXRDb250ZXh0KCkpO1xuICBwdWJsaWMgcmVhZG9ubHkgZm9ybWF0dGVyID0gY29tcHV0ZWQoKCkgPT4gcmVwb3J0R3JpZEZvcm1hdHRlcih7XG4gICAgZm9ybWF0OiB0aGlzLl9maWx0ZXJTdGF0ZS5mb3JtYXRDb250ZXh0KCksXG4gICAgdGltZXpvbmU6IHRoaXMuX2ZpbHRlclN0YXRlLnRpbWV6b25lKCksXG4gICAgcmVwb3J0OiB0aGlzLnNvdXJjZSgpLnJlcG9ydCgpLFxuICB9KSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfY29tcG9uZW50SWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmNvbXBvbmVudCgpLmlkKTtcbiAgcHJpdmF0ZSBfcmVwb3J0RGF0YSA9IGluamVjdChSZXBvcnREYXRhKTtcbiAgcHJpdmF0ZSBfZmlsdGVyU3RhdGUgPSBpbmplY3QoUmVwb3J0RmlsdGVyU3RhdGVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBfZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgcHJpdmF0ZSBfaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICAvLyBXaGV0aGVyIHRoZSBmaXJzdCByZWFkJ3Mgbm90ZXMgaGF2ZSBwcnVuZWQgdGhlIHZpZXdlcidzIGxheW91dC5cbiAgcHJpdmF0ZSBfaXNQcnVuZWQgPSBmYWxzZTtcbiAgLy8gVGhlIHN0YXRlIHZlcnNpb24gdGhlIHBhcmFtcyBvbiBzY3JlZW4gd2VyZSByZWFkIHVuZGVyLlxuICBwcml2YXRlIF9wYXJhbXNWZXJzaW9uID0gMDtcblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5leHBhbnNpb24uc2V0KHRoaXMuX2ZpbHRlclN0YXRlLmdyaWRFeHBhbnNpb24odGhpcy5jb21wb25lbnQoKSkpO1xuICAgIHRoaXMuX2luaXQoKTtcbiAgICB0aGlzLl9wcnVuZUFmdGVyRmlyc3RSZWFkKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0TGF5b3V0KGxheW91dDogR3JpZExheW91dCk6IHZvaWQge1xuICAgIHRoaXMuX2ZpbHRlclN0YXRlLnNldEdyaWRMYXlvdXQodGhpcy5jb21wb25lbnQoKSwgbGF5b3V0KTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRFeHBhbnNpb24oZXhwYW5zaW9uOiBHcmlkRXhwYW5zaW9uIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgdGhpcy5fZmlsdGVyU3RhdGUuc2V0R3JpZEV4cGFuc2lvbih0aGlzLmNvbXBvbmVudCgpLCBleHBhbnNpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9wYXJhbXNWZXJzaW9uID0gdGhpcy5fZmlsdGVyU3RhdGUuc3RhdGVWZXJzaW9uKCk7XG4gICAgdGhpcy5wYXJhbXMuc2V0KHRoaXMuX3JlYWRQYXJhbXMoKSk7XG5cbiAgICB0aGlzLl9maWx0ZXJTdGF0ZS5jaGFuZ2VzRm9yKHRoaXMuY29tcG9uZW50KCkpXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuX3NldHRsZWQkKCkpLFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5fYXBwbHlQYXJhbXMoKSksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIGlmIChmb2xsb3dzR3JvdXBCeSh0aGlzLmNvbXBvbmVudCgpKSkge1xuICAgICAgdGhpcy5fZmlsdGVyU3RhdGUuZnJlcXVlbmN5Q2hhbmdlcygpXG4gICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9hcHBseVBhcmFtcygpKTtcbiAgICB9XG4gIH1cblxuICAvLyBPbmNlIHRoZSB0aWxlJ3MgZmlyc3QgcmVhZCBpcyBpbiwgaXRzIG5vdGVzIHBydW5lIHRoZSB2aWV3ZXIncyBsYXlvdXRcbiAgLy8gKHBydW5lZEdyaWRMYXlvdXQpLiBBIHRpbGUgc2hvd2luZyBpdHMgYXV0aG9yZWQgbGF5b3V0IGhhcyBub3RoaW5nIHRvXG4gIC8vIHBydW5lLlxuICBwcml2YXRlIF9wcnVuZUFmdGVyRmlyc3RSZWFkKCk6IHZvaWQge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBzdW1tYXJ5ID0gdGhpcy5zb3VyY2UoKS5zdW1tYXJ5KCk7XG4gICAgICBpZiAoIXN1bW1hcnkgfHwgdGhpcy5faXNQcnVuZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9pc1BydW5lZCA9IHRydWU7XG4gICAgICB1bnRyYWNrZWQoKCkgPT4gdGhpcy5fcHJ1bmUoc3VtbWFyeS5ub3RlcyA/PyBbXSkpO1xuICAgIH0sIHsgaW5qZWN0b3I6IHRoaXMuX2luamVjdG9yLCBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3BydW5lKG5vdGVzOiBHcmlkTm90ZVtdKTogdm9pZCB7XG4gICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy5jb21wb25lbnQoKTtcbiAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5fZmlsdGVyU3RhdGUuZ3JpZFNlc3Npb25MYXlvdXQoY29tcG9uZW50KTtcbiAgICBpZiAoIXNlc3Npb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBwcnVuZWQgPSBwcnVuZWRHcmlkTGF5b3V0KHNlc3Npb24sIG5vdGVzLCB0aGlzLmNvbnRyb2xzKCkuZmlsdGVyLCBhdXRob3JlZEdyaWRMYXlvdXQoY29tcG9uZW50KS5maWx0ZXJzKTtcbiAgICBpZiAocHJ1bmVkICE9PSBzZXNzaW9uKSB7XG4gICAgICB0aGlzLl9maWx0ZXJTdGF0ZS5zZXRHcmlkTGF5b3V0KGNvbXBvbmVudCwgcHJ1bmVkKTtcbiAgICB9XG4gIH1cblxuICAvLyBBIGNoYW5nZSwgb25jZSBpdCBoYXMgc2V0dGxlZDogYXQgb25jZSB3aGVuIHRoZSBzdGF0ZSB2ZXJzaW9uIG1vdmVkLFxuICAvLyBlbHNlIGFmdGVyIHRoZSBkZWJvdW5jZTsgZHJvcHBlZCB3aGVuIHRoZSB2ZXJzaW9uIG1vdmVzIHdoaWxlIGl0IHdhaXRzLFxuICAvLyBzaW5jZSB0aGF0IG1vdmUgYnJpbmdzIGl0cyBvd24gY2hhbmdlLlxuICBwcml2YXRlIF9zZXR0bGVkJCgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBjb25zdCB2ZXJzaW9uID0gdGhpcy5fZmlsdGVyU3RhdGUuc3RhdGVWZXJzaW9uKCk7XG4gICAgY29uc3QgbW92ZWQgPSB2ZXJzaW9uICE9PSB0aGlzLl9wYXJhbXNWZXJzaW9uO1xuXG4gICAgcmV0dXJuIChtb3ZlZCA/IG9mKDApIDogdGltZXIoVElMRV9SRUZSRVNIX0RFQk9VTkNFX01TKSlcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKCkgPT4gdGhpcy5fZmlsdGVyU3RhdGUuc3RhdGVWZXJzaW9uKCkgPT09IHZlcnNpb24pLFxuICAgICAgICBtYXAoKCkgPT4gdW5kZWZpbmVkKSxcbiAgICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9hcHBseVBhcmFtcygpOiB2b2lkIHtcbiAgICB0aGlzLl9wYXJhbXNWZXJzaW9uID0gdGhpcy5fZmlsdGVyU3RhdGUuc3RhdGVWZXJzaW9uKCk7XG4gICAgdGhpcy5wYXJhbXMuc2V0KHRoaXMuX3JlYWRQYXJhbXMoKSk7XG4gIH1cblxuICAvLyBUaGUgdGlsZSdzIHJlcG9ydCBmaWx0ZXJzLCAnYW55JyBncm91cHMgYW5kIGdyb3VwLWJ5IGdyYWluIGFzIHRoZXkgc3RhbmRcbiAgLy8gKHRpbGVTdGF0ZSgpKS5cbiAgcHJpdmF0ZSBfcmVhZFBhcmFtcygpOiBSZXBvcnRHcmlkUGFyYW1zIHtcbiAgICBjb25zdCBjb21wb25lbnQgPSB0aGlzLmNvbXBvbmVudCgpO1xuICAgIGNvbnN0IHsgbWF0Y2hBbnlHcm91cElkcywgZnJlcXVlbmN5IH0gPSB0aGlzLl9maWx0ZXJTdGF0ZS50aWxlU3RhdGUoY29tcG9uZW50KTtcblxuICAgIHJldHVybiB7XG4gICAgICBmaWx0ZXJzOiB0aGlzLl9maWx0ZXJTdGF0ZS5yZXNvbHZlRm9yQ29tcG9uZW50KGNvbXBvbmVudCksXG4gICAgICAuLi4obWF0Y2hBbnlHcm91cElkcz8ubGVuZ3RoID8geyBtYXRjaEFueUdyb3VwSWRzIH0gOiB7fSksXG4gICAgICAuLi4oZnJlcXVlbmN5ID8geyBmcmVxdWVuY3kgfSA6IHt9KSxcbiAgICB9O1xuICB9XG5cbn1cbiIsIjwhLS0gVGhlIGNvbXBhcmlzb24gYW5kIHdpbmRvdyBub3RlIHN0cmlwIGFib3ZlIHRoZSB0YWJsZSwgZnJvbSB0aGUgcmVwb3J0XG4gICAgIGxpbmUgb2YgdGhlIGxhdGVzdCByZWFkOyB0aGUgd2luZG93cycgZGVzY3JpcHRpb25zIGFuZCBub3RlcyBnbyBpbiBlYWNoXG4gICAgIGNvbHVtbidzIFwiQWJvdXQgdGhpcyBjb2x1bW5cIiBpbnN0ZWFkLiAtLT5cbjxkaXYgY2xhc3M9XCJmcy1jb2x1bW4gZ3JpZC1wYW5lXCI+XG4gIDxhcHAtcmVwb3J0LWNvbXBvbmVudC1ub3RlXG4gICAgW2RhdGFdPVwibm90ZURhdGEoKVwiXG4gICAgW3dpbmRvd05vdGVzXT1cImZhbHNlXCI+XG4gIDwvYXBwLXJlcG9ydC1jb21wb25lbnQtbm90ZT5cbiAgPCEtLSBUaGUgcGFyYW1zIGFyZSBzZWVkZWQgYmVmb3JlIHRoZSBmaXJzdCByZW5kZXIsIHNvIHRoZSBncmlkJ3MgZmlyc3QgcmVhZFxuICAgICAgIGNhcnJpZXMgdGhlIHRpbGUncyByZXBvcnQgZmlsdGVycy4gLS0+XG4gIEBpZiAocGFyYW1zKCk7IGFzIHBhcmFtcykge1xuICAgIDxmcy1ncmlkXG4gICAgICBjbGFzcz1cImZzLWZsZXhcIlxuICAgICAgW3NvdXJjZV09XCJzb3VyY2UoKVwiXG4gICAgICBbbGF5b3V0XT1cImxheW91dCgpXCJcbiAgICAgIFtleHBhbnNpb25dPVwiZXhwYW5zaW9uKClcIlxuICAgICAgW2NsZWFyZWRGaWx0ZXJdPVwiY2xlYXJlZEZpbHRlcigpXCJcbiAgICAgIChleHBhbnNpb25DaGFuZ2UpPVwic2V0RXhwYW5zaW9uKCRldmVudClcIlxuICAgICAgW3BhcmFtc109XCJwYXJhbXNcIlxuICAgICAgW2NvbnRyb2xzXT1cImNvbnRyb2xzKClcIlxuICAgICAgW2Zvcm1hdHRlcl09XCJmb3JtYXR0ZXIoKVwiXG4gICAgICAobGF5b3V0Q2hhbmdlKT1cInNldExheW91dCgkZXZlbnQpXCI+XG4gICAgICA8bmctdGVtcGxhdGUgZnNHcmlkQ2VsbCBsZXQtdmFsdWUgbGV0LWZpZWxkPVwiZmllbGRcIiBsZXQtcmVjb3JkPVwicmVjb3JkXCIgbGV0LXRleHQ9XCJ0ZXh0XCI+XG4gICAgICAgIEBpZiAodmFsdWUgfCBmc1JlcG9ydEdyaWRDZWxsOiBmaWVsZCA6IHJlY29yZCA6IHRleHQgOiBub3RlRGF0YSgpIDogZm9ybWF0Q29udGV4dCgpOyBhcyBzaG93bikge1xuICAgICAgICAgIDwhLS0gQSBjZWxsIHRoYXQgc2F5cyB3aHkgKGEgbWlzc2luZyBvciB6ZXJvIHByaW9yKSBvcGVucyBpdCBvbiBhXG4gICAgICAgICAgICAgICBjbGljazsgbm8gY2VsbCBjYXJyaWVzIGEgbmF0aXZlIHRvb2x0aXAuIC0tPlxuICAgICAgICAgIEBpZiAoc2hvd24udGl0bGUpIHtcbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJleHBsYWluZWRcIlxuICAgICAgICAgICAgICAgIGZzUG9wb3ZlclxuICAgICAgICAgICAgICAgIHRyaWdnZXI9XCJjbGlja1wiXG4gICAgICAgICAgICAgICAgW3RlbXBsYXRlXT1cImV4cGxhbmF0aW9uXCJcbiAgICAgICAgICAgICAgICBbaW5kaWNhdGlvbl09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgW21heFdpZHRoXT1cIjMyMFwiPlxuICAgICAgICAgICAgICB7eyBzaG93bi50ZXh0IH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2V4cGxhbmF0aW9uPnt7IHNob3duLnRpdGxlIH19PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIDxzcGFuPnt7IHNob3duLnRleHQgfX08L3NwYW4+XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZnMtZ3JpZD5cbiAgfVxuPC9kaXY+XG4iXX0=
|
|
170
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LWdyaWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9yZXBvcnRzL2NvbXBvbmVudHMvY29tcG9uZW50LWdyaWQvY29tcG9uZW50LWdyaWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9yZXBvcnRzL2NvbXBvbmVudHMvY29tcG9uZW50LWdyaWQvY29tcG9uZW50LWdyaWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFVLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxHQUNySCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUF1QyxNQUFNLGtCQUFrQixDQUFDO0FBQzdHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXpELE9BQU8sRUFBYyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUxRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR2hELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3RGLE9BQU8sRUFB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bkMsSUFBSSxXQUNQO3dCQUNQLGVBQWU7d0JBQ2YsbUJBQW1CO3dCQUNuQixrQkFBa0I7d0JBQ2xCLHNCQUFzQjt3QkFDdEIsa0JBQWtCO3FCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIERlc3Ryb3lSZWYsIEluamVjdG9yLCBPbkluaXQsIGNvbXB1dGVkLCBlZmZlY3QsIGluamVjdCwgaW5wdXQsIHNpZ25hbCwgdW50cmFja2VkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuaW1wb3J0IHsgRnNHcmlkQ2VsbERpcmVjdGl2ZSwgRnNHcmlkQ29tcG9uZW50LCBHcmlkRXhwYW5zaW9uLCBHcmlkTGF5b3V0LCBHcmlkTm90ZSB9IGZyb20gJ0BmaXJlc3RpdGNoL2dyaWQnO1xuaW1wb3J0IHsgRnNQb3BvdmVyRGlyZWN0aXZlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvcG9wb3Zlcic7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIGZpbHRlciwgbWFwLCBvZiwgc3dpdGNoTWFwLCB0YXAsIHRpbWVyIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFJlcG9ydERhdGEgfSBmcm9tICcuLi8uLi9kYXRhL3JlcG9ydC5kYXRhJztcbmltcG9ydCB7IFJlcG9ydEdyaWRTb3VyY2UgfSBmcm9tICcuLi8uLi9kYXRhL3JlcG9ydC1ncmlkLXNvdXJjZSc7XG5pbXBvcnQgeyBmb2xsb3dzR3JvdXBCeSB9IGZyb20gJy4uLy4uL2dyb3VwLWJ5JztcbmltcG9ydCB7IFJlcG9ydEdyaWRQYXJhbXMgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3JlcG9ydC1ncmlkLXBhcmFtcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUmVwb3J0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9yZXBvcnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IGF1dGhvcmVkR3JpZExheW91dCwgcHJ1bmVkR3JpZExheW91dCB9IGZyb20gJy4uLy4uL3JlcG9ydC1ncmlkLWxheW91dCc7XG5pbXBvcnQgeyBSZXBvcnRGaWx0ZXJTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yZXBvcnQtZmlsdGVyLXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgVElMRV9SRUZSRVNIX0RFQk9VTkNFX01TIH0gZnJvbSAnLi4vLi4vdGlsZS1sb2Fkcyc7XG5pbXBvcnQgeyBDb21wb25lbnROb3RlQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50LW5vdGUvY29tcG9uZW50LW5vdGUuY29tcG9uZW50JztcblxuaW1wb3J0IHsgUmVwb3J0R3JpZENlbGxQaXBlIH0gZnJvbSAnLi9yZXBvcnQtZ3JpZC1jZWxsLnBpcGUnO1xuaW1wb3J0IHsgcmVwb3J0R3JpZEZvcm1hdHRlciB9IGZyb20gJy4vcmVwb3J0LWdyaWQtZm9ybWF0dGVyJztcblxuXG4vLyBBIGdyaWQgdGlsZTogZnMtZ3JpZCBvdmVyIHRoZSB0aWxlJ3Mgcm93cywgcmVhZCB0aHJvdWdoIFJlcG9ydEdyaWRTb3VyY2UuXG4vL1xuLy8gLSBUaGUgcGFyYW1zICh0aGUgcmVwb3J0IGZpbHRlcnMgdGhlIHRpbGUgcmVzb2x2ZXMgdG8gYW5kIHRoZSAnYW55J1xuLy8gICBncm91cHMpIGFyZSBzZWVkZWQgYmVmb3JlIHRoZSBmaXJzdCByZW5kZXIsIHNvIG5vIHJlYWQgZ29lcyBvdXQgd2l0aG91dFxuLy8gICB0aGVtLiBBZnRlciB0aGF0IGEgY2hhbmdlIHRvIG9uZSBvZiB0aGUgdGlsZSdzIGZpbHRlciBncm91cHMgc2V0dGxlcyBmb3Jcbi8vICAgVElMRV9SRUZSRVNIX0RFQk9VTkNFX01TLCBzbyBhIHN3ZWVwIG9mIGNoYW5nZXMgY29zdHMgb25lIHJlYWQ7IG9uZSBzZW50XG4vLyAgIHVuZGVyIGFuIG9sZGVyIHN0YXRlIHZlcnNpb24gaXMgZHJvcHBlZC5cbi8vIC0gQSByZXBvcnQgbG9hZCAoYSBSZWZyZXNoLCBhIGNoYXQgZWRpdCwgYSBzZXR0aW5ncyBzYXZlLCBhbGwgb2Ygd2hpY2hcbi8vICAgcmUtaW5pdCB0aGUgZmlsdGVyIHN0YXRlKSByZWFkcyB0aGUgdGFibGUgYWdhaW4gYXQgb25jZSwgZXZlbiB3aGVuIGl0c1xuLy8gICBmaWx0ZXJzIGRpZCBub3QgbW92ZTogdGhlIHJvd3MgYmVoaW5kIGl0LCBvciBpdHMgb3duIHF1ZXJ5LCBtYXkgaGF2ZS5cbi8vICAgVGhlIGxvYWQgaXMgY291bnRlZCBpbnRvIHRoZSBwYXJhbXMgKHJlcG9ydExvYWRzKSwgc2luY2UgZnMtZ3JpZCByZWFkc1xuLy8gICBvbmx5IHdoZW4gdGhleSBtb3ZlLiBUaGUgbmV3IHBhcmFtcyBsYW5kIGluIHRoZSBzYW1lIHRpY2sgYXMgdGhlXG4vLyAgIHJlbG9hZGVkIHRpbGUsIHNvIGEgbG9hZCB0aGF0IGFsc28gbW92ZXMgdGhlIGF1dGhvcmVkIGxheW91dCBjb3N0cyBvbmVcbi8vICAgcmVhZC5cbi8vIC0gVGhlIGxheW91dCBvbiBzY3JlZW4gaXMgdGhlIHN0YXRlIHNlcnZpY2UncyAoZ3JpZExheW91dCk6IHRoZSB2aWV3ZXInc1xuLy8gICBvd24gd2hpbGUgdGhleSBjaGFuZ2VkIGl0IGZyb20gdGhlIGxheW91dCBhdXRob3JlZCBub3csIGVsc2UgdGhlXG4vLyAgIGF1dGhvcmVkIG9uZS4gSXQgb3V0bGl2ZXMgYSBwYWdlIHN3aXRjaCwgYW5kIHRoZSBjaGF0IHJlYWRzIGl0LiBTbyBkb1xuLy8gICB0aGUgZ3JvdXBzIHRoZSB2aWV3ZXIgbGVmdCBvcGVuIChncmlkRXhwYW5zaW9uKSwgd2hpY2ggYSBDbGVhciBsZWF2ZXMuXG4vLyAtIEEgc3RhdGUgdmVyc2lvbiBtb3ZlIChDbGVhciBmaWx0ZXJzLCBhIHNhdmVkIGZpbHRlcikgc2tpcHMgdGhlIHdhaXQ7IHRoZVxuLy8gICByZXNldCBoYXMgcHV0IHRoZSBhdXRob3JlZCBsYXlvdXQgYmFjayBpbiB0aGUgc2FtZSB0aWNrLCBzbyBpdCBjb3N0cyBvbmVcbi8vICAgcmVhZC5cbi8vIC0gQSB0YWJsZSB0aGF0IGZvbGxvd3MgdGhlIHJlcG9ydCdzIGdyb3VwLWJ5IChmb2xsb3dzR3JvdXBCeSkgc2VuZHMgaXRzXG4vLyAgIGdyYWluLCBhbmQgcmVhZHMgYWdhaW4gYXQgb25jZSB3aGVuIGl0IGNoYW5nZXMuIFRoZSBzdGF0ZSBzZXJ2aWNlIGhhc1xuLy8gICBtb3ZlZCBpdHMgZmlsdGVyIG9uIHRoZSBncm91cC1ieSdzIGZpZWxkIHRvIHRoZSBuZXcgZ3JhaW4gYnkgdGhlbiwgb3Jcbi8vICAgdGFrZW4gaXQgb3V0IChjbGVhcmVkRmlsdGVyLCB3aGljaCB0aGUgc3RhdHVzIGxpbmUgbmFtZXMpLCBzbyBvbmUgcmVhZFxuLy8gICBnb2VzIG91dCBhbmQgbm90aGluZyBwYWludHMgdW5maWx0ZXJlZC5cbi8vIC0gZnMtZ3JpZCBjb21wYXJlcyB0aGUgbGF5b3V0IGFuZCBwYXJhbXMgYnkgdmFsdWU6IGEgY2xvbmVkIHZhbHVlIG5ldmVyXG4vLyAgIHJlYWRzIGFnYWluLlxuLy8gLSBBbiBvdXRwdXQncyBkZXRhaWwgY2VsbCBpcyBkcmF3biBieSBmc1JlcG9ydEdyaWRDZWxsLCBzbyBhIGNoYW5nZSB0ZWxsc1xuLy8gICBhIG1pc3NpbmcgcHJpb3IgZnJvbSBhIHplcm8gb25lLCBhcyBhIGxpc3QgZG9lczsgYSBjbGljayBvbiBpdCBvcGVuc1xuLy8gICB3aHksIGFzIG5vIGNlbGwgY2FycmllcyBhIG5hdGl2ZSB0b29sdGlwLlxuLy8gLSBBZnRlciB0aGUgdGlsZSdzIGZpcnN0IHJlYWQsIHRoZSB2aWV3ZXIncyBsYXlvdXQgbG9zZXMgdGhlIGZpbHRlcnMgYW5kXG4vLyAgIHNvcnQgdGVybXMgdGhhdCByZWFkIHJlZnVzZWQgKHBydW5lZEdyaWRMYXlvdXQpLCBzbyBzdGFsZSB0aWxlIHN0YXRlXG4vLyAgIChhIGZpZWxkIHRoZSBBSSB0b29rIG91dCBvZiB0aGUgcXVlcnkpIGRvZXMgbm90IGxpbmdlci5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1yZXBvcnQtY29tcG9uZW50LWdyaWQnLFxuICB0ZW1wbGF0ZVVybDogJy4vY29tcG9uZW50LWdyaWQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb21wb25lbnQtZ3JpZC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIEZzR3JpZENvbXBvbmVudCxcbiAgICBGc0dyaWRDZWxsRGlyZWN0aXZlLFxuICAgIEZzUG9wb3ZlckRpcmVjdGl2ZSxcbiAgICBDb21wb25lbnROb3RlQ29tcG9uZW50LFxuICAgIFJlcG9ydEdyaWRDZWxsUGlwZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQ29tcG9uZW50R3JpZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgcHVibGljIHJlYWRvbmx5IHJlcG9ydElkID0gaW5wdXQucmVxdWlyZWQ8bnVtYmVyPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgY29tcG9uZW50ID0gaW5wdXQucmVxdWlyZWQ8UmVwb3J0Q29tcG9uZW50PigpO1xuXG4gIHB1YmxpYyByZWFkb25seSBwYXJhbXMgPSBzaWduYWw8UmVwb3J0R3JpZFBhcmFtcyB8IG51bGw+KG51bGwpO1xuICBwdWJsaWMgcmVhZG9ubHkgY29udHJvbHMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmNvbXBvbmVudCgpLmNvbmZpZz8uY29udHJvbHMgPz8ge30pO1xuICBwdWJsaWMgcmVhZG9ubHkgc291cmNlID0gY29tcHV0ZWQoKCkgPT4gbmV3IFJlcG9ydEdyaWRTb3VyY2UodGhpcy5fcmVwb3J0RGF0YSwgdGhpcy5yZXBvcnRJZCgpLCB0aGlzLl9jb21wb25lbnRJZCgpLCB7XG4gICAgbG9jYWxlOiAoKSA9PiB0aGlzLl9maWx0ZXJTdGF0ZS5mb3JtYXRDb250ZXh0KCkubG9jYWxlLFxuICB9KSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGxheW91dCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX2ZpbHRlclN0YXRlLmdyaWRMYXlvdXQodGhpcy5jb21wb25lbnQoKSkpO1xuICBwdWJsaWMgcmVhZG9ubHkgY2xlYXJlZEZpbHRlciA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX2ZpbHRlclN0YXRlLmdyaWRDbGVhcmVkRmlsdGVyKHRoaXMuY29tcG9uZW50KCkpKTtcbiAgLy8gUmVhZCBvbmNlOiBmcy1ncmlkIG93bnMgdGhlIG9wZW4gZ3JvdXBzIGZyb20gdGhlbiBvbiBhbmQgd3JpdGVzIHRoZW0gb3V0LlxuICBwdWJsaWMgcmVhZG9ubHkgZXhwYW5zaW9uID0gc2lnbmFsPEdyaWRFeHBhbnNpb24gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IG5vdGVEYXRhID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zb3VyY2UoKS5yZXBvcnQoKSk7XG4gIHB1YmxpYyByZWFkb25seSBmb3JtYXRDb250ZXh0ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5fZmlsdGVyU3RhdGUuZm9ybWF0Q29udGV4dCgpKTtcbiAgcHVibGljIHJlYWRvbmx5IGZvcm1hdHRlciA9IGNvbXB1dGVkKCgpID0+IHJlcG9ydEdyaWRGb3JtYXR0ZXIoe1xuICAgIGZvcm1hdDogdGhpcy5fZmlsdGVyU3RhdGUuZm9ybWF0Q29udGV4dCgpLFxuICAgIHRpbWV6b25lOiB0aGlzLl9maWx0ZXJTdGF0ZS50aW1lem9uZSgpLFxuICAgIHJlcG9ydDogdGhpcy5zb3VyY2UoKS5yZXBvcnQoKSxcbiAgfSkpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2NvbXBvbmVudElkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jb21wb25lbnQoKS5pZCk7XG4gIHByaXZhdGUgX3JlcG9ydERhdGEgPSBpbmplY3QoUmVwb3J0RGF0YSk7XG4gIHByaXZhdGUgX2ZpbHRlclN0YXRlID0gaW5qZWN0KFJlcG9ydEZpbHRlclN0YXRlU2VydmljZSk7XG4gIHByaXZhdGUgX2Rlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gIHByaXZhdGUgX2luamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcbiAgLy8gV2hldGhlciB0aGUgZmlyc3QgcmVhZCdzIG5vdGVzIGhhdmUgcHJ1bmVkIHRoZSB2aWV3ZXIncyBsYXlvdXQuXG4gIHByaXZhdGUgX2lzUHJ1bmVkID0gZmFsc2U7XG4gIC8vIFRoZSBzdGF0ZSB2ZXJzaW9uIHRoZSBwYXJhbXMgb24gc2NyZWVuIHdlcmUgcmVhZCB1bmRlci5cbiAgcHJpdmF0ZSBfcGFyYW1zVmVyc2lvbiA9IDA7XG4gIC8vIFRoZSByZXBvcnQgbG9hZHMgc2VlbiBzaW5jZSB0aGUgdGlsZSB3YXMgZHJhd24gKFJlcG9ydEdyaWRQYXJhbXMpLlxuICBwcml2YXRlIF9yZXBvcnRMb2FkcyA9IDA7XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZXhwYW5zaW9uLnNldCh0aGlzLl9maWx0ZXJTdGF0ZS5ncmlkRXhwYW5zaW9uKHRoaXMuY29tcG9uZW50KCkpKTtcbiAgICB0aGlzLl9pbml0KCk7XG4gICAgdGhpcy5fcHJ1bmVBZnRlckZpcnN0UmVhZCgpO1xuICB9XG5cbiAgcHVibGljIHNldExheW91dChsYXlvdXQ6IEdyaWRMYXlvdXQpOiB2b2lkIHtcbiAgICB0aGlzLl9maWx0ZXJTdGF0ZS5zZXRHcmlkTGF5b3V0KHRoaXMuY29tcG9uZW50KCksIGxheW91dCk7XG4gIH1cblxuICBwdWJsaWMgc2V0RXhwYW5zaW9uKGV4cGFuc2lvbjogR3JpZEV4cGFuc2lvbiB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIHRoaXMuX2ZpbHRlclN0YXRlLnNldEdyaWRFeHBhbnNpb24odGhpcy5jb21wb25lbnQoKSwgZXhwYW5zaW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgX2luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fcGFyYW1zVmVyc2lvbiA9IHRoaXMuX2ZpbHRlclN0YXRlLnN0YXRlVmVyc2lvbigpO1xuICAgIHRoaXMucGFyYW1zLnNldCh0aGlzLl9yZWFkUGFyYW1zKCkpO1xuXG4gICAgLy8gQSBudWxsIGdyb3VwIGlzIGEgZnVsbCByZS1pbml0OiBhIHJlcG9ydCBsb2FkLCBvciBhIHJlc2V0LlxuICAgIHRoaXMuX2ZpbHRlclN0YXRlLmNoYW5nZXNGb3IodGhpcy5jb21wb25lbnQoKSlcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKGdyb3VwSWQpID0+IHRoaXMuX3NldHRsZWQkKGdyb3VwSWQgPT09IG51bGwpKSxcbiAgICAgICAgdGFwKChpc0xvYWQpID0+IHRoaXMuX2FwcGx5UGFyYW1zKGlzTG9hZCkpLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZiksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICBpZiAoZm9sbG93c0dyb3VwQnkodGhpcy5jb21wb25lbnQoKSkpIHtcbiAgICAgIHRoaXMuX2ZpbHRlclN0YXRlLmZyZXF1ZW5jeUNoYW5nZXMoKVxuICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZikpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fYXBwbHlQYXJhbXMoKSk7XG4gICAgfVxuICB9XG5cbiAgLy8gT25jZSB0aGUgdGlsZSdzIGZpcnN0IHJlYWQgaXMgaW4sIGl0cyBub3RlcyBwcnVuZSB0aGUgdmlld2VyJ3MgbGF5b3V0XG4gIC8vIChwcnVuZWRHcmlkTGF5b3V0KS4gQSB0aWxlIHNob3dpbmcgaXRzIGF1dGhvcmVkIGxheW91dCBoYXMgbm90aGluZyB0b1xuICAvLyBwcnVuZS5cbiAgcHJpdmF0ZSBfcHJ1bmVBZnRlckZpcnN0UmVhZCgpOiB2b2lkIHtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3Qgc3VtbWFyeSA9IHRoaXMuc291cmNlKCkuc3VtbWFyeSgpO1xuICAgICAgaWYgKCFzdW1tYXJ5IHx8IHRoaXMuX2lzUHJ1bmVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5faXNQcnVuZWQgPSB0cnVlO1xuICAgICAgdW50cmFja2VkKCgpID0+IHRoaXMuX3BydW5lKHN1bW1hcnkubm90ZXMgPz8gW10pKTtcbiAgICB9LCB7IGluamVjdG9yOiB0aGlzLl9pbmplY3RvciwgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSk7XG4gIH1cblxuICBwcml2YXRlIF9wcnVuZShub3RlczogR3JpZE5vdGVbXSk6IHZvaWQge1xuICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMuY29tcG9uZW50KCk7XG4gICAgY29uc3Qgc2Vzc2lvbiA9IHRoaXMuX2ZpbHRlclN0YXRlLmdyaWRTZXNzaW9uTGF5b3V0KGNvbXBvbmVudCk7XG4gICAgaWYgKCFzZXNzaW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcHJ1bmVkID0gcHJ1bmVkR3JpZExheW91dChzZXNzaW9uLCBub3RlcywgdGhpcy5jb250cm9scygpLmZpbHRlciwgYXV0aG9yZWRHcmlkTGF5b3V0KGNvbXBvbmVudCkuZmlsdGVycyk7XG4gICAgaWYgKHBydW5lZCAhPT0gc2Vzc2lvbikge1xuICAgICAgdGhpcy5fZmlsdGVyU3RhdGUuc2V0R3JpZExheW91dChjb21wb25lbnQsIHBydW5lZCk7XG4gICAgfVxuICB9XG5cbiAgLy8gQSBjaGFuZ2UsIG9uY2UgaXQgaGFzIHNldHRsZWQsIHBhc3Npbmcgb24gd2hldGhlciBpdCB3YXMgYSByZXBvcnQgbG9hZDpcbiAgLy8gYXQgb25jZSBmb3IgYSBsb2FkIChvbmUgZXZlbnQsIG5vdCBhIHN3ZWVwKSBvciB3aGVuIHRoZSBzdGF0ZSB2ZXJzaW9uXG4gIC8vIG1vdmVkLCBlbHNlIGFmdGVyIHRoZSBkZWJvdW5jZTsgZHJvcHBlZCB3aGVuIHRoZSB2ZXJzaW9uIG1vdmVzIHdoaWxlIGl0XG4gIC8vIHdhaXRzLCBzaW5jZSB0aGF0IG1vdmUgYnJpbmdzIGl0cyBvd24gY2hhbmdlLlxuICBwcml2YXRlIF9zZXR0bGVkJChpc0xvYWQ6IGJvb2xlYW4pOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB2ZXJzaW9uID0gdGhpcy5fZmlsdGVyU3RhdGUuc3RhdGVWZXJzaW9uKCk7XG4gICAgY29uc3QgbW92ZWQgPSB2ZXJzaW9uICE9PSB0aGlzLl9wYXJhbXNWZXJzaW9uO1xuXG4gICAgcmV0dXJuIChpc0xvYWQgfHwgbW92ZWQgPyBvZigwKSA6IHRpbWVyKFRJTEVfUkVGUkVTSF9ERUJPVU5DRV9NUykpXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMuX2ZpbHRlclN0YXRlLnN0YXRlVmVyc2lvbigpID09PSB2ZXJzaW9uKSxcbiAgICAgICAgbWFwKCgpID0+IGlzTG9hZCksXG4gICAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfYXBwbHlQYXJhbXMoaXNMb2FkID0gZmFsc2UpOiB2b2lkIHtcbiAgICBpZiAoaXNMb2FkKSB7XG4gICAgICB0aGlzLl9yZXBvcnRMb2FkcysrO1xuICAgIH1cblxuICAgIHRoaXMuX3BhcmFtc1ZlcnNpb24gPSB0aGlzLl9maWx0ZXJTdGF0ZS5zdGF0ZVZlcnNpb24oKTtcbiAgICB0aGlzLnBhcmFtcy5zZXQodGhpcy5fcmVhZFBhcmFtcygpKTtcbiAgfVxuXG4gIC8vIFRoZSB0aWxlJ3MgcmVwb3J0IGZpbHRlcnMsICdhbnknIGdyb3VwcyBhbmQgZ3JvdXAtYnkgZ3JhaW4gYXMgdGhleSBzdGFuZFxuICAvLyAodGlsZVN0YXRlKCkpLCBhbmQgdGhlIHJlcG9ydCBsb2FkcyBpdCBoYXMgc2Vlbi5cbiAgcHJpdmF0ZSBfcmVhZFBhcmFtcygpOiBSZXBvcnRHcmlkUGFyYW1zIHtcbiAgICBjb25zdCBjb21wb25lbnQgPSB0aGlzLmNvbXBvbmVudCgpO1xuICAgIGNvbnN0IHsgbWF0Y2hBbnlHcm91cElkcywgZnJlcXVlbmN5IH0gPSB0aGlzLl9maWx0ZXJTdGF0ZS50aWxlU3RhdGUoY29tcG9uZW50KTtcblxuICAgIHJldHVybiB7XG4gICAgICBmaWx0ZXJzOiB0aGlzLl9maWx0ZXJTdGF0ZS5yZXNvbHZlRm9yQ29tcG9uZW50KGNvbXBvbmVudCksXG4gICAgICAuLi4obWF0Y2hBbnlHcm91cElkcz8ubGVuZ3RoID8geyBtYXRjaEFueUdyb3VwSWRzIH0gOiB7fSksXG4gICAgICAuLi4oZnJlcXVlbmN5ID8geyBmcmVxdWVuY3kgfSA6IHt9KSxcbiAgICAgIC4uLih0aGlzLl9yZXBvcnRMb2FkcyA/IHsgcmVwb3J0TG9hZHM6IHRoaXMuX3JlcG9ydExvYWRzIH0gOiB7fSksXG4gICAgfTtcbiAgfVxuXG59XG4iLCI8IS0tIFRoZSBjb21wYXJpc29uIGFuZCB3aW5kb3cgbm90ZSBzdHJpcCBhYm92ZSB0aGUgdGFibGUsIGZyb20gdGhlIHJlcG9ydFxuICAgICBsaW5lIG9mIHRoZSBsYXRlc3QgcmVhZDsgdGhlIHdpbmRvd3MnIGRlc2NyaXB0aW9ucyBhbmQgbm90ZXMgZ28gaW4gZWFjaFxuICAgICBjb2x1bW4ncyBcIkFib3V0IHRoaXMgY29sdW1uXCIgaW5zdGVhZC4gLS0+XG48ZGl2IGNsYXNzPVwiZnMtY29sdW1uIGdyaWQtcGFuZVwiPlxuICA8YXBwLXJlcG9ydC1jb21wb25lbnQtbm90ZVxuICAgIFtkYXRhXT1cIm5vdGVEYXRhKClcIlxuICAgIFt3aW5kb3dOb3Rlc109XCJmYWxzZVwiPlxuICA8L2FwcC1yZXBvcnQtY29tcG9uZW50LW5vdGU+XG4gIDwhLS0gVGhlIHBhcmFtcyBhcmUgc2VlZGVkIGJlZm9yZSB0aGUgZmlyc3QgcmVuZGVyLCBzbyB0aGUgZ3JpZCdzIGZpcnN0IHJlYWRcbiAgICAgICBjYXJyaWVzIHRoZSB0aWxlJ3MgcmVwb3J0IGZpbHRlcnMuIC0tPlxuICBAaWYgKHBhcmFtcygpOyBhcyBwYXJhbXMpIHtcbiAgICA8ZnMtZ3JpZFxuICAgICAgY2xhc3M9XCJmcy1mbGV4XCJcbiAgICAgIFtzb3VyY2VdPVwic291cmNlKClcIlxuICAgICAgW2xheW91dF09XCJsYXlvdXQoKVwiXG4gICAgICBbZXhwYW5zaW9uXT1cImV4cGFuc2lvbigpXCJcbiAgICAgIFtjbGVhcmVkRmlsdGVyXT1cImNsZWFyZWRGaWx0ZXIoKVwiXG4gICAgICAoZXhwYW5zaW9uQ2hhbmdlKT1cInNldEV4cGFuc2lvbigkZXZlbnQpXCJcbiAgICAgIFtwYXJhbXNdPVwicGFyYW1zXCJcbiAgICAgIFtjb250cm9sc109XCJjb250cm9scygpXCJcbiAgICAgIFtmb3JtYXR0ZXJdPVwiZm9ybWF0dGVyKClcIlxuICAgICAgKGxheW91dENoYW5nZSk9XCJzZXRMYXlvdXQoJGV2ZW50KVwiPlxuICAgICAgPG5nLXRlbXBsYXRlIGZzR3JpZENlbGwgbGV0LXZhbHVlIGxldC1maWVsZD1cImZpZWxkXCIgbGV0LXJlY29yZD1cInJlY29yZFwiIGxldC10ZXh0PVwidGV4dFwiPlxuICAgICAgICBAaWYgKHZhbHVlIHwgZnNSZXBvcnRHcmlkQ2VsbDogZmllbGQgOiByZWNvcmQgOiB0ZXh0IDogbm90ZURhdGEoKSA6IGZvcm1hdENvbnRleHQoKTsgYXMgc2hvd24pIHtcbiAgICAgICAgICA8IS0tIEEgY2VsbCB0aGF0IHNheXMgd2h5IChhIG1pc3Npbmcgb3IgemVybyBwcmlvcikgb3BlbnMgaXQgb24gYVxuICAgICAgICAgICAgICAgY2xpY2s7IG5vIGNlbGwgY2FycmllcyBhIG5hdGl2ZSB0b29sdGlwLiAtLT5cbiAgICAgICAgICBAaWYgKHNob3duLnRpdGxlKSB7XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZXhwbGFpbmVkXCJcbiAgICAgICAgICAgICAgICBmc1BvcG92ZXJcbiAgICAgICAgICAgICAgICB0cmlnZ2VyPVwiY2xpY2tcIlxuICAgICAgICAgICAgICAgIFt0ZW1wbGF0ZV09XCJleHBsYW5hdGlvblwiXG4gICAgICAgICAgICAgICAgW2luZGljYXRpb25dPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgIFttYXhXaWR0aF09XCIzMjBcIj5cbiAgICAgICAgICAgICAge3sgc2hvd24udGV4dCB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNleHBsYW5hdGlvbj57eyBzaG93bi50aXRsZSB9fTwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICA8c3Bhbj57eyBzaG93bi50ZXh0IH19PC9zcGFuPlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2ZzLWdyaWQ+XG4gIH1cbjwvZGl2PlxuIl19
|
|
@@ -16,7 +16,7 @@ export function gridExportTable(table) {
|
|
|
16
16
|
.map((heading) => exportCell(headingText(heading), true, 0, heading.numeric, heading.columnSpan, heading.rowSpan)));
|
|
17
17
|
const line = (row) => row.cells.map((cell, index) => {
|
|
18
18
|
const isLabel = index === 0 && table.groupColumn;
|
|
19
|
-
return exportCell(isLabel && row.count ? `${cell.text} (${row.count})` : cell.text, row.kind !== GridRowKind.Detail || !!table.columns[index]?.emphasis, isLabel ? row.depth : 0, numeric[index] ?? false);
|
|
19
|
+
return exportCell(isLabel && row.count ? `${cell.text} (${row.count})` : cell.text, row.kind !== GridRowKind.Detail || !!table.columns[index]?.emphasis, isLabel ? row.depth : 0, numeric[index] ?? false, 1, 1, cell.shade);
|
|
20
20
|
});
|
|
21
21
|
return {
|
|
22
22
|
head,
|
|
@@ -43,7 +43,7 @@ export function gridExportNotes(table, layout, locale) {
|
|
|
43
43
|
function headingText(heading) {
|
|
44
44
|
return heading.hint ? `${heading.label} (${heading.hint})` : heading.label;
|
|
45
45
|
}
|
|
46
|
-
function exportCell(text, bold, indent, numeric, colSpan = 1, rowSpan = 1) {
|
|
47
|
-
return { text, colSpan, rowSpan, bold, indent, numeric };
|
|
46
|
+
function exportCell(text, bold, indent, numeric, colSpan = 1, rowSpan = 1, shade = null) {
|
|
47
|
+
return { text, colSpan, rowSpan, bold, indent, numeric, shade };
|
|
48
48
|
}
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWdyaWQtZXhwb3J0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9yZXBvcnRzL2V4cG9ydC9yZXBvcnQtZ3JpZC1leHBvcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0VBQWtFO0FBQ2xFLDJFQUEyRTtBQUMzRSwyRUFBMkU7QUFDM0UsMEJBQTBCO0FBQzFCLE9BQU8sRUFBNkIsV0FBVyxFQUErQixZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUlySCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUczRCx1REFBdUQ7QUFDdkQsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsRUFBRSxDQUFDO0FBMkJ0Qyw0RUFBNEU7QUFDNUUsbURBQW1EO0FBQ25ELE1BQU0sVUFBVSxlQUFlLENBQUMsS0FBZ0I7SUFDOUMsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM5RCxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVE7U0FDM0YsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQztTQUN4QyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7U0FDbkMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENB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QUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO0FBQzdFLENBQUM7QUFFRCxTQUFTLFVBQVUsQ0FDakIsSUFBWSxFQUNaLElBQWEsRUFDYixNQUFjLEVBQ2QsT0FBZ0IsRUFDaEIsT0FBTyxHQUFHLENBQUMsRUFDWCxPQUFPLEdBQUcsQ0FBQyxFQUNYLFFBQThCLElBQUk7SUFFbEMsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO0FBQ2xFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBIHRhYmxlIHRpbGUgYXMgdGhlIFBERiBhbmQgdGhlIGRlY2sgZHJhdyBpdDogdGhlIHByaW50ZWQgdGFibGVcbi8vIHJlYWRHcmlkVGFibGUoKSByZWFkcyAoR3JpZFRhYmxlKSBhcyBoZWFkaW5nIHJvd3MsIGJvZHkgcm93cyBhbmQgYSB0b3RhbFxuLy8gcm93IG9mIHBsYWluIGNlbGxzLCBhbmQgdGhlIGxpbmVzIGl0cyBub3RlcyBhZGQuIFB1cmUsIHNvIGJvdGggcmVuZGVyZXJzXG4vLyBkcmF3IG9uZSB0YWJsZSBvbmUgd2F5LlxuaW1wb3J0IHsgR3JpZENlbGxTaGFkZSwgR3JpZExheW91dCwgR3JpZFJvd0tpbmQsIEdyaWRUYWJsZSwgR3JpZFRhYmxlSGVhZGluZywgaGVhZGluZ0xhYmVsIH0gZnJvbSAnQGZpcmVzdGl0Y2gvZ3JpZCc7XG5cbmltcG9ydCB7IFJlcG9ydEZvcm1hdENvbnRleHQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3JlcG9ydC5pbnRlcmZhY2UnO1xuXG5pbXBvcnQgeyBncmlkRmlsdGVyTGluZVRleHQgfSBmcm9tICcuL3JlcG9ydC1maWx0ZXItbGluZXMnO1xuXG5cbi8vIFRoZSBtb3N0IHBpdm90IGNvbHVtbnMgYSBmaWxlIGRyYXdzLCBmcm9tIHRoZSBmaXJzdC5cbmV4cG9ydCBjb25zdCBHUklEX0VYUE9SVF9DT0xVTU5TID0gNjA7XG5cbi8vIE9uZSBjZWxsIG9mIGFuIGV4cG9ydGVkIHRhYmxlLiBBIGhlYWRpbmcgY2VsbCBzcGFucyB3aGF0IHRoZSBzY3JlZW4nc1xuLy8gaGVhZGVyIHNwYW5zOyBhIGdyb3VwLCB0b3RhbCBvciBlbXBoYXNpemVkIChzdWJ0b3RhbCwgdG90YWwpIGNlbGwgaXMgYm9sZDtcbi8vIGEgZ3JvdXAncyBsYWJlbCBzdGVwcyBpbiBieSBpdHMgZGVwdGg7IGEgY2VsbCBpdHMgY29sdW1uIHNoYWRlcyB0YWtlcyB0aGVcbi8vIHNjcmVlbidzIGZpbGwgYW5kIHRleHQgY29sb3IuXG5leHBvcnQgaW50ZXJmYWNlIEdyaWRFeHBvcnRDZWxsIHtcbiAgdGV4dDogc3RyaW5nO1xuICBjb2xTcGFuOiBudW1iZXI7XG4gIHJvd1NwYW46IG51bWJlcjtcbiAgYm9sZDogYm9vbGVhbjtcbiAgaW5kZW50OiBudW1iZXI7XG4gIG51bWVyaWM6IGJvb2xlYW47XG4gIHNoYWRlOiBHcmlkQ2VsbFNoYWRlIHwgbnVsbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHcmlkRXhwb3J0VGFibGUge1xuICAvLyBIZWFkaW5nIHJvd3MgdG9wIGZpcnN0LCBlYWNoIGhvbGRpbmcgb25seSB0aGUgY2VsbHMgdGhhdCBzdGFydCBvbiBpdFxuICBoZWFkOiBHcmlkRXhwb3J0Q2VsbFtdW107XG4gIGJvZHk6IEdyaWRFeHBvcnRDZWxsW11bXTtcbiAgZm9vdDogR3JpZEV4cG9ydENlbGxbXSB8IG51bGw7XG4gIC8vIE9uZSBwZXIgdGFibGUgY29sdW1uOiBpdCBob2xkcyBmb3JtYXR0ZWQgbnVtYmVycywgcmlnaHQtYWxpZ25lZFxuICBudW1lcmljOiBib29sZWFuW107XG4gIC8vIExpbmVzIHBhc3QgdGhlIHJvdyBjYXAsIHdoaWNoIHRoZSBtb3JlUm93c05vdGljZSByb3cgY291bnRzXG4gIG1vcmVSb3dzOiBudW1iZXI7XG59XG5cbi8vIFRoZSB0YWJsZSdzIGhlYWRpbmcsIGJvZHkgYW5kIHRvdGFsIHJvdyBhcyBjZWxscy4gQSBncm91cCdzIGxhYmVsIGNhcnJpZXNcbi8vIGl0cyByb3cgY291bnQgYWZ0ZXIgaXQsIGFzIHRoZSBzY3JlZW4gd3JpdGVzIGl0LlxuZXhwb3J0IGZ1bmN0aW9uIGdyaWRFeHBvcnRUYWJsZSh0YWJsZTogR3JpZFRhYmxlKTogR3JpZEV4cG9ydFRhYmxlIHtcbiAgY29uc3QgbnVtZXJpYyA9IHRhYmxlLmNvbHVtbnMubWFwKChjb2x1bW4pID0+IGNvbHVtbi5udW1lcmljKTtcbiAgY29uc3QgaGVhZCA9IEFycmF5LmZyb20oeyBsZW5ndGg6IE1hdGgubWF4KDEsIHRhYmxlLmhlYWRpbmdSb3dzKSB9LCAoXywgcm93KSA9PiB0YWJsZS5oZWFkaW5nc1xuICAgIC5maWx0ZXIoKGhlYWRpbmcpID0+IGhlYWRpbmcucm93ID09PSByb3cpXG4gICAgLnNvcnQoKGEsIGIpID0+IGEuY29sdW1uIC0gYi5jb2x1bW4pXG4gICAgLm1hcCgoaGVhZGluZykgPT4gZXhwb3J0Q2VsbChoZWFkaW5nVGV4dChoZWFkaW5nKSwgdHJ1ZSwgMCwgaGVhZGluZy5udW1lcmljLCBoZWFkaW5nLmNvbHVtblNwYW4sIGhlYWRpbmcucm93U3BhbikpKTtcbiAgY29uc3QgbGluZSA9IChyb3c6IEdyaWRUYWJsZVsncm93cyddW251bWJlcl0pID0+IHJvdy5jZWxscy5tYXAoKGNlbGwsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgaXNMYWJlbCA9IGluZGV4ID09PSAwICYmIHRhYmxlLmdyb3VwQ29sdW1uO1xuXG4gICAgcmV0dXJuIGV4cG9ydENlbGwoXG4gICAgICBpc0xhYmVsICYmIHJvdy5jb3VudCA/IGAke2NlbGwudGV4dH0gKCR7cm93LmNvdW50fSlgIDogY2VsbC50ZXh0LFxuICAgICAgcm93LmtpbmQgIT09IEdyaWRSb3dLaW5kLkRldGFpbCB8fCAhIXRhYmxlLmNvbHVtbnNbaW5kZXhdPy5lbXBoYXNpcyxcbiAgICAgIGlzTGFiZWwgPyByb3cuZGVwdGggOiAwLFxuICAgICAgbnVtZXJpY1tpbmRleF0gPz8gZmFsc2UsXG4gICAgICAxLFxuICAgICAgMSxcbiAgICAgIGNlbGwuc2hhZGUsXG4gICAgKTtcbiAgfSk7XG5cbiAgcmV0dXJuIHtcbiAgICBoZWFkLFxuICAgIGJvZHk6IHRhYmxlLnJvd3MubWFwKGxpbmUpLFxuICAgIGZvb3Q6IHRhYmxlLnRvdGFsUm93ID8gbGluZSh0YWJsZS50b3RhbFJvdykgOiBudWxsLFxuICAgIG51bWVyaWMsXG4gICAgbW9yZVJvd3M6IHRhYmxlLm1vcmVSb3dzLFxuICB9O1xufVxuXG4vLyBUaGUgbGluZXMgYSB0YWJsZSBhZGRzIHVuZGVyIGl0cyBib3g6IHRoZSBzY3JlZW4ncyBub3RlcywgdGhlIHBpdm90XG4vLyBjb2x1bW5zIGl0IGxlYXZlcyBvdXQsIGFuZCBlYWNoIGNvbHVtbiBmaWx0ZXIgb2YgdGhlIGxheW91dCBpdCB3YXMgcmVhZCBpbixcbi8vIGl0cyBmaWVsZCBuYW1lZCBhcyBpdHMgY29sdW1uIGlzIGhlYWRlZC5cbmV4cG9ydCBmdW5jdGlvbiBncmlkRXhwb3J0Tm90ZXModGFibGU6IEdyaWRUYWJsZSwgbGF5b3V0OiBHcmlkTGF5b3V0LCBsb2NhbGU6IFJlcG9ydEZvcm1hdENvbnRleHRbJ2xvY2FsZSddKTogc3RyaW5nW10ge1xuICBjb25zdCBmaWVsZHMgPSBuZXcgTWFwKHRhYmxlLmZpZWxkcy5tYXAoKGZpZWxkKSA9PiBbZmllbGQubmFtZSwgZmllbGRdKSk7XG4gIGNvbnN0IGZpbHRlcnMgPSAobGF5b3V0LmZpbHRlcnMgPz8gW10pXG4gICAgLm1hcCgoZmlsdGVyKSA9PiBncmlkRmlsdGVyTGluZVRleHQoaGVhZGluZ0xhYmVsKHRhYmxlLmZpZWxkcywgbGF5b3V0LCBmaWx0ZXIuZmllbGQpLCBmaWx0ZXIsIGZpZWxkcy5nZXQoZmlsdGVyLmZpZWxkKSwgbG9jYWxlKSlcbiAgICAuZmlsdGVyKCh0ZXh0KTogdGV4dCBpcyBzdHJpbmcgPT4gISF0ZXh0KTtcblxuICByZXR1cm4gW1xuICAgIC4uLnRhYmxlLm5vdGVzLFxuICAgIC4uLih0YWJsZS5zaG93bkNvbHVtbnMgPCB0YWJsZS5jb2x1bW5Db3VudCA/IFtgU2hvd2luZyB0aGUgZmlyc3QgJHt0YWJsZS5zaG93bkNvbHVtbnN9IG9mICR7dGFibGUuY29sdW1uQ291bnR9IGNvbHVtbnNgXSA6IFtdKSxcbiAgICAuLi5maWx0ZXJzLFxuICBdO1xufVxuXG5mdW5jdGlvbiBoZWFkaW5nVGV4dChoZWFkaW5nOiBHcmlkVGFibGVIZWFkaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGhlYWRpbmcuaGludCA/IGAke2hlYWRpbmcubGFiZWx9ICgke2hlYWRpbmcuaGludH0pYCA6IGhlYWRpbmcubGFiZWw7XG59XG5cbmZ1bmN0aW9uIGV4cG9ydENlbGwoXG4gIHRleHQ6IHN0cmluZyxcbiAgYm9sZDogYm9vbGVhbixcbiAgaW5kZW50OiBudW1iZXIsXG4gIG51bWVyaWM6IGJvb2xlYW4sXG4gIGNvbFNwYW4gPSAxLFxuICByb3dTcGFuID0gMSxcbiAgc2hhZGU6IEdyaWRDZWxsU2hhZGUgfCBudWxsID0gbnVsbCxcbik6IEdyaWRFeHBvcnRDZWxsIHtcbiAgcmV0dXJuIHsgdGV4dCwgY29sU3Bhbiwgcm93U3BhbiwgYm9sZCwgaW5kZW50LCBudW1lcmljLCBzaGFkZSB9O1xufVxuIl19
|