bways-report 0.1.4 → 0.1.6
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/README.md +75 -35
- package/esm2022/lib/core/services/index.mjs +3 -1
- package/esm2022/lib/core/services/report-data-discovery.service.mjs +135 -0
- package/esm2022/lib/core/services/report-storage.service.mjs +63 -0
- package/esm2022/lib/core/tokens/index.mjs +2 -1
- package/esm2022/lib/core/tokens/reporting-config.token.mjs +1 -1
- package/esm2022/lib/core/tokens/storage.token.mjs +128 -0
- package/esm2022/lib/core/utils/identifier-humanizer.mjs +15 -4
- package/esm2022/lib/data-access/adapters/http-lookup.adapter.mjs +17 -8
- package/esm2022/lib/data-access/adapters/local-storage-persistence.adapter.mjs +16 -44
- package/esm2022/lib/features/designer/components/component-palette/component-palette.component.mjs +3 -371
- package/esm2022/lib/features/designer/components/design-canvas/design-canvas.component.mjs +69 -1023
- package/esm2022/lib/features/designer/components/property-editor/parameter-binding-editor.component.mjs +345 -213
- package/esm2022/lib/features/designer/components/property-editor/property-editor-action.component.mjs +39 -32
- package/esm2022/lib/features/designer/components/property-editor/property-editor-datasource.component.mjs +35 -679
- package/esm2022/lib/features/designer/components/property-editor/property-editor-grid.component.mjs +97 -949
- package/esm2022/lib/features/designer/components/property-editor/property-editor.component.mjs +112 -585
- package/esm2022/lib/features/designer/designer.component.mjs +3 -3
- package/esm2022/lib/features/designer/services/designer-state.service.mjs +62 -2
- package/esm2022/lib/features/runtime/report-grid-bridge.component.mjs +115 -19
- package/esm2022/lib/primitives/components/dropdown/rpt-dropdown.component.mjs +31 -423
- package/esm2022/lib/provide-reporting.mjs +20 -5
- package/fesm2022/bways-report.mjs +2263 -5342
- package/fesm2022/bways-report.mjs.map +1 -1
- package/lib/core/services/index.d.ts +2 -0
- package/lib/core/services/report-data-discovery.service.d.ts +38 -0
- package/lib/core/services/report-storage.service.d.ts +26 -0
- package/lib/core/tokens/index.d.ts +2 -0
- package/lib/core/tokens/reporting-config.token.d.ts +2 -0
- package/lib/core/tokens/storage.token.d.ts +48 -0
- package/lib/data-access/adapters/http-lookup.adapter.d.ts +2 -1
- package/lib/data-access/adapters/local-storage-persistence.adapter.d.ts +1 -0
- package/lib/features/designer/components/design-canvas/design-canvas.component.d.ts +5 -1
- package/lib/features/designer/components/property-editor/parameter-binding-editor.component.d.ts +5 -0
- package/lib/features/designer/components/property-editor/property-editor-action.component.d.ts +3 -0
- package/lib/features/designer/components/property-editor/property-editor-grid.component.d.ts +31 -1
- package/lib/features/designer/components/property-editor/property-editor.component.d.ts +19 -0
- package/lib/features/designer/services/designer-state.service.d.ts +12 -1
- package/lib/features/runtime/report-grid-bridge.component.d.ts +8 -58
- package/lib/primitives/components/dropdown/rpt-dropdown.component.d.ts +3 -0
- package/lib/provide-reporting.d.ts +6 -0
- package/package.json +9 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { inject, Injectable } from '@angular/core';
|
|
2
2
|
import { HttpClient, HttpHeaders } from '@angular/common/http';
|
|
3
3
|
import { of, throwError } from 'rxjs';
|
|
4
|
-
import { catchError, map, tap } from 'rxjs/operators';
|
|
4
|
+
import { catchError, finalize, map, shareReplay, tap } from 'rxjs/operators';
|
|
5
5
|
import { ReportLookupAdapter, } from '../contracts/lookup.contract';
|
|
6
6
|
import { REPORTING_CONFIG } from '../../core/tokens/reporting-config.token';
|
|
7
7
|
import { ReportSessionContextService } from '../../core/services/report-session-context.service';
|
|
@@ -9,13 +9,14 @@ import { extractRowArray } from '../../core/utils/data-normalization.util';
|
|
|
9
9
|
import * as i0 from "@angular/core";
|
|
10
10
|
/**
|
|
11
11
|
* Built-in HTTP adapter for fetching dropdown options from backend database tables and SPs.
|
|
12
|
-
* Includes in-memory caching with TTL and
|
|
12
|
+
* Includes in-memory caching with TTL, in-flight request deduplication, and fallback mock data.
|
|
13
13
|
*/
|
|
14
14
|
export class HttpReportLookupAdapter extends ReportLookupAdapter {
|
|
15
15
|
http = inject(HttpClient, { optional: true });
|
|
16
16
|
config = inject(REPORTING_CONFIG, { optional: true });
|
|
17
17
|
sessionService = inject(ReportSessionContextService, { optional: true });
|
|
18
18
|
cache = new Map();
|
|
19
|
+
inFlight = new Map();
|
|
19
20
|
mockDataStore = {
|
|
20
21
|
Customers: [
|
|
21
22
|
{ customerId: 101, customerName: 'Acme Corporation', branchId: 1, isActive: true },
|
|
@@ -62,6 +63,10 @@ export class HttpReportLookupAdapter extends ReportLookupAdapter {
|
|
|
62
63
|
if (cached && cached.expiresAt > now) {
|
|
63
64
|
return of(cached.data);
|
|
64
65
|
}
|
|
66
|
+
const running = this.inFlight.get(cacheKey);
|
|
67
|
+
if (running) {
|
|
68
|
+
return running;
|
|
69
|
+
}
|
|
65
70
|
const baseUrl = this.config?.apiBaseUrl;
|
|
66
71
|
if (baseUrl && this.http) {
|
|
67
72
|
const session = this.sessionService?.sessionContext() ?? {};
|
|
@@ -72,7 +77,7 @@ export class HttpReportLookupAdapter extends ReportLookupAdapter {
|
|
|
72
77
|
if (session['branchId'] !== undefined && session['branchId'] !== null) {
|
|
73
78
|
headers = headers.set('X-Branch-Id', String(session['branchId']));
|
|
74
79
|
}
|
|
75
|
-
|
|
80
|
+
const obs$ = this.http.post(`${baseUrl}/lookup`, request, { headers }).pipe(map((response) => {
|
|
76
81
|
const rawItems = extractRowArray(response);
|
|
77
82
|
return rawItems.map((r) => {
|
|
78
83
|
if (r && typeof r === 'object' && 'value' in r) {
|
|
@@ -85,17 +90,21 @@ export class HttpReportLookupAdapter extends ReportLookupAdapter {
|
|
|
85
90
|
}), tap((items) => {
|
|
86
91
|
// Never cache empty results: parameters may simply not have been filled yet.
|
|
87
92
|
if (items.length > 0)
|
|
88
|
-
this.setCache(cacheKey, items);
|
|
93
|
+
this.setCache(cacheKey, items, 600);
|
|
89
94
|
}), catchError((err) => {
|
|
90
95
|
const msg = err?.error?.message || err?.message || 'Lookup request failed';
|
|
91
96
|
return throwError(() => new Error(Array.isArray(msg) ? msg.join(', ') : msg));
|
|
92
|
-
}))
|
|
97
|
+
}), finalize(() => {
|
|
98
|
+
this.inFlight.delete(cacheKey);
|
|
99
|
+
}), shareReplay({ bufferSize: 1, refCount: true }));
|
|
100
|
+
this.inFlight.set(cacheKey, obs$);
|
|
101
|
+
return obs$;
|
|
93
102
|
}
|
|
94
103
|
const fallback = this.resolveMockOptions(request);
|
|
95
|
-
this.setCache(cacheKey, fallback);
|
|
104
|
+
this.setCache(cacheKey, fallback, 600);
|
|
96
105
|
return of(fallback);
|
|
97
106
|
}
|
|
98
|
-
setCache(key, data, ttlSeconds =
|
|
107
|
+
setCache(key, data, ttlSeconds = 600) {
|
|
99
108
|
this.cache.set(key, {
|
|
100
109
|
expiresAt: Date.now() + ttlSeconds * 1000,
|
|
101
110
|
data,
|
|
@@ -129,4 +138,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
129
138
|
}] });
|
|
130
139
|
/** Convenience alias */
|
|
131
140
|
export const HttpLookupAdapter = HttpReportLookupAdapter;
|
|
132
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1sb29rdXAuYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J3YXlzLXJlcG9ydC9zcmMvbGliL2RhdGEtYWNjZXNzL2FkYXB0ZXJzL2h0dHAtbG9va3VwLmFkYXB0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQWMsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RCxPQUFPLEVBR0wsbUJBQW1CLEdBQ3BCLE1BQU0sOEJBQThCLENBQUM7QUFDdEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDNUUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDakcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBDQUEwQyxDQUFDOztBQU8zRTs7O0dBR0c7QUFFSCxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsbUJBQW1CO0lBQzdDLElBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDOUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3RELGNBQWMsR0FBRyxNQUFNLENBQUMsMkJBQTJCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUV6RSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQXNCLENBQUM7SUFFdEMsYUFBYSxH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QUssTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUN4RyxDQUFDO1FBQ0osQ0FBQztRQUVELE9BQU8sZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNqQyxLQUFLLEVBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBcUIsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDM0UsS0FBSyxFQUFHLENBQUMsQ0FBQyxRQUFRLENBQVksSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDdkUsR0FBRyxFQUFFLENBQUM7U0FDUCxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7d0dBOUhVLHVCQUF1Qjs0R0FBdkIsdUJBQXVCOzs0RkFBdkIsdUJBQXVCO2tCQURuQyxVQUFVOztBQWtJWCx3QkFBd0I7QUFDeEIsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsdUJBQXVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgTG9va3VwT3B0aW9uSXRlbSxcbiAgTG9va3VwUXVlcnlSZXF1ZXN0LFxuICBSZXBvcnRMb29rdXBBZGFwdGVyLFxufSBmcm9tICcuLi9jb250cmFjdHMvbG9va3VwLmNvbnRyYWN0JztcbmltcG9ydCB7IFJFUE9SVElOR19DT05GSUcgfSBmcm9tICcuLi8uLi9jb3JlL3Rva2Vucy9yZXBvcnRpbmctY29uZmlnLnRva2VuJztcbmltcG9ydCB7IFJlcG9ydFNlc3Npb25Db250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZXMvcmVwb3J0LXNlc3Npb24tY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCB7IGV4dHJhY3RSb3dBcnJheSB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMvZGF0YS1ub3JtYWxpemF0aW9uLnV0aWwnO1xuXG5pbnRlcmZhY2UgQ2FjaGVFbnRyeSB7XG4gIGV4cGlyZXNBdDogbnVtYmVyO1xuICBkYXRhOiBMb29rdXBPcHRpb25JdGVtW107XG59XG5cbi8qKlxuICogQnVpbHQtaW4gSFRUUCBhZGFwdGVyIGZvciBmZXRjaGluZyBkcm9wZG93biBvcHRpb25zIGZyb20gYmFja2VuZCBkYXRhYmFzZSB0YWJsZXMgYW5kIFNQcy5cbiAqIEluY2x1ZGVzIGluLW1lbW9yeSBjYWNoaW5nIHdpdGggVFRMIGFuZCByaWNoIGZhbGxiYWNrIG1vY2sgZGF0YSBmb3IgdGVzdGluZy5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEh0dHBSZXBvcnRMb29rdXBBZGFwdGVyIGV4dGVuZHMgUmVwb3J0TG9va3VwQWRhcHRlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgaHR0cCA9IGluamVjdChIdHRwQ2xpZW50LCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZyA9IGluamVjdChSRVBPUlRJTkdfQ09ORklHLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBwcml2YXRlIHJlYWRvbmx5IHNlc3Npb25TZXJ2aWNlID0gaW5qZWN0KFJlcG9ydFNlc3Npb25Db250ZXh0U2VydmljZSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGNhY2hlID0gbmV3IE1hcDxzdHJpbmcsIENhY2hlRW50cnk+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBtb2NrRGF0YVN0b3JlOiBSZWNvcmQ8c3RyaW5nLCBBcnJheTx7IFtrZXk6IHN0cmluZ106IHVua25vd24gfT4+ID0ge1xuICAgIEN1c3RvbWVyczogW1xuICAgICAgeyBjdXN0b21lcklkOiAxMDEsIGN1c3RvbWVyTmFtZTogJ0FjbWUgQ29ycG9yYXRpb24nLCBicmFuY2hJZDogMSwgaXNBY3RpdmU6IHRydWUgfSxcbiAgICAgIHsgY3VzdG9tZXJJZDogMTAyLCBjdXN0b21lck5hbWU6ICdHbG9iZXggSW5kdXN0cmllcycsIGJyYW5jaElkOiAyLCBpc0FjdGl2ZTogdHJ1ZSB9LFxuICAgICAgeyBjdXN0b21lcklkOiAxMDMsIGN1c3RvbWVyTmFtZTogJ0luaXRlY2ggU29mdHdhcmUnLCBicmFuY2hJZDogMSwgaXNBY3RpdmU6IHRydWUgfSxcbiAgICAgIHsgY3VzdG9tZXJJZDogMTA0LCBjdXN0b21lck5hbWU6ICdVbWJyZWxsYSBDb3Jwb3JhdGlvbicsIGJyYW5jaElkOiAzLCBpc0FjdGl2ZTogdHJ1ZSB9LFxuICAgICAgeyBjdXN0b21lcklkOiAxMDUsIGN1c3RvbWVyTmFtZTogJ1dheW5lIEVudGVycHJpc2VzJywgYnJhbmNoSWQ6IDIsIGlzQWN0aXZlOiB0cnVlIH0sXG4gICAgICB7IGN1c3RvbWVySWQ6IDEwNiwgY3VzdG9tZXJOYW1lOiAnU3RhcmsgSW5kdXN0cmllcycsIGJyYW5jaElkOiAxLCBpc0FjdGl2ZTogdHJ1ZSB9LFxuICAgIF0sXG4gICAgQnJhbmNoZXM6IFtcbiAgICAgIHsgYnJhbmNoSWQ6IDEsIGJyYW5jaE5hbWU6ICdOb3J0aCBBbWVyaWNhIEhRIChOZXcgWW9yayknLCByZWdpb246ICdOb3J0aCBBbWVyaWNhJyB9LFxuICAgICAgeyBicmFuY2hJZDogMiwgYnJhbmNoTmFtZTogJ0VNRUEgRGl2aXNpb24gKExvbmRvbiknLCByZWdpb246ICdFdXJvcGUnIH0sXG4gICAgICB7IGJyYW5jaElkOiAzLCBicmFuY2hOYW1lOiAnQVBBQyBIdWIgKFNpbmdhcG9yZSknLCByZWdpb246ICdBc2lhIFBhY2lmaWMnIH0sXG4gICAgICB7IGJyYW5jaElkOiA0LCBicmFuY2hOYW1lOiAnTEFUQU0gT2ZmaWNlIChTw6NvIFBhdWxvKScsIHJlZ2lvbjogJ0xhdGluIEFtZXJpY2EnIH0sXG4gICAgXSxcbiAgICBQcm9kdWN0czogW1xuICAgICAgeyBwcm9kdWN0SWQ6IDEsIHByb2R1Y3ROYW1lOiAnRW50ZXJwcmlzZSBFUlAgU3VpdGUnLCBjYXRlZ29yeTogJ1NvZnR3YXJlJywgdW5pdFByaWNlOiAyNDAwIH0sXG4gICAgICB7IHByb2R1Y3RJZDogMiwgcHJvZHVjdE5hbWU6ICdDbG91ZCBBbmFseXRpY3MgUHJvJywgY2F0ZWdvcnk6ICdTYWFTJywgdW5pdFByaWNlOiAxMjAwIH0sXG4gICAgICB7IHByb2R1Y3RJZDogMywgcHJvZHVjdE5hbWU6ICdTZWN1cml0eSBTaGllbGQgRW5kcG9pbnQnLCBjYXRlZ29yeTogJ1NlY3VyaXR5JywgdW5pdFByaWNlOiA4NTAgfSxcbiAgICAgIHsgcHJvZHVjdElkOiA0LCBwcm9kdWN0TmFtZTogJ0RlZGljYXRlZCBBUEkgR2F0ZXdheScsIGNhdGVnb3J5OiAnSW5mcmFzdHJ1Y3R1cmUnLCB1bml0UHJpY2U6IDMxMDAgfSxcbiAgICBdLFxuICAgIFBheW1lbnRNZXRob2RzOiBbXG4gICAgICB7IGNvZGU6ICdCQU5LX1RSQU5TRkVSJywgdGl0bGU6ICdEaXJlY3QgQmFuayBXaXJlJyB9LFxuICAgICAgeyBjb2RlOiAnQ1JFRElUX0NBUkQnLCB0aXRsZTogJ0NvcnBvcmF0ZSBDcmVkaXQgQ2FyZCcgfSxcbiAgICAgIHsgY29kZTogJ1BBWVBBTCcsIHRpdGxlOiAnUGF5UGFsIENvcnBvcmF0ZScgfSxcbiAgICAgIHsgY29kZTogJ05FVF8zMCcsIHRpdGxlOiAnTmV0IDMwIEludm9pY2luZycgfSxcbiAgICBdLFxuICAgIHVzcF9HZXRDdXN0b21lckxpc3Q6IFtcbiAgICAgIHsgaWQ6IDEwMSwgbmFtZTogJ0FjbWUgQ29ycG9yYXRpb24gKFNQKScsIGJyYW5jaElkOiAxLCBicmFuY2g6ICdOQScgfSxcbiAgICAgIHsgaWQ6IDEwMiwgbmFtZTogJ0dsb2JleCBJbmR1c3RyaWVzIChTUCknLCBicmFuY2hJZDogMiwgYnJhbmNoOiAnRU1FQScgfSxcbiAgICAgIHsgaWQ6IDEwNSwgbmFtZTogJ1dheW5lIEVudGVycHJpc2VzIChTUCknLCBicmFuY2hJZDogMSwgYnJhbmNoOiAnTkEnIH0sXG4gICAgICB7IGlkOiAxMDYsIG5hbWU6ICdTdGFyayBJbmR1c3RyaWVzIChTUCknLCBicmFuY2hJZDogMywgYnJhbmNoOiAnQVBBQycgfSxcbiAgICBdLFxuICAgIHVzcF9HZXRCcmFuY2hMb29rdXA6IFtcbiAgICAgIHsgaWQ6IDEsIG5hbWU6ICdOb3J0aCBBbWVyaWNhIEhRJyB9LFxuICAgICAgeyBpZDogMiwgbmFtZTogJ0VNRUEgRGl2aXNpb24nIH0sXG4gICAgICB7IGlkOiAzLCBuYW1lOiAnQVBBQyBIdWInIH0sXG4gICAgXSxcbiAgfTtcblxuICBmZXRjaE9wdGlvbnMocmVxdWVzdDogTG9va3VwUXVlcnlSZXF1ZXN0KTogT2JzZXJ2YWJsZTxMb29rdXBPcHRpb25JdGVtW10+IHtcbiAgICBjb25zdCBjYWNoZUtleSA9IHRoaXMuZ2VuZXJhdGVDYWNoZUtleShyZXF1ZXN0KTtcbiAgICBjb25zdCBjYWNoZWQgPSB0aGlzLmNhY2hlLmdldChjYWNoZUtleSk7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcblxuICAgIGlmIChjYWNoZWQgJiYgY2FjaGVkLmV4cGlyZXNBdCA+IG5vdykge1xuICAgICAgcmV0dXJuIG9mKGNhY2hlZC5kYXRhKTtcbiAgICB9XG5cbiAgICBjb25zdCBiYXNlVXJsID0gdGhpcy5jb25maWc/LmFwaUJhc2VVcmw7XG4gICAgaWYgKGJhc2VVcmwgJiYgdGhpcy5odHRwKSB7XG4gICAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5zZXNzaW9uU2VydmljZT8uc2Vzc2lvbkNvbnRleHQoKSA/PyB7fTtcbiAgICAgIGxldCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCk7XG4gICAgICBpZiAoc2Vzc2lvblsnY29tcGFueUlkJ10gIT09IHVuZGVmaW5lZCAmJiBzZXNzaW9uWydjb21wYW55SWQnXSAhPT0gbnVsbCkge1xuICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ1gtQ29tcGFueS1JZCcsIFN0cmluZyhzZXNzaW9uWydjb21wYW55SWQnXSkpO1xuICAgICAgfVxuICAgICAgaWYgKHNlc3Npb25bJ2JyYW5jaElkJ10gIT09IHVuZGVmaW5lZCAmJiBzZXNzaW9uWydicmFuY2hJZCddICE9PSBudWxsKSB7XG4gICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgnWC1CcmFuY2gtSWQnLCBTdHJpbmcoc2Vzc2lvblsnYnJhbmNoSWQnXSkpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8dW5rbm93bj4oYCR7YmFzZVVybH0vbG9va3VwYCwgcmVxdWVzdCwgeyBoZWFkZXJzIH0pLnBpcGUoXG4gICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICBjb25zdCByYXdJdGVtcyA9IGV4dHJhY3RSb3dBcnJheShyZXNwb25zZSk7XG4gICAgICAgICAgcmV0dXJuIHJhd0l0ZW1zLm1hcCgocjogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAociAmJiB0eXBlb2YgciA9PT0gJ29iamVjdCcgJiYgJ3ZhbHVlJyBpbiByKSB7XG4gICAgICAgICAgICAgIHJldHVybiByIGFzIExvb2t1cE9wdGlvbkl0ZW07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB2YWwgPSByPy5bcmVxdWVzdC52YWx1ZUZpZWxkXSA/PyByPy5pZCA/PyByPy5jb2RlID8/IFN0cmluZyhyID8/ICcnKTtcbiAgICAgICAgICAgIGNvbnN0IGxibCA9IHI/LltyZXF1ZXN0LmRpc3BsYXlGaWVsZF0gPz8gcj8ubmFtZSA/PyByPy50aXRsZSA/PyBTdHJpbmcodmFsKTtcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiB2YWwsIGxhYmVsOiBsYmwsIHJhdzogciB9O1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFwKChpdGVtcykgPT4ge1xuICAgICAgICAgIC8vIE5ldmVyIGNhY2hlIGVtcHR5IHJlc3VsdHM6IHBhcmFtZXRlcnMgbWF5IHNpbXBseSBub3QgaGF2ZSBiZWVuIGZpbGxlZCB5ZXQuXG4gICAgICAgICAgaWYgKGl0ZW1zLmxlbmd0aCA+IDApIHRoaXMuc2V0Q2FjaGUoY2FjaGVLZXksIGl0ZW1zKTtcbiAgICAgICAgfSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xuICAgICAgICAgIGNvbnN0IG1zZyA9IGVycj8uZXJyb3I/Lm1lc3NhZ2UgfHwgZXJyPy5tZXNzYWdlIHx8ICdMb29rdXAgcmVxdWVzdCBmYWlsZWQnO1xuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcihBcnJheS5pc0FycmF5KG1zZykgPyBtc2cuam9pbignLCAnKSA6IG1zZykpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBmYWxsYmFjayA9IHRoaXMucmVzb2x2ZU1vY2tPcHRpb25zKHJlcXVlc3QpO1xuICAgIHRoaXMuc2V0Q2FjaGUoY2FjaGVLZXksIGZhbGxiYWNrKTtcbiAgICByZXR1cm4gb2YoZmFsbGJhY2spO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRDYWNoZShrZXk6IHN0cmluZywgZGF0YTogTG9va3VwT3B0aW9uSXRlbVtdLCB0dGxTZWNvbmRzID0gMzAwKTogdm9pZCB7XG4gICAgdGhpcy5jYWNoZS5zZXQoa2V5LCB7XG4gICAgICBleHBpcmVzQXQ6IERhdGUubm93KCkgKyB0dGxTZWNvbmRzICogMTAwMCxcbiAgICAgIGRhdGEsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlQ2FjaGVLZXkocmVxOiBMb29rdXBRdWVyeVJlcXVlc3QpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtyZXEuc291cmNlVHlwZX06JHtyZXEuZW50aXR5TmFtZX06JHtyZXEudmFsdWVGaWVsZH06JHtyZXEuZGlzcGxheUZpZWxkfToke0pTT04uc3RyaW5naWZ5KHJlcS5maWx0ZXIgPz8ge30pfToke0pTT04uc3RyaW5naWZ5KHJlcS5wYXJhbWV0ZXJzID8/IHt9KX1gO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlTW9ja09wdGlvbnMocmVxOiBMb29rdXBRdWVyeVJlcXVlc3QpOiBMb29rdXBPcHRpb25JdGVtW10ge1xuICAgIGNvbnN0IGVudGl0eSA9IHJlcS5lbnRpdHlOYW1lIHx8ICcnO1xuICAgIGNvbnN0IHJlY29yZHMgPSB0aGlzLm1vY2tEYXRhU3RvcmVbZW50aXR5XSA/PyBbXTtcbiAgICBjb25zdCB2YWxLZXkgPSByZXEudmFsdWVGaWVsZDtcbiAgICBjb25zdCBsYWJlbEtleSA9IHJlcS5kaXNwbGF5RmllbGQ7XG5cbiAgICBsZXQgZmlsdGVyZWRSZWNvcmRzID0gcmVjb3JkcztcbiAgICBjb25zdCBicmFuY2hQYXJhbSA9IHJlcS5wYXJhbWV0ZXJzPy5bJ0BCcmFuY2hJZCddID8/IHJlcS5wYXJhbWV0ZXJzPy5bJ2JyYW5jaElkJ107XG4gICAgaWYgKGJyYW5jaFBhcmFtICE9PSB1bmRlZmluZWQgJiYgYnJhbmNoUGFyYW0gIT09IG51bGwgJiYgYnJhbmNoUGFyYW0gIT09ICcnKSB7XG4gICAgICBjb25zdCBtYXRjaE51bSA9IE51bWJlcihicmFuY2hQYXJhbSk7XG4gICAgICBmaWx0ZXJlZFJlY29yZHMgPSByZWNvcmRzLmZpbHRlcihcbiAgICAgICAgKHIpID0+IHJbJ2JyYW5jaElkJ10gPT09IHVuZGVmaW5lZCB8fCByWydicmFuY2hJZCddID09PSBtYXRjaE51bSB8fCByWydicmFuY2gnXSA9PT0gU3RyaW5nKGJyYW5jaFBhcmFtKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmlsdGVyZWRSZWNvcmRzLm1hcCgocikgPT4gKHtcbiAgICAgIHZhbHVlOiAoclt2YWxLZXldIGFzIHN0cmluZyB8IG51bWJlcikgPz8gU3RyaW5nKHJbJ2lkJ10gPz8gclsnY29kZSddID8/ICcnKSxcbiAgICAgIGxhYmVsOiAocltsYWJlbEtleV0gYXMgc3RyaW5nKSA/PyBTdHJpbmcoclsnbmFtZSddID8/IHJbJ3RpdGxlJ10gPz8gJycpLFxuICAgICAgcmF3OiByLFxuICAgIH0pKTtcbiAgfVxufVxuXG4vKiogQ29udmVuaWVuY2UgYWxpYXMgKi9cbmV4cG9ydCBjb25zdCBIdHRwTG9va3VwQWRhcHRlciA9IEh0dHBSZXBvcnRMb29rdXBBZGFwdGVyO1xuIl19
|
|
141
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1sb29rdXAuYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J3YXlzLXJlcG9ydC9zcmMvbGliL2RhdGEtYWNjZXNzL2FkYXB0ZXJzL2h0dHAtbG9va3VwLmFkYXB0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQWMsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdFLE9BQU8sRUFHTCxtQkFBbUIsR0FDcEIsTUFBTSw4QkFBOEIsQ0FBQztBQUN0QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUNqRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMENBQTBDLENBQUM7O0FBTzNFOzs7R0FHRztBQUVILE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxtQkFBbUI7SUFDN0MsSUFBSSxHQUFHLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM5QyxNQUFNLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDdEQsY0FBYyxHQUFHLE1BQU0sQ0FBQywyQkFBMkIsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBRXpFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBc0IsQ0FBQztJQUN0QyxRQUFRLEdBQUcsSUFBSSxHQUFHLEVBQTBDLENBQUM7SUFFN0QsYUFBYSxHQUFzRDtRQUNsRixTQUFTLEVBQUU7WUFDVCxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtZQUNsRixFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtZQUNuRixFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtZQUNsRixFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLHNCQUFzQixFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtZQUN0RixFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtZQUNuRixFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtTQUNuRjtRQUNELFFBQVEsRUFBRTtZQUNSLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRTtZQUNuRixFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLHdCQUF3QixFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUU7WUFDdkUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFO1lBQzNFLEVBQUUsUUFBUSxFQUFFLENBQUMs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LE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLHVCQUF1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaW5hbGl6ZSwgbWFwLCBzaGFyZVJlcGxheSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgTG9va3VwT3B0aW9uSXRlbSxcbiAgTG9va3VwUXVlcnlSZXF1ZXN0LFxuICBSZXBvcnRMb29rdXBBZGFwdGVyLFxufSBmcm9tICcuLi9jb250cmFjdHMvbG9va3VwLmNvbnRyYWN0JztcbmltcG9ydCB7IFJFUE9SVElOR19DT05GSUcgfSBmcm9tICcuLi8uLi9jb3JlL3Rva2Vucy9yZXBvcnRpbmctY29uZmlnLnRva2VuJztcbmltcG9ydCB7IFJlcG9ydFNlc3Npb25Db250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZXMvcmVwb3J0LXNlc3Npb24tY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCB7IGV4dHJhY3RSb3dBcnJheSB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMvZGF0YS1ub3JtYWxpemF0aW9uLnV0aWwnO1xuXG5pbnRlcmZhY2UgQ2FjaGVFbnRyeSB7XG4gIGV4cGlyZXNBdDogbnVtYmVyO1xuICBkYXRhOiBMb29rdXBPcHRpb25JdGVtW107XG59XG5cbi8qKlxuICogQnVpbHQtaW4gSFRUUCBhZGFwdGVyIGZvciBmZXRjaGluZyBkcm9wZG93biBvcHRpb25zIGZyb20gYmFja2VuZCBkYXRhYmFzZSB0YWJsZXMgYW5kIFNQcy5cbiAqIEluY2x1ZGVzIGluLW1lbW9yeSBjYWNoaW5nIHdpdGggVFRMLCBpbi1mbGlnaHQgcmVxdWVzdCBkZWR1cGxpY2F0aW9uLCBhbmQgZmFsbGJhY2sgbW9jayBkYXRhLlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgSHR0cFJlcG9ydExvb2t1cEFkYXB0ZXIgZXh0ZW5kcyBSZXBvcnRMb29rdXBBZGFwdGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBodHRwID0gaW5qZWN0KEh0dHBDbGllbnQsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnID0gaW5qZWN0KFJFUE9SVElOR19DT05GSUcsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2Vzc2lvblNlcnZpY2UgPSBpbmplY3QoUmVwb3J0U2Vzc2lvbkNvbnRleHRTZXJ2aWNlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgY2FjaGUgPSBuZXcgTWFwPHN0cmluZywgQ2FjaGVFbnRyeT4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBpbkZsaWdodCA9IG5ldyBNYXA8c3RyaW5nLCBPYnNlcnZhYmxlPExvb2t1cE9wdGlvbkl0ZW1bXT4+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBtb2NrRGF0YVN0b3JlOiBSZWNvcmQ8c3RyaW5nLCBBcnJheTx7IFtrZXk6IHN0cmluZ106IHVua25vd24gfT4+ID0ge1xuICAgIEN1c3RvbWVyczogW1xuICAgICAgeyBjdXN0b21lcklkOiAxMDEsIGN1c3RvbWVyTmFtZTogJ0FjbWUgQ29ycG9yYXRpb24nLCBicmFuY2hJZDogMSwgaXNBY3RpdmU6IHRydWUgfSxcbiAgICAgIHsgY3VzdG9tZXJJZDogMTAyLCBjdXN0b21lck5hbWU6ICdHbG9iZXggSW5kdXN0cmllcycsIGJyYW5jaElkOiAyLCBpc0FjdGl2ZTogdHJ1ZSB9LFxuICAgICAgeyBjdXN0b21lcklkOiAxMDMsIGN1c3RvbWVyTmFtZTogJ0luaXRlY2ggU29mdHdhcmUnLCBicmFuY2hJZDogMSwgaXNBY3RpdmU6IHRydWUgfSxcbiAgICAgIHsgY3VzdG9tZXJJZDogMTA0LCBjdXN0b21lck5hbWU6ICdVbWJyZWxsYSBDb3Jwb3JhdGlvbicsIGJyYW5jaElkOiAzLCBpc0FjdGl2ZTogdHJ1ZSB9LFxuICAgICAgeyBjdXN0b21lcklkOiAxMDUsIGN1c3RvbWVyTmFtZTogJ1dheW5lIEVudGVycHJpc2VzJywgYnJhbmNoSWQ6IDIsIGlzQWN0aXZlOiB0cnVlIH0sXG4gICAgICB7IGN1c3RvbWVySWQ6IDEwNiwgY3VzdG9tZXJOYW1lOiAnU3RhcmsgSW5kdXN0cmllcycsIGJyYW5jaElkOiAxLCBpc0FjdGl2ZTogdHJ1ZSB9LFxuICAgIF0sXG4gICAgQnJhbmNoZXM6IFtcbiAgICAgIHsgYnJhbmNoSWQ6IDEsIGJyYW5jaE5hbWU6ICdOb3J0aCBBbWVyaWNhIEhRIChOZXcgWW9yayknLCByZWdpb246ICdOb3J0aCBBbWVyaWNhJyB9LFxuICAgICAgeyBicmFuY2hJZDogMiwgYnJhbmNoTmFtZTogJ0VNRUEgRGl2aXNpb24gKExvbmRvbiknLCByZWdpb246ICdFdXJvcGUnIH0sXG4gICAgICB7IGJyYW5jaElkOiAzLCBicmFuY2hOYW1lOiAnQVBBQyBIdWIgKFNpbmdhcG9yZSknLCByZWdpb246ICdBc2lhIFBhY2lmaWMnIH0sXG4gICAgICB7IGJyYW5jaElkOiA0LCBicmFuY2hOYW1lOiAnTEFUQU0gT2ZmaWNlIChTw6NvIFBhdWxvKScsIHJlZ2lvbjogJ0xhdGluIEFtZXJpY2EnIH0sXG4gICAgXSxcbiAgICBQcm9kdWN0czogW1xuICAgICAgeyBwcm9kdWN0SWQ6IDEsIHByb2R1Y3ROYW1lOiAnRW50ZXJwcmlzZSBFUlAgU3VpdGUnLCBjYXRlZ29yeTogJ1NvZnR3YXJlJywgdW5pdFByaWNlOiAyNDAwIH0sXG4gICAgICB7IHByb2R1Y3RJZDogMiwgcHJvZHVjdE5hbWU6ICdDbG91ZCBBbmFseXRpY3MgUHJvJywgY2F0ZWdvcnk6ICdTYWFTJywgdW5pdFByaWNlOiAxMjAwIH0sXG4gICAgICB7IHByb2R1Y3RJZDogMywgcHJvZHVjdE5hbWU6ICdTZWN1cml0eSBTaGllbGQgRW5kcG9pbnQnLCBjYXRlZ29yeTogJ1NlY3VyaXR5JywgdW5pdFByaWNlOiA4NTAgfSxcbiAgICAgIHsgcHJvZHVjdElkOiA0LCBwcm9kdWN0TmFtZTogJ0RlZGljYXRlZCBBUEkgR2F0ZXdheScsIGNhdGVnb3J5OiAnSW5mcmFzdHJ1Y3R1cmUnLCB1bml0UHJpY2U6IDMxMDAgfSxcbiAgICBdLFxuICAgIFBheW1lbnRNZXRob2RzOiBbXG4gICAgICB7IGNvZGU6ICdCQU5LX1RSQU5TRkVSJywgdGl0bGU6ICdEaXJlY3QgQmFuayBXaXJlJyB9LFxuICAgICAgeyBjb2RlOiAnQ1JFRElUX0NBUkQnLCB0aXRsZTogJ0NvcnBvcmF0ZSBDcmVkaXQgQ2FyZCcgfSxcbiAgICAgIHsgY29kZTogJ1BBWVBBTCcsIHRpdGxlOiAnUGF5UGFsIENvcnBvcmF0ZScgfSxcbiAgICAgIHsgY29kZTogJ05FVF8zMCcsIHRpdGxlOiAnTmV0IDMwIEludm9pY2luZycgfSxcbiAgICBdLFxuICAgIHVzcF9HZXRDdXN0b21lckxpc3Q6IFtcbiAgICAgIHsgaWQ6IDEwMSwgbmFtZTogJ0FjbWUgQ29ycG9yYXRpb24gKFNQKScsIGJyYW5jaElkOiAxLCBicmFuY2g6ICdOQScgfSxcbiAgICAgIHsgaWQ6IDEwMiwgbmFtZTogJ0dsb2JleCBJbmR1c3RyaWVzIChTUCknLCBicmFuY2hJZDogMiwgYnJhbmNoOiAnRU1FQScgfSxcbiAgICAgIHsgaWQ6IDEwNSwgbmFtZTogJ1dheW5lIEVudGVycHJpc2VzIChTUCknLCBicmFuY2hJZDogMSwgYnJhbmNoOiAnTkEnIH0sXG4gICAgICB7IGlkOiAxMDYsIG5hbWU6ICdTdGFyayBJbmR1c3RyaWVzIChTUCknLCBicmFuY2hJZDogMywgYnJhbmNoOiAnQVBBQycgfSxcbiAgICBdLFxuICAgIHVzcF9HZXRCcmFuY2hMb29rdXA6IFtcbiAgICAgIHsgaWQ6IDEsIG5hbWU6ICdOb3J0aCBBbWVyaWNhIEhRJyB9LFxuICAgICAgeyBpZDogMiwgbmFtZTogJ0VNRUEgRGl2aXNpb24nIH0sXG4gICAgICB7IGlkOiAzLCBuYW1lOiAnQVBBQyBIdWInIH0sXG4gICAgXSxcbiAgfTtcblxuICBmZXRjaE9wdGlvbnMocmVxdWVzdDogTG9va3VwUXVlcnlSZXF1ZXN0KTogT2JzZXJ2YWJsZTxMb29rdXBPcHRpb25JdGVtW10+IHtcbiAgICBjb25zdCBjYWNoZUtleSA9IHRoaXMuZ2VuZXJhdGVDYWNoZUtleShyZXF1ZXN0KTtcbiAgICBjb25zdCBjYWNoZWQgPSB0aGlzLmNhY2hlLmdldChjYWNoZUtleSk7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcblxuICAgIGlmIChjYWNoZWQgJiYgY2FjaGVkLmV4cGlyZXNBdCA+IG5vdykge1xuICAgICAgcmV0dXJuIG9mKGNhY2hlZC5kYXRhKTtcbiAgICB9XG5cbiAgICBjb25zdCBydW5uaW5nID0gdGhpcy5pbkZsaWdodC5nZXQoY2FjaGVLZXkpO1xuICAgIGlmIChydW5uaW5nKSB7XG4gICAgICByZXR1cm4gcnVubmluZztcbiAgICB9XG5cbiAgICBjb25zdCBiYXNlVXJsID0gdGhpcy5jb25maWc/LmFwaUJhc2VVcmw7XG4gICAgaWYgKGJhc2VVcmwgJiYgdGhpcy5odHRwKSB7XG4gICAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5zZXNzaW9uU2VydmljZT8uc2Vzc2lvbkNvbnRleHQoKSA/PyB7fTtcbiAgICAgIGxldCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCk7XG4gICAgICBpZiAoc2Vzc2lvblsnY29tcGFueUlkJ10gIT09IHVuZGVmaW5lZCAmJiBzZXNzaW9uWydjb21wYW55SWQnXSAhPT0gbnVsbCkge1xuICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ1gtQ29tcGFueS1JZCcsIFN0cmluZyhzZXNzaW9uWydjb21wYW55SWQnXSkpO1xuICAgICAgfVxuICAgICAgaWYgKHNlc3Npb25bJ2JyYW5jaElkJ10gIT09IHVuZGVmaW5lZCAmJiBzZXNzaW9uWydicmFuY2hJZCddICE9PSBudWxsKSB7XG4gICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgnWC1CcmFuY2gtSWQnLCBTdHJpbmcoc2Vzc2lvblsnYnJhbmNoSWQnXSkpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBvYnMkID0gdGhpcy5odHRwLnBvc3Q8dW5rbm93bj4oYCR7YmFzZVVybH0vbG9va3VwYCwgcmVxdWVzdCwgeyBoZWFkZXJzIH0pLnBpcGUoXG4gICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICBjb25zdCByYXdJdGVtcyA9IGV4dHJhY3RSb3dBcnJheShyZXNwb25zZSk7XG4gICAgICAgICAgcmV0dXJuIHJhd0l0ZW1zLm1hcCgocjogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAociAmJiB0eXBlb2YgciA9PT0gJ29iamVjdCcgJiYgJ3ZhbHVlJyBpbiByKSB7XG4gICAgICAgICAgICAgIHJldHVybiByIGFzIExvb2t1cE9wdGlvbkl0ZW07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB2YWwgPSByPy5bcmVxdWVzdC52YWx1ZUZpZWxkXSA/PyByPy5pZCA/PyByPy5jb2RlID8/IFN0cmluZyhyID8/ICcnKTtcbiAgICAgICAgICAgIGNvbnN0IGxibCA9IHI/LltyZXF1ZXN0LmRpc3BsYXlGaWVsZF0gPz8gcj8ubmFtZSA/PyByPy50aXRsZSA/PyBTdHJpbmcodmFsKTtcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiB2YWwsIGxhYmVsOiBsYmwsIHJhdzogciB9O1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFwKChpdGVtcykgPT4ge1xuICAgICAgICAgIC8vIE5ldmVyIGNhY2hlIGVtcHR5IHJlc3VsdHM6IHBhcmFtZXRlcnMgbWF5IHNpbXBseSBub3QgaGF2ZSBiZWVuIGZpbGxlZCB5ZXQuXG4gICAgICAgICAgaWYgKGl0ZW1zLmxlbmd0aCA+IDApIHRoaXMuc2V0Q2FjaGUoY2FjaGVLZXksIGl0ZW1zLCA2MDApO1xuICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XG4gICAgICAgICAgY29uc3QgbXNnID0gZXJyPy5lcnJvcj8ubWVzc2FnZSB8fCBlcnI/Lm1lc3NhZ2UgfHwgJ0xvb2t1cCByZXF1ZXN0IGZhaWxlZCc7XG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKEFycmF5LmlzQXJyYXkobXNnKSA/IG1zZy5qb2luKCcsICcpIDogbXNnKSk7XG4gICAgICAgIH0pLFxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5pbkZsaWdodC5kZWxldGUoY2FjaGVLZXkpO1xuICAgICAgICB9KSxcbiAgICAgICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KVxuICAgICAgKTtcblxuICAgICAgdGhpcy5pbkZsaWdodC5zZXQoY2FjaGVLZXksIG9icyQpO1xuICAgICAgcmV0dXJuIG9icyQ7XG4gICAgfVxuXG4gICAgY29uc3QgZmFsbGJhY2sgPSB0aGlzLnJlc29sdmVNb2NrT3B0aW9ucyhyZXF1ZXN0KTtcbiAgICB0aGlzLnNldENhY2hlKGNhY2hlS2V5LCBmYWxsYmFjaywgNjAwKTtcbiAgICByZXR1cm4gb2YoZmFsbGJhY2spO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRDYWNoZShrZXk6IHN0cmluZywgZGF0YTogTG9va3VwT3B0aW9uSXRlbVtdLCB0dGxTZWNvbmRzID0gNjAwKTogdm9pZCB7XG4gICAgdGhpcy5jYWNoZS5zZXQoa2V5LCB7XG4gICAgICBleHBpcmVzQXQ6IERhdGUubm93KCkgKyB0dGxTZWNvbmRzICogMTAwMCxcbiAgICAgIGRhdGEsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlQ2FjaGVLZXkocmVxOiBMb29rdXBRdWVyeVJlcXVlc3QpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtyZXEuc291cmNlVHlwZX06JHtyZXEuZW50aXR5TmFtZX06JHtyZXEudmFsdWVGaWVsZH06JHtyZXEuZGlzcGxheUZpZWxkfToke0pTT04uc3RyaW5naWZ5KHJlcS5maWx0ZXIgPz8ge30pfToke0pTT04uc3RyaW5naWZ5KHJlcS5wYXJhbWV0ZXJzID8/IHt9KX1gO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlTW9ja09wdGlvbnMocmVxOiBMb29rdXBRdWVyeVJlcXVlc3QpOiBMb29rdXBPcHRpb25JdGVtW10ge1xuICAgIGNvbnN0IGVudGl0eSA9IHJlcS5lbnRpdHlOYW1lIHx8ICcnO1xuICAgIGNvbnN0IHJlY29yZHMgPSB0aGlzLm1vY2tEYXRhU3RvcmVbZW50aXR5XSA/PyBbXTtcbiAgICBjb25zdCB2YWxLZXkgPSByZXEudmFsdWVGaWVsZDtcbiAgICBjb25zdCBsYWJlbEtleSA9IHJlcS5kaXNwbGF5RmllbGQ7XG5cbiAgICBsZXQgZmlsdGVyZWRSZWNvcmRzID0gcmVjb3JkcztcbiAgICBjb25zdCBicmFuY2hQYXJhbSA9IHJlcS5wYXJhbWV0ZXJzPy5bJ0BCcmFuY2hJZCddID8/IHJlcS5wYXJhbWV0ZXJzPy5bJ2JyYW5jaElkJ107XG4gICAgaWYgKGJyYW5jaFBhcmFtICE9PSB1bmRlZmluZWQgJiYgYnJhbmNoUGFyYW0gIT09IG51bGwgJiYgYnJhbmNoUGFyYW0gIT09ICcnKSB7XG4gICAgICBjb25zdCBtYXRjaE51bSA9IE51bWJlcihicmFuY2hQYXJhbSk7XG4gICAgICBmaWx0ZXJlZFJlY29yZHMgPSByZWNvcmRzLmZpbHRlcihcbiAgICAgICAgKHIpID0+IHJbJ2JyYW5jaElkJ10gPT09IHVuZGVmaW5lZCB8fCByWydicmFuY2hJZCddID09PSBtYXRjaE51bSB8fCByWydicmFuY2gnXSA9PT0gU3RyaW5nKGJyYW5jaFBhcmFtKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmlsdGVyZWRSZWNvcmRzLm1hcCgocikgPT4gKHtcbiAgICAgIHZhbHVlOiAoclt2YWxLZXldIGFzIHN0cmluZyB8IG51bWJlcikgPz8gU3RyaW5nKHJbJ2lkJ10gPz8gclsnY29kZSddID8/ICcnKSxcbiAgICAgIGxhYmVsOiAocltsYWJlbEtleV0gYXMgc3RyaW5nKSA/PyBTdHJpbmcoclsnbmFtZSddID8/IHJbJ3RpdGxlJ10gPz8gJycpLFxuICAgICAgcmF3OiByLFxuICAgIH0pKTtcbiAgfVxufVxuXG4vKiogQ29udmVuaWVuY2UgYWxpYXMgKi9cbmV4cG9ydCBjb25zdCBIdHRwTG9va3VwQWRhcHRlciA9IEh0dHBSZXBvcnRMb29rdXBBZGFwdGVyO1xuIl19
|
|
@@ -2,19 +2,18 @@ import { Injectable, inject } from '@angular/core';
|
|
|
2
2
|
import { of, throwError } from 'rxjs';
|
|
3
3
|
import { ReportPersistenceAdapter } from '../contracts/report-persistence.contract';
|
|
4
4
|
import { ReportTemplateService } from '../../features/designer/services/report-template.service';
|
|
5
|
+
import { ReportStorageService } from '../../core/services/report-storage.service';
|
|
5
6
|
import * as i0 from "@angular/core";
|
|
6
7
|
const STORAGE_PREFIX = 'bways_rpt_def_';
|
|
7
8
|
const INDEX_KEY = 'bways_rpt_index';
|
|
8
9
|
export class LocalStorageReportPersistenceAdapter extends ReportPersistenceAdapter {
|
|
9
10
|
templateService = inject(ReportTemplateService, { optional: true });
|
|
11
|
+
storage = inject(ReportStorageService);
|
|
10
12
|
constructor() {
|
|
11
13
|
super();
|
|
12
14
|
this.seedDefaultBlueprintsIfEmpty();
|
|
13
15
|
}
|
|
14
16
|
seedDefaultBlueprintsIfEmpty() {
|
|
15
|
-
if (typeof window === 'undefined' || !window.localStorage) {
|
|
16
|
-
return;
|
|
17
|
-
}
|
|
18
17
|
const index = this.getIndex();
|
|
19
18
|
if (index.length === 0 && this.templateService) {
|
|
20
19
|
const blueprints = this.templateService.getTemplates();
|
|
@@ -33,27 +32,13 @@ export class LocalStorageReportPersistenceAdapter extends ReportPersistenceAdapt
|
|
|
33
32
|
}
|
|
34
33
|
}
|
|
35
34
|
getIndex() {
|
|
36
|
-
|
|
37
|
-
return [];
|
|
38
|
-
}
|
|
39
|
-
try {
|
|
40
|
-
const raw = window.localStorage.getItem(INDEX_KEY);
|
|
41
|
-
return raw ? JSON.parse(raw) : [];
|
|
42
|
-
}
|
|
43
|
-
catch {
|
|
44
|
-
return [];
|
|
45
|
-
}
|
|
35
|
+
return this.storage.getJSON(INDEX_KEY, []);
|
|
46
36
|
}
|
|
47
37
|
saveIndex(index) {
|
|
48
|
-
|
|
49
|
-
window.localStorage.setItem(INDEX_KEY, JSON.stringify(index));
|
|
50
|
-
}
|
|
38
|
+
this.storage.setJSON(INDEX_KEY, index);
|
|
51
39
|
}
|
|
52
40
|
saveDirect(def) {
|
|
53
|
-
|
|
54
|
-
return;
|
|
55
|
-
}
|
|
56
|
-
window.localStorage.setItem(STORAGE_PREFIX + def.id, JSON.stringify(def));
|
|
41
|
+
this.storage.setJSON(STORAGE_PREFIX + def.id, def);
|
|
57
42
|
const index = this.getIndex();
|
|
58
43
|
if (!index.includes(def.id)) {
|
|
59
44
|
index.push(def.id);
|
|
@@ -61,17 +46,14 @@ export class LocalStorageReportPersistenceAdapter extends ReportPersistenceAdapt
|
|
|
61
46
|
}
|
|
62
47
|
}
|
|
63
48
|
load(reportId) {
|
|
64
|
-
|
|
65
|
-
return throwError(() => new Error('LocalStorage is not available in current environment.'));
|
|
66
|
-
}
|
|
67
|
-
const raw = window.localStorage.getItem(STORAGE_PREFIX + reportId);
|
|
49
|
+
const raw = this.storage.getItem(STORAGE_PREFIX + reportId);
|
|
68
50
|
if (raw) {
|
|
69
51
|
try {
|
|
70
52
|
const def = JSON.parse(raw);
|
|
71
53
|
return of(def);
|
|
72
54
|
}
|
|
73
|
-
catch
|
|
74
|
-
return throwError(() => new Error(`Failed to parse report "${reportId}" from
|
|
55
|
+
catch {
|
|
56
|
+
return throwError(() => new Error(`Failed to parse report "${reportId}" from storage.`));
|
|
75
57
|
}
|
|
76
58
|
}
|
|
77
59
|
// Fallback: check template service blueprints
|
|
@@ -91,28 +73,22 @@ export class LocalStorageReportPersistenceAdapter extends ReportPersistenceAdapt
|
|
|
91
73
|
return of(def);
|
|
92
74
|
}
|
|
93
75
|
}
|
|
94
|
-
return throwError(() => new Error(`Report definition with ID "${reportId}" not found in
|
|
76
|
+
return throwError(() => new Error(`Report definition with ID "${reportId}" not found in storage.`));
|
|
95
77
|
}
|
|
96
78
|
save(report) {
|
|
97
|
-
if (typeof window === 'undefined' || !window.localStorage) {
|
|
98
|
-
return throwError(() => new Error('LocalStorage is not available in current environment.'));
|
|
99
|
-
}
|
|
100
79
|
try {
|
|
101
80
|
this.saveDirect(report);
|
|
102
81
|
return of(report);
|
|
103
82
|
}
|
|
104
83
|
catch (err) {
|
|
105
|
-
return throwError(() => err instanceof Error ? err : new Error(String(err)));
|
|
84
|
+
return throwError(() => (err instanceof Error ? err : new Error(String(err))));
|
|
106
85
|
}
|
|
107
86
|
}
|
|
108
87
|
list() {
|
|
109
|
-
if (typeof window === 'undefined' || !window.localStorage) {
|
|
110
|
-
return of([]);
|
|
111
|
-
}
|
|
112
88
|
const index = this.getIndex();
|
|
113
89
|
const summaries = [];
|
|
114
90
|
for (const id of index) {
|
|
115
|
-
const raw =
|
|
91
|
+
const raw = this.storage.getItem(STORAGE_PREFIX + id);
|
|
116
92
|
if (raw) {
|
|
117
93
|
try {
|
|
118
94
|
const def = JSON.parse(raw);
|
|
@@ -133,17 +109,13 @@ export class LocalStorageReportPersistenceAdapter extends ReportPersistenceAdapt
|
|
|
133
109
|
return of(summaries);
|
|
134
110
|
}
|
|
135
111
|
delete(reportId) {
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
this.saveIndex(index);
|
|
140
|
-
}
|
|
112
|
+
this.storage.removeItem(STORAGE_PREFIX + reportId);
|
|
113
|
+
const index = this.getIndex().filter((id) => id !== reportId);
|
|
114
|
+
this.saveIndex(index);
|
|
141
115
|
return of(undefined);
|
|
142
116
|
}
|
|
143
117
|
publish(reportId, version) {
|
|
144
|
-
const raw =
|
|
145
|
-
? window.localStorage.getItem(STORAGE_PREFIX + reportId)
|
|
146
|
-
: null;
|
|
118
|
+
const raw = this.storage.getItem(STORAGE_PREFIX + reportId);
|
|
147
119
|
if (raw) {
|
|
148
120
|
try {
|
|
149
121
|
const def = JSON.parse(raw);
|
|
@@ -164,4 +136,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
164
136
|
providedIn: 'root',
|
|
165
137
|
}]
|
|
166
138
|
}], ctorParameters: () => [] });
|
|
167
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtc3RvcmFnZS1wZXJzaXN0ZW5jZS5hZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYndheXMtcmVwb3J0L3NyYy9saWIvZGF0YS1hY2Nlc3MvYWRhcHRlcnMvbG9jYWwtc3RvcmFnZS1wZXJzaXN0ZW5jZS5hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBYyxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRXBGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDOztBQUVqRyxNQUFNLGNBQWMsR0FBRyxnQkFBZ0IsQ0FBQztBQUN4QyxNQUFNLFNBQVMsR0FBRyxpQkFBaUIsQ0FBQztBQUtwQyxNQUFNLE9BQU8sb0NBQXFDLFNBQVEsd0JBQXdCO0lBQy9ELGVBQWUsR0FBRyxNQUFNLENBQUMscUJBQXFCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUVyRjtRQUNFLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVPLDRCQUE0QjtRQUNsQyxJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUMxRCxPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM5QixJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUMvQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3ZELFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRTtnQkFDeEIsTUFBTSxHQUFHLEdBQXFCO29CQUM1QixHQUFHLEVBQUUsQ0FBQyxVQUFVO29CQUNoQixFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUU7b0JBQ1QsVUFBVSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsVUFBVSxJQUFJLEVBQUU7b0JBQzFDLE1BQU0sRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLE1BQU07b0JBQzVCLFdBQVcsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFdBQVc7b0JBQ3RDLFVBQVUsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFVBQVU7b0JBQ3BDLElBQUksRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUk7aUJBQ3pCLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN2QixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRU8sUUFBUTtRQUNkLElBQUksT0FBTyxNQUFNLEtBQUssV0FBVyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQzFELE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUNELElBQUksQ0FBQztZQUNILE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ25ELE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDcEMsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztJQUNILENBQUM7SUFFTyxTQUFTLENBQUMsS0FBZTtRQUMvQixJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVcsSUFBSSxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDekQsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNoRSxDQUFDO0lBQ0gsQ0FBQztJQUVPLFVBQVUsQ0FBQyxHQUFxQjtRQUN0QyxJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUMxRCxPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLGNBQWMsR0FBRyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMxRSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDNUIsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDbkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QixDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksQ0FBQyxRQUFnQjtRQUNuQixJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUMxRCxPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEtBQUssQ0FBQyx1REFBdUQsQ0FBQyxDQUFDLENBQUM7UUFDOUYsQ0FBQztRQUVELE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLGNBQWMsR0FBRyxRQUFRLENBQUMsQ0FBQztRQUNuRSxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ1IsSUFBSSxDQUFDO2dCQUNILE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFxQixDQUFDO2dCQUNoRCxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNqQixDQUFDO1lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztnQkFDYixPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEtBQUssQ0FBQywyQkFBMkIsUUFBUSxzQkFBc0IsQ0FBQyxDQUFDLENBQUM7WUFDaEcsQ0FBQztRQUNILENBQUM7UUFFRCw4Q0FBOEM7UUFDOUMsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDekIsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDMUQsSUFBSSxFQUFFLEVBQUUsQ0FBQztnQkFDUCxNQUFNLEdBQUcsR0FBcUI7b0JBQzVCLEdBQUcsRUFBRSxDQUFDLFVBQVU7b0JBQ2hCLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRTtvQkFDVCxVQUFVLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxVQUFVLElBQUksRUFBRTtvQkFDMUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsTUFBTTtvQkFDNUIsV0FBVyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsV0FBVztvQkFDdEMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsVUFBVTtvQkFDcEMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSTtpQkFDekIsQ0FBQztnQkFDRixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNyQixPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNqQixDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLDhCQUE4QixRQUFRLDhCQUE4QixDQUFDLENBQUMsQ0FBQztJQUMzRyxDQUFDO0lBRUQsSUFBSSxDQUFDLE1BQXdCO1FBQzNCLElBQUksT0FBTyxNQUFNLEtBQUssV0FBVyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQzFELE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLHVEQUF1RCxDQUFDLENBQUMsQ0FBQztRQUM5RixDQUFDO1FBRUQsSUFBSSxDQUFDO1lBQ0gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN4QixPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNwQixDQUFDO1FBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNiLE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvRSxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUk7UUFDRixJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUMxRCxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNoQixDQUFDO1FBRUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzlCLE1BQU0sU0FBUyxHQUFvQixFQUFFLENBQUM7UUFFdEMsS0FBSyxNQUFNLEVBQUUsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUN2QixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDN0QsSUFBSSxHQUFHLEVBQUUsQ0FBQztnQkFDUixJQUFJLENBQUM7b0JBQ0gsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQXFCLENBQUM7b0JBQ2hELFNBQVMsQ0FBQyxJQUFJLENBQUM7d0JBQ2IsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFO3dCQUNWLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSTt3QkFDZCxXQUFXLEVBQUUsR0FBRyxDQUFDLFdBQVc7d0JBQzVCLFFBQVEsRUFBRSxHQUFHLENBQUMsUUFBUTt3QkFDdEIsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPO3dCQUNwQixXQUFXLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxXQUFXO3dCQUM5QixZQUFZLEVBQUUsR0FBRyxDQUFDLFNBQVMsSUFBSSxHQUFHLENBQUMsU0FBUzt3QkFDNUMsY0FBYyxFQUFFLEdBQUcsQ0FBQyxTQUFTO3FCQUM5QixDQUFDLENBQUM7Z0JBQ0wsQ0FBQztnQkFBQyxNQUFNLENBQUMsQ0FBQSxDQUFDO1lBQ1osQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQWdCO1FBQ3JCLElBQUksT0FBTyxNQUFNLEtBQUssV0FBVyxJQUFJLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN6RCxNQUFNLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDLENBQUM7WUFDMUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLFFBQVEsQ0FBQyxDQUFDO1lBQzlELElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsQ0FBQztRQUNELE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxPQUFPLENBQUMsUUFBZ0IsRUFBRSxPQUFlO1FBQ3ZDLE1BQU0sR0FBRyxHQUFHLE9BQU8sTUFBTSxLQUFLLFdBQVcsSUFBSSxNQUFNLENBQUMsWUFBWTtZQUM5RCxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsY0FBYyxHQUFHLFFBQVEsQ0FBQztZQUN4RCxDQUFDLENBQUMsSUFBSSxDQUFDO1FBRVQsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNSLElBQUksQ0FBQztnQkFDSCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBcUIsQ0FBQztnQkFDaEQsR0FBRyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7Z0JBQ3RCLEdBQUcsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO2dCQUN2QixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZCLENBQUM7WUFBQyxNQUFNLENBQUMsQ0FBQSxDQUFDO1FBQ1osQ0FBQztRQUNELE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7d0dBbEtVLG9DQUFvQzs0R0FBcEMsb0NBQW9DLGNBRm5DLE1BQU07OzRGQUVQLG9DQUFvQztrQkFIaEQsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBSZXBvcnRQZXJzaXN0ZW5jZUFkYXB0ZXIgfSBmcm9tICcuLi9jb250cmFjdHMvcmVwb3J0LXBlcnNpc3RlbmNlLmNvbnRyYWN0JztcbmltcG9ydCB7IFJlcG9ydERlZmluaXRpb24sIFJlcG9ydFN1bW1hcnkgfSBmcm9tICcuLi8uLi9jb3JlL21vZGVscy9yZXBvcnQtZGVmaW5pdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBSZXBvcnRUZW1wbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9mZWF0dXJlcy9kZXNpZ25lci9zZXJ2aWNlcy9yZXBvcnQtdGVtcGxhdGUuc2VydmljZSc7XG5cbmNvbnN0IFNUT1JBR0VfUFJFRklYID0gJ2J3YXlzX3JwdF9kZWZfJztcbmNvbnN0IElOREVYX0tFWSA9ICdid2F5c19ycHRfaW5kZXgnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTG9jYWxTdG9yYWdlUmVwb3J0UGVyc2lzdGVuY2VBZGFwdGVyIGV4dGVuZHMgUmVwb3J0UGVyc2lzdGVuY2VBZGFwdGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSB0ZW1wbGF0ZVNlcnZpY2UgPSBpbmplY3QoUmVwb3J0VGVtcGxhdGVTZXJ2aWNlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5zZWVkRGVmYXVsdEJsdWVwcmludHNJZkVtcHR5KCk7XG4gIH1cblxuICBwcml2YXRlIHNlZWREZWZhdWx0Qmx1ZXByaW50c0lmRW1wdHkoKTogdm9pZCB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnIHx8ICF3aW5kb3cubG9jYWxTdG9yYWdlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5nZXRJbmRleCgpO1xuICAgIGlmIChpbmRleC5sZW5ndGggPT09IDAgJiYgdGhpcy50ZW1wbGF0ZVNlcnZpY2UpIHtcbiAgICAgIGNvbnN0IGJsdWVwcmludHMgPSB0aGlzLnRlbXBsYXRlU2VydmljZS5nZXRUZW1wbGF0ZXMoKTtcbiAgICAgIGJsdWVwcmludHMuZm9yRWFjaCgoYnApID0+IHtcbiAgICAgICAgY29uc3QgZGVmOiBSZXBvcnREZWZpbml0aW9uID0ge1xuICAgICAgICAgIC4uLmJwLmRlZmluaXRpb24sXG4gICAgICAgICAgaWQ6IGJwLmlkLFxuICAgICAgICAgIHBhcmFtZXRlcnM6IGJwLmRlZmluaXRpb24ucGFyYW1ldGVycyB8fCBbXSxcbiAgICAgICAgICBsYXlvdXQ6IGJwLmRlZmluaXRpb24ubGF5b3V0LFxuICAgICAgICAgIGRhdGFTb3VyY2VzOiBicC5kZWZpbml0aW9uLmRhdGFTb3VyY2VzLFxuICAgICAgICAgIGNvbXBvbmVudHM6IGJwLmRlZmluaXRpb24uY29tcG9uZW50cyxcbiAgICAgICAgICBncmlkOiBicC5kZWZpbml0aW9uLmdyaWQsXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuc2F2ZURpcmVjdChkZWYpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRJbmRleCgpOiBzdHJpbmdbXSB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnIHx8ICF3aW5kb3cubG9jYWxTdG9yYWdlKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBjb25zdCByYXcgPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oSU5ERVhfS0VZKTtcbiAgICAgIHJldHVybiByYXcgPyBKU09OLnBhcnNlKHJhdykgOiBbXTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNhdmVJbmRleChpbmRleDogc3RyaW5nW10pOiB2b2lkIHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmxvY2FsU3RvcmFnZSkge1xuICAgICAgd2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKElOREVYX0tFWSwgSlNPTi5zdHJpbmdpZnkoaW5kZXgpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNhdmVEaXJlY3QoZGVmOiBSZXBvcnREZWZpbml0aW9uKTogdm9pZCB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnIHx8ICF3aW5kb3cubG9jYWxTdG9yYWdlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShTVE9SQUdFX1BSRUZJWCArIGRlZi5pZCwgSlNPTi5zdHJpbmdpZnkoZGVmKSk7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmdldEluZGV4KCk7XG4gICAgaWYgKCFpbmRleC5pbmNsdWRlcyhkZWYuaWQpKSB7XG4gICAgICBpbmRleC5wdXNoKGRlZi5pZCk7XG4gICAgICB0aGlzLnNhdmVJbmRleChpbmRleCk7XG4gICAgfVxuICB9XG5cbiAgbG9hZChyZXBvcnRJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxSZXBvcnREZWZpbml0aW9uPiB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnIHx8ICF3aW5kb3cubG9jYWxTdG9yYWdlKSB7XG4gICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoJ0xvY2FsU3RvcmFnZSBpcyBub3QgYXZhaWxhYmxlIGluIGN1cnJlbnQgZW52aXJvbm1lbnQuJykpO1xuICAgIH1cblxuICAgIGNvbnN0IHJhdyA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShTVE9SQUdFX1BSRUZJWCArIHJlcG9ydElkKTtcbiAgICBpZiAocmF3KSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBkZWYgPSBKU09OLnBhcnNlKHJhdykgYXMgUmVwb3J0RGVmaW5pdGlvbjtcbiAgICAgICAgcmV0dXJuIG9mKGRlZik7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKGBGYWlsZWQgdG8gcGFyc2UgcmVwb3J0IFwiJHtyZXBvcnRJZH1cIiBmcm9tIExvY2FsU3RvcmFnZS5gKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRmFsbGJhY2s6IGNoZWNrIHRlbXBsYXRlIHNlcnZpY2UgYmx1ZXByaW50c1xuICAgIGlmICh0aGlzLnRlbXBsYXRlU2VydmljZSkge1xuICAgICAgY29uc3QgYnAgPSB0aGlzLnRlbXBsYXRlU2VydmljZS5nZXRUZW1wbGF0ZUJ5SWQocmVwb3J0SWQpO1xuICAgICAgaWYgKGJwKSB7XG4gICAgICAgIGNvbnN0IGRlZjogUmVwb3J0RGVmaW5pdGlvbiA9IHtcbiAgICAgICAgICAuLi5icC5kZWZpbml0aW9uLFxuICAgICAgICAgIGlkOiBicC5pZCxcbiAgICAgICAgICBwYXJhbWV0ZXJzOiBicC5kZWZpbml0aW9uLnBhcmFtZXRlcnMgfHwgW10sXG4gICAgICAgICAgbGF5b3V0OiBicC5kZWZpbml0aW9uLmxheW91dCxcbiAgICAgICAgICBkYXRhU291cmNlczogYnAuZGVmaW5pdGlvbi5kYXRhU291cmNlcyxcbiAgICAgICAgICBjb21wb25lbnRzOiBicC5kZWZpbml0aW9uLmNvbXBvbmVudHMsXG4gICAgICAgICAgZ3JpZDogYnAuZGVmaW5pdGlvbi5ncmlkLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnNhdmVEaXJlY3QoZGVmKTtcbiAgICAgICAgcmV0dXJuIG9mKGRlZik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKGBSZXBvcnQgZGVmaW5pdGlvbiB3aXRoIElEIFwiJHtyZXBvcnRJZH1cIiBub3QgZm91bmQgaW4gTG9jYWxTdG9yYWdlLmApKTtcbiAgfVxuXG4gIHNhdmUocmVwb3J0OiBSZXBvcnREZWZpbml0aW9uKTogT2JzZXJ2YWJsZTxSZXBvcnREZWZpbml0aW9uPiB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnIHx8ICF3aW5kb3cubG9jYWxTdG9yYWdlKSB7XG4gICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoJ0xvY2FsU3RvcmFnZSBpcyBub3QgYXZhaWxhYmxlIGluIGN1cnJlbnQgZW52aXJvbm1lbnQuJykpO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICB0aGlzLnNhdmVEaXJlY3QocmVwb3J0KTtcbiAgICAgIHJldHVybiBvZihyZXBvcnQpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIgOiBuZXcgRXJyb3IoU3RyaW5nKGVycikpKTtcbiAgICB9XG4gIH1cblxuICBsaXN0KCk6IE9ic2VydmFibGU8UmVwb3J0U3VtbWFyeVtdPiB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnIHx8ICF3aW5kb3cubG9jYWxTdG9yYWdlKSB7XG4gICAgICByZXR1cm4gb2YoW10pO1xuICAgIH1cblxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5nZXRJbmRleCgpO1xuICAgIGNvbnN0IHN1bW1hcmllczogUmVwb3J0U3VtbWFyeVtdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IGlkIG9mIGluZGV4KSB7XG4gICAgICBjb25zdCByYXcgPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oU1RPUkFHRV9QUkVGSVggKyBpZCk7XG4gICAgICBpZiAocmF3KSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgZGVmID0gSlNPTi5wYXJzZShyYXcpIGFzIFJlcG9ydERlZmluaXRpb247XG4gICAgICAgICAgc3VtbWFyaWVzLnB1c2goe1xuICAgICAgICAgICAgaWQ6IGRlZi5pZCxcbiAgICAgICAgICAgIG5hbWU6IGRlZi5uYW1lLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IGRlZi5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGNhdGVnb3J5OiBkZWYuY2F0ZWdvcnksXG4gICAgICAgICAgICB2ZXJzaW9uOiBkZWYudmVyc2lvbixcbiAgICAgICAgICAgIGlzUHVibGlzaGVkOiAhIWRlZi5pc1B1Ymxpc2hlZCxcbiAgICAgICAgICAgIGxhc3RNb2RpZmllZDogZGVmLnVwZGF0ZWRBdCA/PyBkZWYuY3JlYXRlZEF0LFxuICAgICAgICAgICAgbGFzdE1vZGlmaWVkQnk6IGRlZi51cGRhdGVkQnksXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2gge31cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gb2Yoc3VtbWFyaWVzKTtcbiAgfVxuXG4gIGRlbGV0ZShyZXBvcnRJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5sb2NhbFN0b3JhZ2UpIHtcbiAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShTVE9SQUdFX1BSRUZJWCArIHJlcG9ydElkKTtcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5nZXRJbmRleCgpLmZpbHRlcigoaWQpID0+IGlkICE9PSByZXBvcnRJZCk7XG4gICAgICB0aGlzLnNhdmVJbmRleChpbmRleCk7XG4gICAgfVxuICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xuICB9XG5cbiAgcHVibGlzaChyZXBvcnRJZDogc3RyaW5nLCB2ZXJzaW9uOiBudW1iZXIpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBjb25zdCByYXcgPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cubG9jYWxTdG9yYWdlXG4gICAgICA/IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShTVE9SQUdFX1BSRUZJWCArIHJlcG9ydElkKVxuICAgICAgOiBudWxsO1xuXG4gICAgaWYgKHJhdykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZGVmID0gSlNPTi5wYXJzZShyYXcpIGFzIFJlcG9ydERlZmluaXRpb247XG4gICAgICAgIGRlZi52ZXJzaW9uID0gdmVyc2lvbjtcbiAgICAgICAgZGVmLmlzUHVibGlzaGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zYXZlRGlyZWN0KGRlZik7XG4gICAgICB9IGNhdGNoIHt9XG4gICAgfVxuICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xuICB9XG59XG4iXX0=
|
|
139
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtc3RvcmFnZS1wZXJzaXN0ZW5jZS5hZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYndheXMtcmVwb3J0L3NyYy9saWIvZGF0YS1hY2Nlc3MvYWRhcHRlcnMvbG9jYWwtc3RvcmFnZS1wZXJzaXN0ZW5jZS5hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBYyxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRXBGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDOztBQUVsRixNQUFNLGNBQWMsR0FBRyxnQkFBZ0IsQ0FBQztBQUN4QyxNQUFNLFNBQVMsR0FBRyxpQkFBaUIsQ0FBQztBQUtwQyxNQUFNLE9BQU8sb0NBQXFDLFNBQVEsd0JBQXdCO0lBQy9ELGVBQWUsR0FBRyxNQUFNLENBQUMscUJBQXFCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNwRSxPQUFPLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFFeEQ7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFTyw0QkFBNEI7UUFDbEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzlCLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQy9DLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxlQUFl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VSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZCLENBQUM7WUFBQyxNQUFNLENBQUMsQ0FBQSxDQUFDO1FBQ1osQ0FBQztRQUNELE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7d0dBbElVLG9DQUFvQzs0R0FBcEMsb0NBQW9DLGNBRm5DLE1BQU07OzRGQUVQLG9DQUFvQztrQkFIaEQsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBSZXBvcnRQZXJzaXN0ZW5jZUFkYXB0ZXIgfSBmcm9tICcuLi9jb250cmFjdHMvcmVwb3J0LXBlcnNpc3RlbmNlLmNvbnRyYWN0JztcbmltcG9ydCB7IFJlcG9ydERlZmluaXRpb24sIFJlcG9ydFN1bW1hcnkgfSBmcm9tICcuLi8uLi9jb3JlL21vZGVscy9yZXBvcnQtZGVmaW5pdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBSZXBvcnRUZW1wbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9mZWF0dXJlcy9kZXNpZ25lci9zZXJ2aWNlcy9yZXBvcnQtdGVtcGxhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBSZXBvcnRTdG9yYWdlU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZXMvcmVwb3J0LXN0b3JhZ2Uuc2VydmljZSc7XG5cbmNvbnN0IFNUT1JBR0VfUFJFRklYID0gJ2J3YXlzX3JwdF9kZWZfJztcbmNvbnN0IElOREVYX0tFWSA9ICdid2F5c19ycHRfaW5kZXgnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTG9jYWxTdG9yYWdlUmVwb3J0UGVyc2lzdGVuY2VBZGFwdGVyIGV4dGVuZHMgUmVwb3J0UGVyc2lzdGVuY2VBZGFwdGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSB0ZW1wbGF0ZVNlcnZpY2UgPSBpbmplY3QoUmVwb3J0VGVtcGxhdGVTZXJ2aWNlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBwcml2YXRlIHJlYWRvbmx5IHN0b3JhZ2UgPSBpbmplY3QoUmVwb3J0U3RvcmFnZVNlcnZpY2UpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5zZWVkRGVmYXVsdEJsdWVwcmludHNJZkVtcHR5KCk7XG4gIH1cblxuICBwcml2YXRlIHNlZWREZWZhdWx0Qmx1ZXByaW50c0lmRW1wdHkoKTogdm9pZCB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmdldEluZGV4KCk7XG4gICAgaWYgKGluZGV4Lmxlbmd0aCA9PT0gMCAmJiB0aGlzLnRlbXBsYXRlU2VydmljZSkge1xuICAgICAgY29uc3QgYmx1ZXByaW50cyA9IHRoaXMudGVtcGxhdGVTZXJ2aWNlLmdldFRlbXBsYXRlcygpO1xuICAgICAgYmx1ZXByaW50cy5mb3JFYWNoKChicCkgPT4ge1xuICAgICAgICBjb25zdCBkZWY6IFJlcG9ydERlZmluaXRpb24gPSB7XG4gICAgICAgICAgLi4uYnAuZGVmaW5pdGlvbixcbiAgICAgICAgICBpZDogYnAuaWQsXG4gICAgICAgICAgcGFyYW1ldGVyczogYnAuZGVmaW5pdGlvbi5wYXJhbWV0ZXJzIHx8IFtdLFxuICAgICAgICAgIGxheW91dDogYnAuZGVmaW5pdGlvbi5sYXlvdXQsXG4gICAgICAgICAgZGF0YVNvdXJjZXM6IGJwLmRlZmluaXRpb24uZGF0YVNvdXJjZXMsXG4gICAgICAgICAgY29tcG9uZW50czogYnAuZGVmaW5pdGlvbi5jb21wb25lbnRzLFxuICAgICAgICAgIGdyaWQ6IGJwLmRlZmluaXRpb24uZ3JpZCxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5zYXZlRGlyZWN0KGRlZik7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldEluZGV4KCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5zdG9yYWdlLmdldEpTT048c3RyaW5nW10+KElOREVYX0tFWSwgW10pO1xuICB9XG5cbiAgcHJpdmF0ZSBzYXZlSW5kZXgoaW5kZXg6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgdGhpcy5zdG9yYWdlLnNldEpTT04oSU5ERVhfS0VZLCBpbmRleCk7XG4gIH1cblxuICBwcml2YXRlIHNhdmVEaXJlY3QoZGVmOiBSZXBvcnREZWZpbml0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5zdG9yYWdlLnNldEpTT04oU1RPUkFHRV9QUkVGSVggKyBkZWYuaWQsIGRlZik7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmdldEluZGV4KCk7XG4gICAgaWYgKCFpbmRleC5pbmNsdWRlcyhkZWYuaWQpKSB7XG4gICAgICBpbmRleC5wdXNoKGRlZi5pZCk7XG4gICAgICB0aGlzLnNhdmVJbmRleChpbmRleCk7XG4gICAgfVxuICB9XG5cbiAgbG9hZChyZXBvcnRJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxSZXBvcnREZWZpbml0aW9uPiB7XG4gICAgY29uc3QgcmF3ID0gdGhpcy5zdG9yYWdlLmdldEl0ZW0oU1RPUkFHRV9QUkVGSVggKyByZXBvcnRJZCk7XG4gICAgaWYgKHJhdykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZGVmID0gSlNPTi5wYXJzZShyYXcpIGFzIFJlcG9ydERlZmluaXRpb247XG4gICAgICAgIHJldHVybiBvZihkZWYpO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcihgRmFpbGVkIHRvIHBhcnNlIHJlcG9ydCBcIiR7cmVwb3J0SWR9XCIgZnJvbSBzdG9yYWdlLmApKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGYWxsYmFjazogY2hlY2sgdGVtcGxhdGUgc2VydmljZSBibHVlcHJpbnRzXG4gICAgaWYgKHRoaXMudGVtcGxhdGVTZXJ2aWNlKSB7XG4gICAgICBjb25zdCBicCA9IHRoaXMudGVtcGxhdGVTZXJ2aWNlLmdldFRlbXBsYXRlQnlJZChyZXBvcnRJZCk7XG4gICAgICBpZiAoYnApIHtcbiAgICAgICAgY29uc3QgZGVmOiBSZXBvcnREZWZpbml0aW9uID0ge1xuICAgICAgICAgIC4uLmJwLmRlZmluaXRpb24sXG4gICAgICAgICAgaWQ6IGJwLmlkLFxuICAgICAgICAgIHBhcmFtZXRlcnM6IGJwLmRlZmluaXRpb24ucGFyYW1ldGVycyB8fCBbXSxcbiAgICAgICAgICBsYXlvdXQ6IGJwLmRlZmluaXRpb24ubGF5b3V0LFxuICAgICAgICAgIGRhdGFTb3VyY2VzOiBicC5kZWZpbml0aW9uLmRhdGFTb3VyY2VzLFxuICAgICAgICAgIGNvbXBvbmVudHM6IGJwLmRlZmluaXRpb24uY29tcG9uZW50cyxcbiAgICAgICAgICBncmlkOiBicC5kZWZpbml0aW9uLmdyaWQsXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuc2F2ZURpcmVjdChkZWYpO1xuICAgICAgICByZXR1cm4gb2YoZGVmKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoYFJlcG9ydCBkZWZpbml0aW9uIHdpdGggSUQgXCIke3JlcG9ydElkfVwiIG5vdCBmb3VuZCBpbiBzdG9yYWdlLmApKTtcbiAgfVxuXG4gIHNhdmUocmVwb3J0OiBSZXBvcnREZWZpbml0aW9uKTogT2JzZXJ2YWJsZTxSZXBvcnREZWZpbml0aW9uPiB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuc2F2ZURpcmVjdChyZXBvcnQpO1xuICAgICAgcmV0dXJuIG9mKHJlcG9ydCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiAoZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIgOiBuZXcgRXJyb3IoU3RyaW5nKGVycikpKSk7XG4gICAgfVxuICB9XG5cbiAgbGlzdCgpOiBPYnNlcnZhYmxlPFJlcG9ydFN1bW1hcnlbXT4ge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5nZXRJbmRleCgpO1xuICAgIGNvbnN0IHN1bW1hcmllczogUmVwb3J0U3VtbWFyeVtdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IGlkIG9mIGluZGV4KSB7XG4gICAgICBjb25zdCByYXcgPSB0aGlzLnN0b3JhZ2UuZ2V0SXRlbShTVE9SQUdFX1BSRUZJWCArIGlkKTtcbiAgICAgIGlmIChyYXcpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBkZWYgPSBKU09OLnBhcnNlKHJhdykgYXMgUmVwb3J0RGVmaW5pdGlvbjtcbiAgICAgICAgICBzdW1tYXJpZXMucHVzaCh7XG4gICAgICAgICAgICBpZDogZGVmLmlkLFxuICAgICAgICAgICAgbmFtZTogZGVmLm5hbWUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogZGVmLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgY2F0ZWdvcnk6IGRlZi5jYXRlZ29yeSxcbiAgICAgICAgICAgIHZlcnNpb246IGRlZi52ZXJzaW9uLFxuICAgICAgICAgICAgaXNQdWJsaXNoZWQ6ICEhZGVmLmlzUHVibGlzaGVkLFxuICAgICAgICAgICAgbGFzdE1vZGlmaWVkOiBkZWYudXBkYXRlZEF0ID8/IGRlZi5jcmVhdGVkQXQsXG4gICAgICAgICAgICBsYXN0TW9kaWZpZWRCeTogZGVmLnVwZGF0ZWRCeSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBjYXRjaCB7fVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBvZihzdW1tYXJpZXMpO1xuICB9XG5cbiAgZGVsZXRlKHJlcG9ydElkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICB0aGlzLnN0b3JhZ2UucmVtb3ZlSXRlbShTVE9SQUdFX1BSRUZJWCArIHJlcG9ydElkKTtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZ2V0SW5kZXgoKS5maWx0ZXIoKGlkKSA9PiBpZCAhPT0gcmVwb3J0SWQpO1xuICAgIHRoaXMuc2F2ZUluZGV4KGluZGV4KTtcbiAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcbiAgfVxuXG4gIHB1Ymxpc2gocmVwb3J0SWQ6IHN0cmluZywgdmVyc2lvbjogbnVtYmVyKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc3QgcmF3ID0gdGhpcy5zdG9yYWdlLmdldEl0ZW0oU1RPUkFHRV9QUkVGSVggKyByZXBvcnRJZCk7XG4gICAgaWYgKHJhdykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZGVmID0gSlNPTi5wYXJzZShyYXcpIGFzIFJlcG9ydERlZmluaXRpb247XG4gICAgICAgIGRlZi52ZXJzaW9uID0gdmVyc2lvbjtcbiAgICAgICAgZGVmLmlzUHVibGlzaGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zYXZlRGlyZWN0KGRlZik7XG4gICAgICB9IGNhdGNoIHt9XG4gICAgfVxuICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xuICB9XG59XG4iXX0=
|