@hestia-earth/ui-components 0.0.4 → 0.0.5
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/bundles/hestia-earth-ui-components.umd.js +392 -506
- package/bundles/hestia-earth-ui-components.umd.js.map +1 -1
- package/common/common.service.d.ts +1 -2
- package/common/public-api.d.ts +1 -0
- package/common/toast/toast.component.d.ts +2 -2
- package/common/toast.service.d.ts +3 -3
- package/common/utils.d.ts +3 -11
- package/cycles/public-api.d.ts +1 -0
- package/engine/aggregation-engine.service.d.ts +8 -20
- package/engine/engine.service.d.ts +2 -6
- package/esm2015/common/common.service.js +1 -7
- package/esm2015/common/public-api.js +2 -1
- package/esm2015/common/toast/toast.component.js +3 -3
- package/esm2015/common/toast.service.js +5 -5
- package/esm2015/common/utils.js +3 -61
- package/esm2015/cycles/public-api.js +2 -1
- package/esm2015/engine/aggregation-engine.service.js +11 -47
- package/esm2015/engine/engine.service.js +9 -15
- package/esm2015/impact-assessments/impact-assessments-products/impact-assessments-products.component.js +3 -3
- package/esm2015/mendeley/mendeley.service.js +1 -1
- package/esm2015/node/node-csv.service.js +1 -1
- package/esm2015/node/node.service.js +26 -16
- package/esm2015/schema/schema.service.js +1 -1
- package/esm2015/search/search.service.js +1 -1
- package/fesm2015/hestia-earth-ui-components.js +281 -372
- package/fesm2015/hestia-earth-ui-components.js.map +1 -1
- package/impact-assessments/impact-assessments-products/impact-assessments-products.component.d.ts +2 -2
- package/mendeley/mendeley.service.d.ts +2 -2
- package/node/node-csv.service.d.ts +1 -1
- package/node/node.service.d.ts +16 -7
- package/package.json +1 -1
- package/schema/schema.service.d.ts +1 -1
- package/search/search.service.d.ts +2 -2
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export * from './cycles.model';
|
|
1
2
|
export * from './cycles.module';
|
|
2
3
|
export { CyclesActivityComponent } from './cycles-activity/cycles-activity.component';
|
|
3
4
|
export { CyclesActivityLogsComponent } from './cycles-activity-logs/cycles-activity-logs.component';
|
|
@@ -8,4 +9,4 @@ export { CyclesEmissionsComponent } from './cycles-emissions/cycles-emissions.co
|
|
|
8
9
|
export { CyclesFunctionalUnitMeasureComponent } from './cycles-functional-unit-measure/cycles-functional-unit-measure.component';
|
|
9
10
|
export { CyclesResultComponent } from './cycles-result/cycles-result.component';
|
|
10
11
|
export { CyclesSuggestFormComponent } from './cycles-suggest-form/cycles-suggest-form.component';
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jeWNsZXMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsaUJBQWlCLENBQUM7QUFFaEMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDdEYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDcEcsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDbEcsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDMUcsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDdkcsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDekYsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sMkVBQTJFLENBQUM7QUFDakksT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDaEYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0scURBQXFELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2N5Y2xlcy5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2N5Y2xlcy5tb2R1bGUnO1xuXG5leHBvcnQgeyBDeWNsZXNBY3Rpdml0eUNvbXBvbmVudCB9IGZyb20gJy4vY3ljbGVzLWFjdGl2aXR5L2N5Y2xlcy1hY3Rpdml0eS5jb21wb25lbnQnO1xuZXhwb3J0IHsgQ3ljbGVzQWN0aXZpdHlMb2dzQ29tcG9uZW50IH0gZnJvbSAnLi9jeWNsZXMtYWN0aXZpdHktbG9ncy9jeWNsZXMtYWN0aXZpdHktbG9ncy5jb21wb25lbnQnO1xuZXhwb3J0IHsgQ3ljbGVzQ29tcGxldGVuZXNzQ29tcG9uZW50IH0gZnJvbSAnLi9jeWNsZXMtY29tcGxldGVuZXNzL2N5Y2xlcy1jb21wbGV0ZW5lc3MuY29tcG9uZW50JztcbmV4cG9ydCB7IEN5Y2xlc0VtaXNzaW9uc0NoYXJ0Q29tcG9uZW50IH0gZnJvbSAnLi9jeWNsZXMtZW1pc3Npb25zLWNoYXJ0L2N5Y2xlcy1lbWlzc2lvbnMtY2hhcnQuY29tcG9uZW50JztcbmV4cG9ydCB7IEN5Y2xlc0VtaXNzaW9uc0xvZ3NDb21wb25lbnQgfSBmcm9tICcuL2N5Y2xlcy1lbWlzc2lvbnMtbG9ncy9jeWNsZXMtZW1pc3Npb25zLWxvZ3MuY29tcG9uZW50JztcbmV4cG9ydCB7IEN5Y2xlc0VtaXNzaW9uc0NvbXBvbmVudCB9IGZyb20gJy4vY3ljbGVzLWVtaXNzaW9ucy9jeWNsZXMtZW1pc3Npb25zLmNvbXBvbmVudCc7XG5leHBvcnQgeyBDeWNsZXNGdW5jdGlvbmFsVW5pdE1lYXN1cmVDb21wb25lbnQgfSBmcm9tICcuL2N5Y2xlcy1mdW5jdGlvbmFsLXVuaXQtbWVhc3VyZS9jeWNsZXMtZnVuY3Rpb25hbC11bml0LW1lYXN1cmUuY29tcG9uZW50JztcbmV4cG9ydCB7IEN5Y2xlc1Jlc3VsdENvbXBvbmVudCB9IGZyb20gJy4vY3ljbGVzLXJlc3VsdC9jeWNsZXMtcmVzdWx0LmNvbXBvbmVudCc7XG5leHBvcnQgeyBDeWNsZXNTdWdnZXN0Rm9ybUNvbXBvbmVudCB9IGZyb20gJy4vY3ljbGVzLXN1Z2dlc3QtZm9ybS9jeWNsZXMtc3VnZ2VzdC1mb3JtLmNvbXBvbmVudCc7XG4iXX0=
|
|
@@ -4,49 +4,19 @@ import { forkJoin, from, of, ReplaySubject } from 'rxjs';
|
|
|
4
4
|
import { catchError, map, take } from 'rxjs/operators';
|
|
5
5
|
import { TermTermType } from '@hestia-earth/schema';
|
|
6
6
|
import * as csvtojson from 'csvtojson';
|
|
7
|
-
import {
|
|
8
|
-
import { primaryProduct } from '../cycles/cycles.model';
|
|
9
|
-
import { propertyValue, delta, gitHome, gitRawBaseUrl } from '../common/utils';
|
|
7
|
+
import { gitBranch, gitHome, gitRawBaseUrl } from '../common/utils';
|
|
10
8
|
import * as i0 from "@angular/core";
|
|
11
9
|
import * as i1 from "@angular/common/http";
|
|
12
|
-
import * as i2 from "../
|
|
13
|
-
|
|
14
|
-
const
|
|
15
|
-
const lookups = Object.freeze({
|
|
10
|
+
import * as i2 from "../node/node.service";
|
|
11
|
+
const gitUrl = () => `${gitHome}/hestia-aggregation-engine/-/blob/${gitBranch()}`;
|
|
12
|
+
const rawUrl = () => `${gitRawBaseUrl}/hestia-aggregation-engine/-/raw/${gitBranch()}`;
|
|
13
|
+
export const lookups = Object.freeze({
|
|
16
14
|
cropYield: 'region-crop-cropGroupingFaostatProduction-yield',
|
|
17
15
|
cropGroupingColumn: 'cropGroupingFaostatProduction'
|
|
18
16
|
});
|
|
19
|
-
const extractGroupedDataClosesDate = (data, year) => {
|
|
20
|
-
const dataByDate = (data || '').split(';').reduce((prev, curr) => (Object.assign(Object.assign({}, prev), (curr.length > 0 && curr.split(':')[1] !== '-' ? { [curr.split(':')[0]]: curr.split(':')[1] } : {}))), {});
|
|
21
|
-
const years = Object.keys(dataByDate).map(v => +v);
|
|
22
|
-
const closestYear = years.reduce((prev, curr) => Math.abs(curr - year) < Math.abs(prev - year) ? curr : prev, 0);
|
|
23
|
-
return closestYear ? +dataByDate[closestYear] / 10 : null;
|
|
24
|
-
};
|
|
25
|
-
const cropGrouping = (lookup, product) => (lookup.find(({ term }) => term.id === (product === null || product === void 0 ? void 0 : product.term['@id'])) || {})[lookups.cropGroupingColumn];
|
|
26
|
-
const cropYieldCountry = (cropYield, cycle) => cropYield.find(({ term }) => term.id === get(cycle, 'site.country.@id', worldRegion['@id'])) || {};
|
|
27
|
-
export const extendCycle = ({ crop, cropYield }) => (cycle) => {
|
|
28
|
-
var _a, _b, _c;
|
|
29
|
-
const product = primaryProduct(cycle);
|
|
30
|
-
const grouping = cropGrouping(crop, product);
|
|
31
|
-
const countryData = cropYieldCountry(cropYield, cycle)[grouping];
|
|
32
|
-
const countryValue = extractGroupedDataClosesDate(countryData, +(cycle.endDate || ''));
|
|
33
|
-
const productValue = propertyValue(product === null || product === void 0 ? void 0 : product.value);
|
|
34
|
-
return {
|
|
35
|
-
cycle,
|
|
36
|
-
name: (_a = product === null || product === void 0 ? void 0 : product.term) === null || _a === void 0 ? void 0 : _a.name,
|
|
37
|
-
startDate: cycle.startDate,
|
|
38
|
-
endDate: cycle.endDate,
|
|
39
|
-
country: ((_c = (_b = cycle.site) === null || _b === void 0 ? void 0 : _b.country) === null || _c === void 0 ? void 0 : _c.name) || worldRegion.name,
|
|
40
|
-
observations: propertyValue(product === null || product === void 0 ? void 0 : product.observations) || 0,
|
|
41
|
-
yield: productValue,
|
|
42
|
-
faoYield: countryValue || undefined,
|
|
43
|
-
diff: delta(productValue, countryValue)
|
|
44
|
-
};
|
|
45
|
-
};
|
|
46
17
|
export class HeAggregationEngineService {
|
|
47
|
-
constructor(http,
|
|
18
|
+
constructor(http, nodeService) {
|
|
48
19
|
this.http = http;
|
|
49
|
-
this.commonService = commonService;
|
|
50
20
|
this.nodeService = nodeService;
|
|
51
21
|
this.modelsLoading = false;
|
|
52
22
|
this.modelsLoaded = false;
|
|
@@ -61,18 +31,12 @@ export class HeAggregationEngineService {
|
|
|
61
31
|
yield this.loadModels().toPromise();
|
|
62
32
|
});
|
|
63
33
|
}
|
|
64
|
-
get gitUrl() {
|
|
65
|
-
return `${gitHome}/hestia-aggregation-engine/-/blob/${this.commonService.gitBranch}`;
|
|
66
|
-
}
|
|
67
|
-
get rawUrl() {
|
|
68
|
-
return `${gitRawBaseUrl}/hestia-aggregation-engine/-/raw/${this.commonService.gitBranch}`;
|
|
69
|
-
}
|
|
70
34
|
loadModels() {
|
|
71
35
|
this.modelsLoading = true;
|
|
72
|
-
return this.http.get(`${
|
|
36
|
+
return this.http.get(`${rawUrl()}/model-links.json`).pipe(catchError(() => of({ links: [] })), map(({ links }) => {
|
|
73
37
|
this._models.next(links.map((_a) => {
|
|
74
38
|
var { path: modelPath, docPath } = _a, link = __rest(_a, ["path", "docPath"]);
|
|
75
|
-
return (Object.assign(Object.assign({}, link), { path: `${
|
|
39
|
+
return (Object.assign(Object.assign({}, link), { path: `${gitUrl()}/${modelPath}`, docPath: `${gitUrl()}/${docPath}` }));
|
|
76
40
|
}));
|
|
77
41
|
this.modelsLoading = false;
|
|
78
42
|
this.modelsLoaded = true;
|
|
@@ -115,12 +79,12 @@ export class HeAggregationEngineService {
|
|
|
115
79
|
return this.lookups$.pipe(take(1)).toPromise();
|
|
116
80
|
}
|
|
117
81
|
}
|
|
118
|
-
HeAggregationEngineService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HeAggregationEngineService, deps: [{ token: i1.HttpClient }, { token: i2.
|
|
82
|
+
HeAggregationEngineService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HeAggregationEngineService, deps: [{ token: i1.HttpClient }, { token: i2.HeNodeService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
119
83
|
HeAggregationEngineService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HeAggregationEngineService, providedIn: 'root' });
|
|
120
84
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HeAggregationEngineService, decorators: [{
|
|
121
85
|
type: Injectable,
|
|
122
86
|
args: [{
|
|
123
87
|
providedIn: 'root'
|
|
124
88
|
}]
|
|
125
|
-
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.
|
|
126
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdncmVnYXRpb24tZW5naW5lLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZW5naW5lL2FnZ3JlZ2F0aW9uLWVuZ2luZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkQsT0FBTyxFQUF5QyxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRixPQUFPLEtBQUssU0FBUyxNQUFNLFdBQVcsQ0FBQztBQUl2QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7QUFML0UsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBUWxDLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDNUIsU0FBUyxFQUFFLGlEQUFpRDtJQUM1RCxrQkFBa0IsRUFBRSwrQkFBK0I7Q0FDcEQsQ0FBQyxDQUFDO0FBeUJILE1BQU0sNEJBQTRCLEdBQUcsQ0FBQyxJQUFZLEVBQUUsSUFBWSxFQUFFLEVBQUU7SUFDbEUsTUFBTSxVQUFVLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLGlDQUM3RCxJQUFJLEdBQ0osQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUNwRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1IsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25ELE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakgsT0FBTyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQzVELENBQUMsQ0FBQztBQUVGLE1BQU0sWUFBWSxHQUFHLENBQUMsTUFBYSxFQUFFLE9BQWdCLEVBQUUsRUFBRSxDQUN2RCxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFLLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxJQUFJLENBQUUsS0FBSyxDQUFDLENBQUEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBY25HLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxTQUFnQixFQUFFLEtBQW1CLEVBQUUsRUFBRSxDQUNqRSxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxHQUFHLENBQUMsS0FBSyxFQUFFLGtCQUFrQixFQUFFLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0FBRXJHLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQW1CLEVBQVUsRUFBRTs7SUFDNUYsTUFBTSxPQUFPLEdBQUcsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLE1BQU0sUUFBUSxHQUFHLFlBQVksQ0FBQyxJQUFJLEVBQUUsT0FBUSxDQUFDLENBQUM7SUFDOUMsTUFBTSxXQUFXLEdBQUcsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2pFLE1BQU0sWUFBWSxHQUFHLDRCQUE0QixDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3ZGLE1BQU0sWUFBWSxHQUFHLGFBQWEsQ0FBQyxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsS0FBTSxDQUFDLENBQUM7SUFFcEQsT0FBTztRQUNMLEtBQUs7UUFDTCxJQUFJLEVBQUUsTUFBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsSUFBSSwwQ0FBRSxJQUFJO1FBQ3pCLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztRQUMxQixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87UUFDdEIsT0FBTyxFQUFFLENBQUEsTUFBQSxNQUFBLEtBQUssQ0FBQyxJQUFJLDBDQUFFLE9BQU8sMENBQUUsSUFBSSxLQUFJLFdBQVcsQ0FBQyxJQUFJO1FBQ3RELFlBQVksRUFBRSxhQUFhLENBQUMsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLFlBQWEsQ0FBQyxJQUFJLENBQUM7UUFDeEQsS0FBSyxFQUFFLFlBQVk7UUFDbkIsUUFBUSxFQUFFLFlBQVksSUFBSSxTQUFTO1FBQ25DLElBQUksRUFBRSxLQUFLLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQztLQUN4QyxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBV0YsTUFBTSxPQUFPLDBCQUEwQjtJQVNyQyxZQUNVLElBQWdCLEVBQ2hCLGFBQThCLEVBQzlCLFdBQTBCO1FBRjFCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsa0JBQWEsR0FBYixhQUFhLENBQWlCO1FBQzlCLGdCQUFXLEdBQVgsV0FBVyxDQUFlO1FBWDVCLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLFlBQU8sR0FBRyxJQUFJLGFBQWEsQ0FBVyxDQUFDLENBQUMsQ0FBQztRQUV6QyxtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUN2QixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0QixhQUFRLEdBQUcsSUFBSSxhQUFhLENBQVcsQ0FBQyxDQUFDLENBQUM7UUFPaEQsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVhLElBQUk7O1lBQ2hCLE1BQU0sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3RDLENBQUM7S0FBQTtJQUVELElBQVksTUFBTTtRQUNoQixPQUFPLEdBQUcsT0FBTyxxQ0FBcUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUN2RixDQUFDO0lBRUQsSUFBWSxNQUFNO1FBQ2hCLE9BQU8sR0FBRyxhQUFhLG9DQUFvQyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzVGLENBQUM7SUFFTyxVQUFVO1FBQ2hCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQzFCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQWMsR0FBRyxJQUFJLENBQUMsTUFBTSxtQkFBbUIsQ0FBQyxDQUFDLElBQUksQ0FDdkUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQWlCLENBQUMsQ0FBQyxFQUNsRCxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDaEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQXFDLEVBQUUsRUFBRTtvQkFBekMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE9BQU8sT0FBVyxFQUFOLElBQUksY0FBbkMsbUJBQXFDLENBQUY7Z0JBQU8sT0FBQSxpQ0FDbEUsSUFBSSxLQUNQLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLElBQUksU0FBUyxFQUFFLEVBQ25DLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLElBQUksT0FBTyxFQUFFLElBQ3BDLENBQUE7YUFBQSxDQUFDLENBQUMsQ0FBQztZQUNMLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1lBQzNCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1lBQ3pCLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNuRyxDQUFDO0lBRU0sTUFBTTtRQUNYLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDaEQsQ0FBQztJQUVNLE1BQU0sQ0FBQyxLQUFzQjtRQUNsQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUN0QixHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUN4RixDQUFDO0lBQ0osQ0FBQztJQUVNLEtBQUssQ0FBQyxLQUFzQjtRQUNqQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3RELENBQUM7SUFFYSxVQUFVLENBQUMsUUFBZ0I7O1lBQ3ZDLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDN0QsT0FBTyxTQUFTLENBQUMsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSyxDQUFDLENBQUM7UUFDNUQsQ0FBQztLQUFBO0lBRU8sV0FBVztRQUNqQixPQUFPLFFBQVEsQ0FBQztZQUNkLFNBQVMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDbkQsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMvQyxDQUFDLENBQUMsSUFBSSxDQUNMLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNYLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzNCLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1lBQzVCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1lBQzFCLE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdkcsQ0FBQztJQUVNLE9BQU87UUFDWixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ2pELENBQUM7O3dIQXpGVSwwQkFBMEI7NEhBQTFCLDBCQUEwQixjQUZ6QixNQUFNOzRGQUVQLDBCQUEwQjtrQkFIdEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgZm9ya0pvaW4sIGZyb20sIG9mLCBSZXBsYXlTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBJQ3ljbGVKU09OTEQsIE5vZGVUeXBlLCBQcm9kdWN0LCBUZXJtLCBUZXJtVGVybVR5cGUgfSBmcm9tICdAaGVzdGlhLWVhcnRoL3NjaGVtYSc7XG5pbXBvcnQgKiBhcyBjc3Z0b2pzb24gZnJvbSAnY3N2dG9qc29uJztcbmNvbnN0IGdldCA9IHJlcXVpcmUoJ2xvZGFzaC5nZXQnKTtcblxuaW1wb3J0IHsgSGVOb2RlU2VydmljZSB9IGZyb20gJy4uL25vZGUvbm9kZS5zZXJ2aWNlJztcbmltcG9ydCB7IHdvcmxkUmVnaW9uIH0gZnJvbSAnLi4vc2VhcmNoL3NlYXJjaC5tb2RlbCc7XG5pbXBvcnQgeyBwcmltYXJ5UHJvZHVjdCB9IGZyb20gJy4uL2N5Y2xlcy9jeWNsZXMubW9kZWwnO1xuaW1wb3J0IHsgcHJvcGVydHlWYWx1ZSwgZGVsdGEsIGdpdEhvbWUsIGdpdFJhd0Jhc2VVcmwgfSBmcm9tICcuLi9jb21tb24vdXRpbHMnO1xuaW1wb3J0IHsgSGVDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL2NvbW1vbi5zZXJ2aWNlJztcblxuY29uc3QgbG9va3VwcyA9IE9iamVjdC5mcmVlemUoe1xuICBjcm9wWWllbGQ6ICdyZWdpb24tY3JvcC1jcm9wR3JvdXBpbmdGYW9zdGF0UHJvZHVjdGlvbi15aWVsZCcsXG4gIGNyb3BHcm91cGluZ0NvbHVtbjogJ2Nyb3BHcm91cGluZ0Zhb3N0YXRQcm9kdWN0aW9uJ1xufSk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU1vZGVsIHtcbiAgdHlwZTogTm9kZVR5cGU7XG4gIC8qKlxuICAgKiBQYXRoIHRvIHRoZSBpbXBsZW1lbnRhdGlvbiAoY29kZSkgb2YgdGhlIG1vZGVsLlxuICAgKi9cbiAgcGF0aDogc3RyaW5nO1xuICAvKipcbiAgICogUGF0aCB0byB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGUgbW9kZWwuXG4gICAqL1xuICBkb2NQYXRoOiBzdHJpbmc7XG4gIGRhdGFQYXRoOiBzdHJpbmc7XG4gICdAaWQnPzogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgSU1vZGVsTGlua3Mge1xuICBsaW5rczogSU1vZGVsW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxvb2t1cHMge1xuICBjcm9wOiBhbnlbXTtcbiAgY3JvcFlpZWxkOiBhbnlbXTtcbn1cblxuY29uc3QgZXh0cmFjdEdyb3VwZWREYXRhQ2xvc2VzRGF0ZSA9IChkYXRhOiBzdHJpbmcsIHllYXI6IG51bWJlcikgPT4ge1xuICBjb25zdCBkYXRhQnlEYXRlID0gKGRhdGEgfHwgJycpLnNwbGl0KCc7JykucmVkdWNlKChwcmV2LCBjdXJyKSA9PiAoe1xuICAgIC4uLnByZXYsXG4gICAgLi4uKGN1cnIubGVuZ3RoID4gMCAmJiBjdXJyLnNwbGl0KCc6JylbMV0gIT09ICctJyA/IHtbY3Vyci5zcGxpdCgnOicpWzBdXTogY3Vyci5zcGxpdCgnOicpWzFdfSA6IHt9KVxuICB9KSwge30pO1xuICBjb25zdCB5ZWFycyA9IE9iamVjdC5rZXlzKGRhdGFCeURhdGUpLm1hcCh2ID0+ICt2KTtcbiAgY29uc3QgY2xvc2VzdFllYXIgPSB5ZWFycy5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IE1hdGguYWJzKGN1cnIgLSB5ZWFyKSA8IE1hdGguYWJzKHByZXYgLSB5ZWFyKSA/IGN1cnIgOiBwcmV2LCAwKTtcbiAgcmV0dXJuIGNsb3Nlc3RZZWFyID8gK2RhdGFCeURhdGVbY2xvc2VzdFllYXJdIC8gMTAgOiBudWxsO1xufTtcblxuY29uc3QgY3JvcEdyb3VwaW5nID0gKGxvb2t1cDogYW55W10sIHByb2R1Y3Q6IFByb2R1Y3QpID0+XG4gIChsb29rdXAuZmluZCgoeyB0ZXJtIH0pID0+IHRlcm0uaWQgPT09IHByb2R1Y3Q/LnRlcm0hWydAaWQnXSkgfHwge30pW2xvb2t1cHMuY3JvcEdyb3VwaW5nQ29sdW1uXTtcblxuZXhwb3J0IGludGVyZmFjZSBJQ3ljbGUge1xuICBjeWNsZTogSUN5Y2xlSlNPTkxEO1xuICBuYW1lPzogc3RyaW5nO1xuICBzdGFydERhdGU/OiBzdHJpbmc7XG4gIGVuZERhdGU/OiBzdHJpbmc7XG4gIGNvdW50cnk6IHN0cmluZztcbiAgb2JzZXJ2YXRpb25zPzogbnVtYmVyO1xuICB5aWVsZD86IG51bWJlcjtcbiAgZmFvWWllbGQ/OiBudW1iZXI7XG4gIGRpZmY/OiBudW1iZXI7XG59XG5cbmNvbnN0IGNyb3BZaWVsZENvdW50cnkgPSAoY3JvcFlpZWxkOiBhbnlbXSwgY3ljbGU6IElDeWNsZUpTT05MRCkgPT5cbiAgY3JvcFlpZWxkLmZpbmQoKHsgdGVybSB9KSA9PiB0ZXJtLmlkID09PSBnZXQoY3ljbGUsICdzaXRlLmNvdW50cnkuQGlkJywgd29ybGRSZWdpb25bJ0BpZCddKSkgfHwge307XG5cbmV4cG9ydCBjb25zdCBleHRlbmRDeWNsZSA9ICh7IGNyb3AsIGNyb3BZaWVsZCB9OiBJTG9va3VwcykgPT4gKGN5Y2xlOiBJQ3ljbGVKU09OTEQpOiBJQ3ljbGUgPT4ge1xuICBjb25zdCBwcm9kdWN0ID0gcHJpbWFyeVByb2R1Y3QoY3ljbGUpO1xuICBjb25zdCBncm91cGluZyA9IGNyb3BHcm91cGluZyhjcm9wLCBwcm9kdWN0ISk7XG4gIGNvbnN0IGNvdW50cnlEYXRhID0gY3JvcFlpZWxkQ291bnRyeShjcm9wWWllbGQsIGN5Y2xlKVtncm91cGluZ107XG4gIGNvbnN0IGNvdW50cnlWYWx1ZSA9IGV4dHJhY3RHcm91cGVkRGF0YUNsb3Nlc0RhdGUoY291bnRyeURhdGEsICsoY3ljbGUuZW5kRGF0ZSB8fCAnJykpO1xuICBjb25zdCBwcm9kdWN0VmFsdWUgPSBwcm9wZXJ0eVZhbHVlKHByb2R1Y3Q/LnZhbHVlISk7XG5cbiAgcmV0dXJuIHtcbiAgICBjeWNsZSxcbiAgICBuYW1lOiBwcm9kdWN0Py50ZXJtPy5uYW1lLFxuICAgIHN0YXJ0RGF0ZTogY3ljbGUuc3RhcnREYXRlLFxuICAgIGVuZERhdGU6IGN5Y2xlLmVuZERhdGUsXG4gICAgY291bnRyeTogY3ljbGUuc2l0ZT8uY291bnRyeT8ubmFtZSB8fCB3b3JsZFJlZ2lvbi5uYW1lLFxuICAgIG9ic2VydmF0aW9uczogcHJvcGVydHlWYWx1ZShwcm9kdWN0Py5vYnNlcnZhdGlvbnMhKSB8fCAwLFxuICAgIHlpZWxkOiBwcm9kdWN0VmFsdWUsXG4gICAgZmFvWWllbGQ6IGNvdW50cnlWYWx1ZSB8fCB1bmRlZmluZWQsXG4gICAgZGlmZjogZGVsdGEocHJvZHVjdFZhbHVlLCBjb3VudHJ5VmFsdWUpXG4gIH07XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIElUcmlnZ2VyQ291bnRyeVBhcmFtcyB7XG4gIGNvdW50cnk6IFRlcm07XG4gIHByb2R1Y3Q6IFByb2R1Y3Q7XG4gICdAdHlwZSc/OiBOb2RlVHlwZTtcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgSGVBZ2dyZWdhdGlvbkVuZ2luZVNlcnZpY2Uge1xuICBwcml2YXRlIG1vZGVsc0xvYWRpbmcgPSBmYWxzZTtcbiAgcHJpdmF0ZSBtb2RlbHNMb2FkZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfbW9kZWxzID0gbmV3IFJlcGxheVN1YmplY3Q8SU1vZGVsW10+KDEpO1xuXG4gIHByaXZhdGUgbG9va3Vwc0xvYWRpbmcgPSBmYWxzZTtcbiAgcHJpdmF0ZSBsb29rdXBzTG9hZGVkID0gZmFsc2U7XG4gIHByaXZhdGUgX2xvb2t1cHMgPSBuZXcgUmVwbGF5U3ViamVjdDxJTG9va3Vwcz4oMSk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgY29tbW9uU2VydmljZTogSGVDb21tb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgbm9kZVNlcnZpY2U6IEhlTm9kZVNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5pbml0KCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGluaXQoKSB7XG4gICAgYXdhaXQgdGhpcy5sb2FkTW9kZWxzKCkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBwcml2YXRlIGdldCBnaXRVcmwoKSB7XG4gICAgcmV0dXJuIGAke2dpdEhvbWV9L2hlc3RpYS1hZ2dyZWdhdGlvbi1lbmdpbmUvLS9ibG9iLyR7dGhpcy5jb21tb25TZXJ2aWNlLmdpdEJyYW5jaH1gO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgcmF3VXJsKCkge1xuICAgIHJldHVybiBgJHtnaXRSYXdCYXNlVXJsfS9oZXN0aWEtYWdncmVnYXRpb24tZW5naW5lLy0vcmF3LyR7dGhpcy5jb21tb25TZXJ2aWNlLmdpdEJyYW5jaH1gO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkTW9kZWxzKCkge1xuICAgIHRoaXMubW9kZWxzTG9hZGluZyA9IHRydWU7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8SU1vZGVsTGlua3M+KGAke3RoaXMucmF3VXJsfS9tb2RlbC1saW5rcy5qc29uYCkucGlwZShcbiAgICAgIGNhdGNoRXJyb3IoKCkgPT4gb2YoeyBsaW5rczogW10gfSBhcyBJTW9kZWxMaW5rcykpLFxuICAgICAgbWFwKCh7IGxpbmtzIH0pID0+IHtcbiAgICAgICAgdGhpcy5fbW9kZWxzLm5leHQobGlua3MubWFwKCh7IHBhdGg6IG1vZGVsUGF0aCwgZG9jUGF0aCwgLi4ubGluayB9KSA9PiAoe1xuICAgICAgICAgIC4uLmxpbmssXG4gICAgICAgICAgcGF0aDogYCR7dGhpcy5naXRVcmx9LyR7bW9kZWxQYXRofWAsXG4gICAgICAgICAgZG9jUGF0aDogYCR7dGhpcy5naXRVcmx9LyR7ZG9jUGF0aH1gXG4gICAgICAgIH0pKSk7XG4gICAgICAgIHRoaXMubW9kZWxzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLm1vZGVsc0xvYWRlZCA9IHRydWU7XG4gICAgICAgIHJldHVybiBsaW5rcztcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbW9kZWxzJCgpIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlbHNMb2FkaW5nIHx8IHRoaXMubW9kZWxzTG9hZGVkID8gdGhpcy5fbW9kZWxzLmFzT2JzZXJ2YWJsZSgpIDogdGhpcy5sb2FkTW9kZWxzKCk7XG4gIH1cblxuICBwdWJsaWMgbW9kZWxzKCkge1xuICAgIHJldHVybiB0aGlzLm1vZGVscyQucGlwZSh0YWtlKDEpKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIHB1YmxpYyBtb2RlbCQobW9kZWw6IFBhcnRpYWw8SU1vZGVsPikge1xuICAgIHJldHVybiB0aGlzLm1vZGVscyQucGlwZShcbiAgICAgIG1hcChtb2RlbHMgPT4gbW9kZWxzLmZpbmQobSA9PiBPYmplY3Qua2V5cyhtb2RlbCkuZXZlcnkoa2V5ID0+IG1vZGVsW2tleV0gPT09IG1ba2V5XSkpKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgbW9kZWwobW9kZWw6IFBhcnRpYWw8SU1vZGVsPikge1xuICAgIHJldHVybiB0aGlzLm1vZGVsJChtb2RlbCkucGlwZSh0YWtlKDEpKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZExvb2t1cChmaWxlbmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMubm9kZVNlcnZpY2UuZG93bmxvYWRMb29rdXAoZmlsZW5hbWUpO1xuICAgIHJldHVybiBjc3Z0b2pzb24oeyBkZWxpbWl0ZXI6ICdhdXRvJyB9KS5mcm9tU3RyaW5nKGRhdGEhKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZExvb2t1cHMoKSB7XG4gICAgcmV0dXJuIGZvcmtKb2luKHtcbiAgICAgIGNyb3BZaWVsZDogZnJvbSh0aGlzLmxvYWRMb29rdXAobG9va3Vwcy5jcm9wWWllbGQpKSxcbiAgICAgIGNyb3A6IGZyb20odGhpcy5sb2FkTG9va3VwKFRlcm1UZXJtVHlwZS5jcm9wKSlcbiAgICB9KS5waXBlKFxuICAgICAgbWFwKHZhbHVlcyA9PiB7XG4gICAgICAgIHRoaXMuX2xvb2t1cHMubmV4dCh2YWx1ZXMpO1xuICAgICAgICB0aGlzLmxvb2t1cHNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMubG9va3Vwc0xvYWRlZCA9IHRydWU7XG4gICAgICAgIHJldHVybiB2YWx1ZXM7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxvb2t1cHMkKCkge1xuICAgIHJldHVybiB0aGlzLmxvb2t1cHNMb2FkaW5nIHx8IHRoaXMubG9va3Vwc0xvYWRlZCA/IHRoaXMuX2xvb2t1cHMuYXNPYnNlcnZhYmxlKCkgOiB0aGlzLmxvYWRMb29rdXBzKCk7XG4gIH1cblxuICBwdWJsaWMgbG9va3VwcygpIHtcbiAgICByZXR1cm4gdGhpcy5sb29rdXBzJC5waXBlKHRha2UoMSkpLnRvUHJvbWlzZSgpO1xuICB9XG59XG4iXX0=
|
|
89
|
+
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.HeNodeService }]; } });
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdncmVnYXRpb24tZW5naW5lLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZW5naW5lL2FnZ3JlZ2F0aW9uLWVuZ2luZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkQsT0FBTyxFQUEyQixZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RSxPQUFPLEtBQUssU0FBUyxNQUFNLFdBQVcsQ0FBQztBQUd2QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7OztBQUVwRSxNQUFNLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLE9BQU8scUNBQXFDLFNBQVMsRUFBRSxFQUFFLENBQUM7QUFDbEYsTUFBTSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxhQUFhLG9DQUFvQyxTQUFTLEVBQUUsRUFBRSxDQUFDO0FBRXZGLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ25DLFNBQVMsRUFBRSxpREFBaUQ7SUFDNUQsa0JBQWtCLEVBQUUsK0JBQStCO0NBQ3BELENBQUMsQ0FBQztBQWtDSCxNQUFNLE9BQU8sMEJBQTBCO0lBU3JDLFlBQ1ksSUFBZ0IsRUFDaEIsV0FBMEI7UUFEMUIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixnQkFBVyxHQUFYLFdBQVcsQ0FBZTtRQVY5QixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0QixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNy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VztRQUNqQixPQUFPLFFBQVEsQ0FBQztZQUNkLFNBQVMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDbkQsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMvQyxDQUFDLENBQUMsSUFBSSxDQUNMLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNYLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzNCLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1lBQzVCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1lBQzFCLE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdkcsQ0FBQztJQUVNLE9BQU87UUFDWixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ2pELENBQUM7O3dIQWhGVSwwQkFBMEI7NEhBQTFCLDBCQUEwQixjQUZ6QixNQUFNOzRGQUVQLDBCQUEwQjtrQkFIdEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgZm9ya0pvaW4sIGZyb20sIG9mLCBSZXBsYXlTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBOb2RlVHlwZSwgUHJvZHVjdCwgVGVybSwgVGVybVRlcm1UeXBlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9zY2hlbWEnO1xuaW1wb3J0ICogYXMgY3N2dG9qc29uIGZyb20gJ2NzdnRvanNvbic7XG5cbmltcG9ydCB7IEhlTm9kZVNlcnZpY2UgfSBmcm9tICcuLi9ub2RlL25vZGUuc2VydmljZSc7XG5pbXBvcnQgeyBnaXRCcmFuY2gsIGdpdEhvbWUsIGdpdFJhd0Jhc2VVcmwgfSBmcm9tICcuLi9jb21tb24vdXRpbHMnO1xuXG5jb25zdCBnaXRVcmwgPSAoKSA9PiBgJHtnaXRIb21lfS9oZXN0aWEtYWdncmVnYXRpb24tZW5naW5lLy0vYmxvYi8ke2dpdEJyYW5jaCgpfWA7XG5jb25zdCByYXdVcmwgPSAoKSA9PiBgJHtnaXRSYXdCYXNlVXJsfS9oZXN0aWEtYWdncmVnYXRpb24tZW5naW5lLy0vcmF3LyR7Z2l0QnJhbmNoKCl9YDtcblxuZXhwb3J0IGNvbnN0IGxvb2t1cHMgPSBPYmplY3QuZnJlZXplKHtcbiAgY3JvcFlpZWxkOiAncmVnaW9uLWNyb3AtY3JvcEdyb3VwaW5nRmFvc3RhdFByb2R1Y3Rpb24teWllbGQnLFxuICBjcm9wR3JvdXBpbmdDb2x1bW46ICdjcm9wR3JvdXBpbmdGYW9zdGF0UHJvZHVjdGlvbidcbn0pO1xuXG5leHBvcnQgaW50ZXJmYWNlIElNb2RlbCB7XG4gIHR5cGU6IE5vZGVUeXBlO1xuICAvKipcbiAgICogUGF0aCB0byB0aGUgaW1wbGVtZW50YXRpb24gKGNvZGUpIG9mIHRoZSBtb2RlbC5cbiAgICovXG4gIHBhdGg6IHN0cmluZztcbiAgLyoqXG4gICAqIFBhdGggdG8gdGhlIGRvY3VtZW50YXRpb24gb2YgdGhlIG1vZGVsLlxuICAgKi9cbiAgZG9jUGF0aDogc3RyaW5nO1xuICBkYXRhUGF0aDogc3RyaW5nO1xuICAnQGlkJz86IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIElNb2RlbExpbmtzIHtcbiAgbGlua3M6IElNb2RlbFtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElMb29rdXBzIHtcbiAgY3JvcDogYW55W107XG4gIGNyb3BZaWVsZDogYW55W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRyaWdnZXJDb3VudHJ5UGFyYW1zIHtcbiAgY291bnRyeTogVGVybTtcbiAgcHJvZHVjdDogUHJvZHVjdDtcbiAgJ0B0eXBlJz86IE5vZGVUeXBlO1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBIZUFnZ3JlZ2F0aW9uRW5naW5lU2VydmljZSB7XG4gIHByaXZhdGUgbW9kZWxzTG9hZGluZyA9IGZhbHNlO1xuICBwcml2YXRlIG1vZGVsc0xvYWRlZCA9IGZhbHNlO1xuICBwcml2YXRlIF9tb2RlbHMgPSBuZXcgUmVwbGF5U3ViamVjdDxJTW9kZWxbXT4oMSk7XG5cbiAgcHJpdmF0ZSBsb29rdXBzTG9hZGluZyA9IGZhbHNlO1xuICBwcml2YXRlIGxvb2t1cHNMb2FkZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfbG9va3VwcyA9IG5ldyBSZXBsYXlTdWJqZWN0PElMb29rdXBzPigxKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgaHR0cDogSHR0cENsaWVudCxcbiAgICBwcm90ZWN0ZWQgbm9kZVNlcnZpY2U6IEhlTm9kZVNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5pbml0KCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGluaXQoKSB7XG4gICAgYXdhaXQgdGhpcy5sb2FkTW9kZWxzKCkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBwcml2YXRlIGxvYWRNb2RlbHMoKSB7XG4gICAgdGhpcy5tb2RlbHNMb2FkaW5nID0gdHJ1ZTtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxJTW9kZWxMaW5rcz4oYCR7cmF3VXJsKCl9L21vZGVsLWxpbmtzLmpzb25gKS5waXBlKFxuICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZih7IGxpbmtzOiBbXSB9IGFzIElNb2RlbExpbmtzKSksXG4gICAgICBtYXAoKHsgbGlua3MgfSkgPT4ge1xuICAgICAgICB0aGlzLl9tb2RlbHMubmV4dChsaW5rcy5tYXAoKHsgcGF0aDogbW9kZWxQYXRoLCBkb2NQYXRoLCAuLi5saW5rIH0pID0+ICh7XG4gICAgICAgICAgLi4ubGluayxcbiAgICAgICAgICBwYXRoOiBgJHtnaXRVcmwoKX0vJHttb2RlbFBhdGh9YCxcbiAgICAgICAgICBkb2NQYXRoOiBgJHtnaXRVcmwoKX0vJHtkb2NQYXRofWBcbiAgICAgICAgfSkpKTtcbiAgICAgICAgdGhpcy5tb2RlbHNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMubW9kZWxzTG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIGxpbmtzO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdldCBtb2RlbHMkKCkge1xuICAgIHJldHVybiB0aGlzLm1vZGVsc0xvYWRpbmcgfHwgdGhpcy5tb2RlbHNMb2FkZWQgPyB0aGlzLl9tb2RlbHMuYXNPYnNlcnZhYmxlKCkgOiB0aGlzLmxvYWRNb2RlbHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBtb2RlbHMoKSB7XG4gICAgcmV0dXJuIHRoaXMubW9kZWxzJC5waXBlKHRha2UoMSkpLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgcHVibGljIG1vZGVsJChtb2RlbDogUGFydGlhbDxJTW9kZWw+KSB7XG4gICAgcmV0dXJuIHRoaXMubW9kZWxzJC5waXBlKFxuICAgICAgbWFwKG1vZGVscyA9PiBtb2RlbHMuZmluZChtID0+IE9iamVjdC5rZXlzKG1vZGVsKS5ldmVyeShrZXkgPT4gbW9kZWxba2V5XSA9PT0gbVtrZXldKSkpXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBtb2RlbChtb2RlbDogUGFydGlhbDxJTW9kZWw+KSB7XG4gICAgcmV0dXJuIHRoaXMubW9kZWwkKG1vZGVsKS5waXBlKHRha2UoMSkpLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2FkTG9va3VwKGZpbGVuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5ub2RlU2VydmljZS5kb3dubG9hZExvb2t1cChmaWxlbmFtZSk7XG4gICAgcmV0dXJuIGNzdnRvanNvbih7IGRlbGltaXRlcjogJ2F1dG8nIH0pLmZyb21TdHJpbmcoZGF0YSEpO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkTG9va3VwcygpIHtcbiAgICByZXR1cm4gZm9ya0pvaW4oe1xuICAgICAgY3JvcFlpZWxkOiBmcm9tKHRoaXMubG9hZExvb2t1cChsb29rdXBzLmNyb3BZaWVsZCkpLFxuICAgICAgY3JvcDogZnJvbSh0aGlzLmxvYWRMb29rdXAoVGVybVRlcm1UeXBlLmNyb3ApKVxuICAgIH0pLnBpcGUoXG4gICAgICBtYXAodmFsdWVzID0+IHtcbiAgICAgICAgdGhpcy5fbG9va3Vwcy5uZXh0KHZhbHVlcyk7XG4gICAgICAgIHRoaXMubG9va3Vwc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5sb29rdXBzTG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHZhbHVlcztcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbG9va3VwcyQoKSB7XG4gICAgcmV0dXJuIHRoaXMubG9va3Vwc0xvYWRpbmcgfHwgdGhpcy5sb29rdXBzTG9hZGVkID8gdGhpcy5fbG9va3Vwcy5hc09ic2VydmFibGUoKSA6IHRoaXMubG9hZExvb2t1cHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBsb29rdXBzKCkge1xuICAgIHJldHVybiB0aGlzLmxvb2t1cHMkLnBpcGUodGFrZSgxKSkudG9Qcm9taXNlKCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -2,11 +2,12 @@ import { __awaiter, __rest } from "tslib";
|
|
|
2
2
|
import { Injectable, InjectionToken } from '@angular/core';
|
|
3
3
|
import { of, ReplaySubject } from 'rxjs';
|
|
4
4
|
import { catchError, map, take } from 'rxjs/operators';
|
|
5
|
-
import { baseUrl, toDashCase, gitHome, gitRawBaseUrl } from '../common/utils';
|
|
5
|
+
import { baseUrl, toDashCase, gitHome, gitRawBaseUrl, gitBranch } from '../common/utils';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
import * as i1 from "@angular/common/http";
|
|
8
|
-
import * as i2 from "../common/common.service";
|
|
9
8
|
export const HE_ORCHESTRATOR_BASE_URL = new InjectionToken('HE_ORCHESTRATOR_BASE_URL');
|
|
9
|
+
const gitUrl = () => `${gitHome}/hestia-engine-models/-/blob/${gitBranch()}`;
|
|
10
|
+
const rawUrl = () => `${gitRawBaseUrl}/hestia-engine-models/-/raw/${gitBranch()}`;
|
|
10
11
|
export const findConfigModels = ({ models }, modelId, modelKey) => models.flat().filter(({ value, key }) => modelId.startsWith(value) && (!modelKey || key === modelKey));
|
|
11
12
|
export const pathToApiDocsPath = (model, term) => [
|
|
12
13
|
baseUrl(),
|
|
@@ -18,9 +19,8 @@ export const pathToApiDocsPath = (model, term) => [
|
|
|
18
19
|
].filter(Boolean).join('-')
|
|
19
20
|
].join('/');
|
|
20
21
|
export class HeEngineService {
|
|
21
|
-
constructor(http
|
|
22
|
+
constructor(http) {
|
|
22
23
|
this.http = http;
|
|
23
|
-
this.commonService = commonService;
|
|
24
24
|
this.modelsLoading = false;
|
|
25
25
|
this.modelsLoaded = false;
|
|
26
26
|
this._models = new ReplaySubject(1);
|
|
@@ -31,18 +31,12 @@ export class HeEngineService {
|
|
|
31
31
|
yield this.loadModels().toPromise();
|
|
32
32
|
});
|
|
33
33
|
}
|
|
34
|
-
get gitUrl() {
|
|
35
|
-
return `${gitHome}/hestia-engine-models/-/blob/${this.commonService.gitBranch}`;
|
|
36
|
-
}
|
|
37
|
-
get rawUrl() {
|
|
38
|
-
return `${gitRawBaseUrl}/hestia-engine-models/-/raw/${this.commonService.gitBranch}`;
|
|
39
|
-
}
|
|
40
34
|
loadModels() {
|
|
41
35
|
this.modelsLoading = true;
|
|
42
|
-
return this.http.get(`${
|
|
36
|
+
return this.http.get(`${rawUrl()}/model-links.json`).pipe(catchError(() => of({ links: [] })), map(({ links }) => {
|
|
43
37
|
this._models.next(links.map((_a) => {
|
|
44
38
|
var { path, docPath } = _a, link = __rest(_a, ["path", "docPath"]);
|
|
45
|
-
return (Object.assign(Object.assign({}, link), { path: `${
|
|
39
|
+
return (Object.assign(Object.assign({}, link), { path: `${gitUrl()}/${path}`, docPath: `${gitUrl()}/${docPath}`, apiDocsPath: pathToApiDocsPath(link.model, link.term || link.modelKey) }));
|
|
46
40
|
}));
|
|
47
41
|
this.modelsLoading = false;
|
|
48
42
|
this.modelsLoaded = true;
|
|
@@ -67,12 +61,12 @@ export class HeEngineService {
|
|
|
67
61
|
}).toPromise();
|
|
68
62
|
}
|
|
69
63
|
}
|
|
70
|
-
HeEngineService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HeEngineService, deps: [{ token: i1.HttpClient }
|
|
64
|
+
HeEngineService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HeEngineService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
71
65
|
HeEngineService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HeEngineService, providedIn: 'root' });
|
|
72
66
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HeEngineService, decorators: [{
|
|
73
67
|
type: Injectable,
|
|
74
68
|
args: [{
|
|
75
69
|
providedIn: 'root'
|
|
76
70
|
}]
|
|
77
|
-
}], ctorParameters: function () { return [{ type: i1.HttpClient }
|
|
78
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
71
|
+
}], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5naW5lLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZW5naW5lL2VuZ2luZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzRCxPQUFPLEVBQUUsRUFBRSxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN6QyxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd2RCxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7QUFFekYsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxjQUFjLENBQVMsMEJBQTBCLENBQUMsQ0FBQztBQUUvRixNQUFNLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLE9BQU8sZ0NBQWdDLFNBQVMsRUFBRSxFQUFFLENBQUM7QUFDN0UsTUFBTSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxhQUFhLCtCQUErQixTQUFTLEVBQUUsRUFBRSxDQUFDO0FBRWxGLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsRUFBRSxNQUFNLEVBQXVCLEVBQUUsT0FBZSxFQUFFLFFBQWdCLEVBQUUsRUFBRSxDQUNyRyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsSUFBSSxHQUFHLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQztBQUV6RyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLEtBQWEsRUFBRSxJQUFh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QUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3RELENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxJQUFjO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQXNCLEdBQUcsd0JBQXdCLElBQUksSUFBSSxPQUFPLEVBQUU7WUFDcEYsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtTQUMxQixDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDakIsQ0FBQzs7NkdBdkRVLGVBQWU7aUhBQWYsZUFBZSxjQUZkLE1BQU07NEZBRVAsZUFBZTtrQkFIM0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IG9mLCBSZXBsYXlTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBOb2RlVHlwZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvc2NoZW1hJztcblxuaW1wb3J0IHsgYmFzZVVybCwgdG9EYXNoQ2FzZSwgZ2l0SG9tZSwgZ2l0UmF3QmFzZVVybCwgZ2l0QnJhbmNoIH0gZnJvbSAnLi4vY29tbW9uL3V0aWxzJztcblxuZXhwb3J0IGNvbnN0IEhFX09SQ0hFU1RSQVRPUl9CQVNFX1VSTCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KCdIRV9PUkNIRVNUUkFUT1JfQkFTRV9VUkwnKTtcblxuY29uc3QgZ2l0VXJsID0gKCkgPT4gYCR7Z2l0SG9tZX0vaGVzdGlhLWVuZ2luZS1tb2RlbHMvLS9ibG9iLyR7Z2l0QnJhbmNoKCl9YDtcbmNvbnN0IHJhd1VybCA9ICgpID0+IGAke2dpdFJhd0Jhc2VVcmx9L2hlc3RpYS1lbmdpbmUtbW9kZWxzLy0vcmF3LyR7Z2l0QnJhbmNoKCl9YDtcblxuZXhwb3J0IGNvbnN0IGZpbmRDb25maWdNb2RlbHMgPSAoeyBtb2RlbHMgfTogSU9yY2hlc3RyYXRvckNvbmZpZywgbW9kZWxJZDogc3RyaW5nLCBtb2RlbEtleTogc3RyaW5nKSA9PlxuICBtb2RlbHMuZmxhdCgpLmZpbHRlcigoeyB2YWx1ZSwga2V5IH0pID0+IG1vZGVsSWQuc3RhcnRzV2l0aCh2YWx1ZSkgJiYgKCFtb2RlbEtleSB8fCBrZXkgPT09IG1vZGVsS2V5KSk7XG5cbmV4cG9ydCBjb25zdCBwYXRoVG9BcGlEb2NzUGF0aCA9IChtb2RlbDogc3RyaW5nLCB0ZXJtPzogc3RyaW5nKSA9PlxuICBbXG4gICAgYmFzZVVybCgpLFxuICAgICdkb2NzJyxcbiAgICBbXG4gICAgICAnI2hlc3RpYS1jYWxjdWxhdGlvbi1tb2RlbHMnLFxuICAgICAgdG9EYXNoQ2FzZShtb2RlbCksXG4gICAgICB0b0Rhc2hDYXNlKHRlcm0pXG4gICAgXS5maWx0ZXIoQm9vbGVhbikuam9pbignLScpXG4gIF0uam9pbignLycpO1xuXG5leHBvcnQgaW50ZXJmYWNlIElNb2RlbCB7XG4gIC8qKlxuICAgKiBQYXRoIHRvIHRoZSBpbXBsZW1lbnRhdGlvbiAoY29kZSkgb2YgdGhlIG1vZGVsLlxuICAgKi9cbiAgcGF0aDogc3RyaW5nO1xuICAvKipcbiAgICogUGF0aCB0byB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGUgbW9kZWwuXG4gICAqL1xuICBkb2NQYXRoOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBQYXRoIHRvIHRoZSBBUEkgRG9jdW1lbnRhdGlvbi5cbiAgICovXG4gIGFwaURvY3NQYXRoPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIG1vZGVsIHVzZWQgYXMgYG1ldGhvZE1vZGVsYC5cbiAgICovXG4gIG1vZGVsOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgdGVybSB0aGUgbW9kZWwgaXMgYXNzb2NpYXRlZCB3aXRoLlxuICAgKi9cbiAgdGVybT86IHN0cmluZztcbiAgLyoqXG4gICAqIEEga2V5IGluIHRoZSBtb2RlbCBpZiB0ZXJtIGRvZXMgbm90IGV4aXN0LlxuICAgKi9cbiAgbW9kZWxLZXk/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBJTW9kZWxMaW5rcyB7XG4gIGxpbmtzOiBJTW9kZWxbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJT3JjaGVzdHJhdG9yTW9kZWxDb25maWcge1xuICBrZXk6IHN0cmluZztcbiAgbW9kZWw6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJT3JjaGVzdHJhdG9yQ29uZmlnIHtcbiAgbW9kZWxzOiBJT3JjaGVzdHJhdG9yTW9kZWxDb25maWdbXTtcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgSGVFbmdpbmVTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBtb2RlbHNMb2FkaW5nID0gZmFsc2U7XG4gIHByaXZhdGUgbW9kZWxzTG9hZGVkID0gZmFsc2U7XG4gIHByaXZhdGUgX21vZGVscyA9IG5ldyBSZXBsYXlTdWJqZWN0PElNb2RlbFtdPigxKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgaHR0cDogSHR0cENsaWVudFxuICApIHtcbiAgICB0aGlzLmluaXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgaW5pdCgpIHtcbiAgICBhd2FpdCB0aGlzLmxvYWRNb2RlbHMoKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZE1vZGVscygpIHtcbiAgICB0aGlzLm1vZGVsc0xvYWRpbmcgPSB0cnVlO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PElNb2RlbExpbmtzPihgJHtyYXdVcmwoKX0vbW9kZWwtbGlua3MuanNvbmApLnBpcGUoXG4gICAgICBjYXRjaEVycm9yKCgpID0+IG9mKHsgbGlua3M6IFtdIH0gYXMgSU1vZGVsTGlua3MpKSxcbiAgICAgIG1hcCgoeyBsaW5rcyB9KSA9PiB7XG4gICAgICAgIHRoaXMuX21vZGVscy5uZXh0KGxpbmtzLm1hcCgoeyBwYXRoLCBkb2NQYXRoLCAuLi5saW5rIH0pID0+ICh7XG4gICAgICAgICAgLi4ubGluayxcbiAgICAgICAgICBwYXRoOiBgJHtnaXRVcmwoKX0vJHtwYXRofWAsXG4gICAgICAgICAgZG9jUGF0aDogYCR7Z2l0VXJsKCl9LyR7ZG9jUGF0aH1gLFxuICAgICAgICAgIGFwaURvY3NQYXRoOiBwYXRoVG9BcGlEb2NzUGF0aChsaW5rLm1vZGVsLCBsaW5rLnRlcm0gfHwgbGluay5tb2RlbEtleSlcbiAgICAgICAgfSkpKTtcbiAgICAgICAgdGhpcy5tb2RlbHNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMubW9kZWxzTG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIGxpbmtzO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdldCBtb2RlbHMkKCkge1xuICAgIHJldHVybiB0aGlzLm1vZGVsc0xvYWRpbmcgfHwgdGhpcy5tb2RlbHNMb2FkZWQgPyB0aGlzLl9tb2RlbHMuYXNPYnNlcnZhYmxlKCkgOiB0aGlzLmxvYWRNb2RlbHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBtb2RlbHMoKSB7XG4gICAgcmV0dXJuIHRoaXMubW9kZWxzJC5waXBlKHRha2UoMSkpLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgcHVibGljIG1vZGVsJChtb2RlbDogUGFydGlhbDxJTW9kZWw+KSB7XG4gICAgcmV0dXJuIHRoaXMubW9kZWxzJC5waXBlKFxuICAgICAgbWFwKG1vZGVscyA9PiBtb2RlbHMuZmluZChtID0+IE9iamVjdC5rZXlzKG1vZGVsKS5ldmVyeShrZXkgPT4gbW9kZWxba2V5XSA9PT0gbVtrZXldKSkpXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBtb2RlbChtb2RlbDogUGFydGlhbDxJTW9kZWw+KSB7XG4gICAgcmV0dXJuIHRoaXMubW9kZWwkKG1vZGVsKS5waXBlKHRha2UoMSkpLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgcHVibGljIG9jaGVzdHJhdG9yQ29uZmlnKHR5cGU6IE5vZGVUeXBlKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8SU9yY2hlc3RyYXRvckNvbmZpZz4oYCR7SEVfT1JDSEVTVFJBVE9SX0JBU0VfVVJMfS8ke3R5cGV9Lmpzb25gLCB7XG4gICAgICBwYXJhbXM6IHsgaW5saW5lOiBmYWxzZSB9XG4gICAgfSkudG9Qcm9taXNlKCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -225,7 +225,7 @@ export class ImpactAssessmentsProductsComponent {
|
|
|
225
225
|
});
|
|
226
226
|
}
|
|
227
227
|
}
|
|
228
|
-
ImpactAssessmentsProductsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ImpactAssessmentsProductsComponent, deps: [{ token: i1.FormBuilder }, { token: i2.HeNodeService }, { token: i3.HeSearchService }, { token: i4.
|
|
228
|
+
ImpactAssessmentsProductsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ImpactAssessmentsProductsComponent, deps: [{ token: i1.FormBuilder }, { token: i2.HeNodeService }, { token: i3.HeSearchService }, { token: i4.HeToastService }], target: i0.ɵɵFactoryTarget.Component });
|
|
229
229
|
ImpactAssessmentsProductsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ImpactAssessmentsProductsComponent, selector: "he-impact-assessments-products", inputs: { cycles: "cycles", impactAssessments: "impactAssessments", key: "key", dataState: "dataState", enableCompare: "enableCompare", filterTermTypes: "filterTermTypes", enableFilterMethodModel: "enableFilterMethodModel" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"indicators.length; else emptyTable\">\n <div class=\"columns is-variable is-2 m-0\">\n <div class=\"column is-hidden-mobile\"></div>\n <div class=\"column is-narrow\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <button class=\"button is-small\" [class.is-active]=\"selectedView === View.table\" (click)=\"selectedView = View.table\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"list\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Table view</span>\n </button>\n </div>\n <div class=\"control\" *ngIf=\"impactAssessments.length > 1\">\n <button class=\"button is-small\" [class.is-active]=\"selectedView === View.chart\" (click)=\"selectedView = View.chart\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"chart-bar\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Chart view</span>\n </button>\n </div>\n <div class=\"control\" *ngIf=\"enableBreakdown\">\n <button class=\"button is-small\" [class.is-active]=\"selectedView === View.breakdown\" (click)=\"selectedView = View.breakdown\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"chart-bar\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Breakdown view</span>\n </button>\n </div>\n <div class=\"control\" *ngIf=\"!isOriginal && impactAssessments.length === 1\">\n <button class=\"button is-small\" [class.is-active]=\"selectedView === View.logs\" (click)=\"showRecalculationLogs()\">\n <span class=\"icon is-small\">\n <fa-icon icon=\"calculator\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span>Recalculations logs</span>\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"px-3 pb-3\" [class.is-hidden]=\"selectedView !== View.table\">\n <div class=\"has-text-right mb-2\">\n <button class=\"button is-dark is-outlined is-small\" (click)=\"showDownload = true\">\n <fa-icon icon=\"download\"></fa-icon>\n <span class=\"pl-2\">Download (CSV)</span>\n </button>\n </div>\n\n <div class=\"table-container data-table-container mb-1\" *bindOnce=\"indicators\">\n <table class=\"table is-narrow data-table has-children-{{indicators.length + 1}}\">\n <thead>\n <tr>\n <th class=\"width-auto\">\n <div class=\"select is-small\" *ngIf=\"enableFilterMethodModel\">\n <select name=\"selectedMethodModel\"\n (change)=\"updateImpacts()\" [(ngModel)]=\"selectedMethodModel\"\n >\n <option [ngValue]=\"undefined\">Filter Model</option>\n <option *ngFor=\"let term of methodModels\" [ngValue]=\"term\">{{term.name}}</option>\n </select>\n </div>\n </th>\n <th></th>\n <th *ngFor=\"let indicator of indicators\"\n [attr.title]=\"indicator.value.term.name\"\n >\n <he-node-link [node]=\"indicator.value.term\">\n <span>{{indicator.value.term.name | ellipsis:30}}</span>\n </he-node-link>\n </th>\n </tr>\n <tr>\n <th class=\"width-auto\">\n <a [href]=\"baseUrl + '/schema/ImpactAssessment#functionalUnit'\" target=\"_blank\">Functional unit:</a>\n <span class=\"pl-1\">1 kg</span>\n </th>\n <th>Product</th>\n <th *ngFor=\"let indicator of indicators\"\n [attr.title]=\"indicator.value.term.units\"\n >{{indicator.value.term.units}}</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let impactAssessment of impactAssessments; trackBy: trackById; let i = index\">\n <td class=\"width-auto\" [attr.title]=\"impactName(impactAssessment)\" [style.border-left-color]=\"itemColor(i)\">\n <label *ngIf=\"enableCompare\" class=\"is-inline-block checkbox\">\n <input type=\"checkbox\" class=\"selector\"\n (change)=\"toggleImpact(impactAssessment)\"\n [checked]=\"isSelected(impactAssessment)\"\n >\n </label>\n <he-node-link class=\"is-inline-block\" [node]=\"impactAssessment\">\n <span class=\"is-nowrap has-text-ellipsis\">{{i + 1}}. {{impactName(impactAssessment)}}</span>\n </he-node-link>\n </td>\n <td [attr.title]=\"impactAssessment.product?.name\">\n <he-node-link *ngIf=\"impactAssessment.product\" [node]=\"impactAssessment.product\">\n <span>{{impactAssessment.product.name | ellipsis:30}}</span>\n </he-node-link>\n </td>\n <td class=\"is-nowrap\" *ngFor=\"let indicator of indicators\">\n <span *ngIf=\"indicator.value.values[impactAssessment['@id']]; else emptyValue\"\n class=\"trigger-popover\"\n [ngbPopover]=\"details\" [autoClose]=\"'outside'\"\n triggers=\"manual\" #p=\"ngbPopover\" placement=\"left\" container=\"body\"\n (click)=\"togglePopover(p, { data: indicator.value.values[impactAssessment['@id']], impactAssessment: impactAssessment, key: key })\"\n >\n <span pointer>{{propertyValue(indicator.value.values[impactAssessment['@id']].value, key === 'impacts') | precision:3 | default:'-'}}</span>\n <he-blank-node-state class=\"ml-1\"\n [node]=\"indicator.value.values[impactAssessment['@id']].nodes[0]\"\n key=\"value\"\n [state]=\"impactAssessment.aggregated ? 'aggregated' : null\"\n ></he-blank-node-state>\n </span>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n\n <he-blank-node-state-notice [dataState]=\"dataState\"></he-blank-node-state-notice>\n\n <form *ngIf=\"enableCompare\" class=\"mt-2\" [formGroup]=\"form\" (submit)=\"form.valid && addImpact()\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <span class=\"button is-small is-static\">Compare with Aggregated Impact Assessment</span>\n </div>\n <div class=\"control is-expanded\" [class.has-icons-right]=\"suggesting || loading\">\n <input class=\"input is-small\"\n placeholder=\"Search by name or id\"\n formControlName=\"search\" name=\"search\"\n\n [ngbTypeahead]=\"suggestImpactAssessment\"\n [inputFormatter]=\"formatter\"\n [resultTemplate]=\"suggestion\"\n [focusFirst]=\"true\"\n >\n <span class=\"icon is-small is-right has-text-grey-dark\" [class.is-hidden]=\"!(suggesting || loading)\">\n <fa-icon icon=\"spinner\" [pulse]=\"true\" size=\"sm\"></fa-icon>\n </span>\n </div>\n <div class=\"control\">\n <button class=\"button is-small\" type=\"submit\" [disabled]=\"suggesting || loading\">\n <fa-icon icon=\"plus\"></fa-icon>\n </button>\n </div>\n </div>\n </form>\n </div>\n\n <he-impact-assessments-indicator-breakdown-chart *ngIf=\"selectedView === View.breakdown\"\n [impactAssessment]=\"impactAssessments[0]\"\n [indicators]=\"impactAssessments[0][key]\"\n ></he-impact-assessments-indicator-breakdown-chart>\n\n <he-impact-assessments-indicators-chart *ngIf=\"impactAssessments.length > 1\" [class.is-hidden]=\"selectedView !== View.chart\"\n [key]=\"key\"\n [impactAssessments]=\"selectedImpactAssessments\"\n [filterTermTypes]=\"filterTermTypes\"\n ></he-impact-assessments-indicators-chart>\n\n <he-impact-assessments-products-logs *ngIf=\"selectedView === View.logs && !isOriginal\"\n [key]=\"key\"\n [impactAssessment]=\"impactAssessments[0]\"\n [filterTermTypes]=\"filterTermTypes\"\n [originalValues]=\"originalValues[0][key]\"\n [recalculatedValues]=\"impactAssessments[0][key]\"\n ></he-impact-assessments-products-logs>\n</ng-container>\n\n<he-node-csv-export-confirm *ngIf=\"showDownload\"\n [nodes]=\"impactAssessments\" [filename]=\"'impact-' + key + '.csv'\" [isUpload]=\"false\"\n [headerKeys]=\"['impactAssessment.id', 'impactAssessment.@id', 'impactAssessment.' + key + '.']\"\n (closed)=\"showDownload = false\"\n></he-node-csv-export-confirm>\n\n<ng-template #emptyTable>\n <div class=\"panel-block\">\n <span>No data</span>\n </div>\n</ng-template>\n\n<ng-template #emptyValue>\n <span>-</span>\n</ng-template>\n\n<ng-template #details let-node=\"impactAssessment\" let-data=\"data\" let-key=\"key\">\n <p *bindOnce=\"node\">\n <b>\n <span *ngIf=\"data.cycle\">{{cycleLabel(node.cycle)}}</span>\n <span *ngIf=\"!data.cycle\">{{data.name}}</span>\n </b>\n </p>\n <he-node-value-details\n [data]=\"data\" [nodeType]=\"node['@type']\" [dataKey]=\"key\"\n ></he-node-value-details>\n</ng-template>\n\n<ng-template #suggestion let-impact=\"result\" let-t=\"term\">\n <div class=\"is-block\">\n <ngb-highlight [result]=\"impact.name || impact.cycle.name\" [term]=\"t\"></ngb-highlight>\n </div>\n <div class=\"columns is-flex\">\n <div class=\"column\" *ngIf=\"impact.country\">\n <span class=\"pr-1 has-text-underline\">Country:</span>\n <span class=\"is-inline-flex\"><ngb-highlight [result]=\"impact.country.name\" [term]=\"t\"></ngb-highlight></span>\n </div>\n <div class=\"column\" *ngIf=\"impact.product\">\n <span class=\"pr-1 has-text-underline\">Product:</span>\n <span class=\"is-inline-flex\"><ngb-highlight [result]=\"impact.product.name\" [term]=\"t\"></ngb-highlight></span>\n </div>\n <div class=\"column\" *ngIf=\"impact.endDate\">\n <span class=\"pr-1 has-text-underline\">Date:</span>\n <span class=\"is-inline-flex\"><ngb-highlight [result]=\"impact.endDate\" [term]=\"t\"></ngb-highlight></span>\n </div>\n </div>\n</ng-template>\n", styles: ["label.checkbox{width:20px}td he-node-link{width:160px}table.data-table td:first-child{border-left-width:8px}\n"], components: [{ type: i5.FaIconComponent, selector: "fa-icon", inputs: ["classes", "icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }, { type: i6.NodeLinkComponent, selector: "he-node-link", inputs: ["node", "showExternalLink"] }, { type: i7.BlankNodeStateComponent, selector: "he-blank-node-state", inputs: ["nodeType", "dataKey", "key", "node", "state"] }, { type: i8.BlankNodeStateNoticeComponent, selector: "he-blank-node-state-notice", inputs: ["dataState", "showDeleted"] }, { type: i9.ImpactAssessmentsIndicatorBreakdownChartComponent, selector: "he-impact-assessments-indicator-breakdown-chart", inputs: ["impactAssessment", "indicators"] }, { type: i10.ImpactAssessmentsIndicatorsChartComponent, selector: "he-impact-assessments-indicators-chart", inputs: ["impactAssessments", "key", "filterTermTypes"] }, { type: i11.ImpactAssessmentsProductsLogsComponent, selector: "he-impact-assessments-products-logs", inputs: ["impactAssessment", "key", "filterTermTypes", "originalValues", "recalculatedValues"] }, { type: i12.NodeCsvExportConfirmComponent, selector: "he-node-csv-export-confirm", inputs: ["nodes", "filename", "headerKeys", "extension", "isUpload"], outputs: ["closed"] }, { type: i13.NodeValueDetailsComponent, selector: "he-node-value-details", inputs: ["data", "nodeType", "dataKey"] }, { type: i14.NgbHighlight, selector: "ngb-highlight", inputs: ["highlightClass", "result", "term"] }], directives: [{ type: i15.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i16.BindOnceDirective, selector: "[bindOnce]", inputs: ["bindOnce"] }, { type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i15.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i14.NgbPopover, selector: "[ngbPopover]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disablePopover", "popoverClass", "openDelay", "closeDelay", "ngbPopover", "popoverTitle"], outputs: ["shown", "hidden"], exportAs: ["ngbPopover"] }, { type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i14.NgbTypeahead, selector: "input[ngbTypeahead]", inputs: ["autocomplete", "placement", "container", "editable", "focusFirst", "showHint", "inputFormatter", "ngbTypeahead", "resultFormatter", "resultTemplate"], outputs: ["selectItem"], exportAs: ["ngbTypeahead"] }, { type: i1.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }], pipes: { "ellipsis": i17.EllipsisPipe, "default": i18.DefaultPipe, "precision": i19.PrecisionPipe } });
|
|
230
230
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ImpactAssessmentsProductsComponent, decorators: [{
|
|
231
231
|
type: Component,
|
|
@@ -234,7 +234,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
234
234
|
templateUrl: './impact-assessments-products.component.html',
|
|
235
235
|
styleUrls: ['./impact-assessments-products.component.scss']
|
|
236
236
|
}]
|
|
237
|
-
}], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.HeNodeService }, { type: i3.HeSearchService }, { type: i4.
|
|
237
|
+
}], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.HeNodeService }, { type: i3.HeSearchService }, { type: i4.HeToastService }]; }, propDecorators: { cycles: [{
|
|
238
238
|
type: Input
|
|
239
239
|
}], impactAssessments: [{
|
|
240
240
|
type: Input
|
|
@@ -249,4 +249,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
249
249
|
}], enableFilterMethodModel: [{
|
|
250
250
|
type: Input
|
|
251
251
|
}] } });
|
|
252
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wYWN0LWFzc2Vzc21lbnRzLXByb2R1Y3RzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9pbXBhY3QtYXNzZXNzbWVudHMvaW1wYWN0LWFzc2Vzc21lbnRzLXByb2R1Y3RzL2ltcGFjdC1hc3Nlc3NtZW50cy1wcm9kdWN0cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvaW1wYWN0LWFzc2Vzc21lbnRzL2ltcGFjdC1hc3Nlc3NtZW50cy1wcm9kdWN0cy9pbXBhY3QtYXNzZXNzbWVudHMtcHJvZHVjdHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUMzRSxPQUFPLEVBQWUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekQsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxFQUNMLFFBQVEsRUFDVCxNQUFNLHNCQUFzQixDQUFDO0FBRTlCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUc3QyxPQUFPLEVBQ0wsU0FBUyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxzQkFBc0IsRUFBRSxvQkFBb0IsRUFBRSxvQkFBb0IsRUFDakgsTUFBTSwyQkFBMkIsQ0FBQztBQUduQyxPQUFPLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBZ0IsWUFBWSxFQUFFLE9BQU8sRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFUckgsTUFBTSxPQUFPLEdBQUcsT0FB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QUUsQ0FBQzs7S0FDdEI7O2dJQWpQVSxrQ0FBa0M7b0hBQWxDLGtDQUFrQyw2VENqQy9DLHk4VEEwTkE7NEZEekxhLGtDQUFrQztrQkFMOUMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZ0NBQWdDO29CQUMxQyxXQUFXLEVBQUUsOENBQThDO29CQUMzRCxTQUFTLEVBQUUsQ0FBQyw4Q0FBOEMsQ0FBQztpQkFDNUQ7dUxBTVMsTUFBTTtzQkFEYixLQUFLO2dCQUlDLGlCQUFpQjtzQkFEdkIsS0FBSztnQkFHQyxHQUFHO3NCQURULEtBQUs7Z0JBR0MsU0FBUztzQkFEZixLQUFLO2dCQUdDLGFBQWE7c0JBRG5CLEtBQUs7Z0JBR0MsZUFBZTtzQkFEckIsS0FBSztnQkFHQyx1QkFBdUI7c0JBRDdCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRGF0YVN0YXRlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9hcGknO1xuaW1wb3J0IHtcbiAgTm9kZVR5cGUsIElDeWNsZUpTT05MRCwgSUltcGFjdEFzc2Vzc21lbnRKU09OTEQsIEluZGljYXRvciwgQ3ljbGUsIFRlcm1UZXJtVHlwZSwgVGVybVxufSBmcm9tICdAaGVzdGlhLWVhcnRoL3NjaGVtYSc7XG5jb25zdCBvcmRlckJ5ID0gcmVxdWlyZSgnbG9kYXNoLm9yZGVyYnknKTtcbmltcG9ydCB7IHVuaXF1ZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvdXRpbHMnO1xuXG5pbXBvcnQgeyBIZU5vZGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vbm9kZS9ub2RlLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgbWF0Y2hUeXBlLCBtYXRjaEV4YWN0UXVlcnksIG1hdGNoUGhyYXNlUXVlcnksIG1hdGNoUGhyYXNlUHJlZml4UXVlcnksIG1hdGNoQm9vbFByZWZpeFF1ZXJ5LCBtYXRjaEFnZ3JlZ2F0ZWRRdWVyeVxufSBmcm9tICcuLi8uLi9zZWFyY2gvc2VhcmNoLm1vZGVsJztcbmltcG9ydCB7IEhlU2VhcmNoU2VydmljZSB9IGZyb20gJy4uLy4uL3NlYXJjaC9zZWFyY2guc2VydmljZSc7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb21tb24vdG9hc3Quc2VydmljZSc7XG5pbXBvcnQgeyBwcm9wZXJ0eVZhbHVlLCBncm91cE5vZGVzQnlUZXJtLCBpdGVtQ29sb3IsIElHcm91cGVkS2V5cywgZ3JvdXBwZWRLZXlzLCBiYXNlVXJsIH0gZnJvbSAnLi4vLi4vY29tbW9uL3V0aWxzJztcblxuY29uc3QgTUlOX1RZUEVBSEVBRF9MRU5HVEggPSAxO1xuXG5lbnVtIFZpZXcge1xuICB0YWJsZSA9ICd0YWJsZScsXG4gIGNoYXJ0ID0gJ2NoYXJ0JyxcbiAgYnJlYWtkb3duID0gJ2JyZWFrZG93bicsXG4gIGxvZ3MgPSAnbG9ncydcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaGUtaW1wYWN0LWFzc2Vzc21lbnRzLXByb2R1Y3RzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ltcGFjdC1hc3Nlc3NtZW50cy1wcm9kdWN0cy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ltcGFjdC1hc3Nlc3NtZW50cy1wcm9kdWN0cy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEltcGFjdEFzc2Vzc21lbnRzUHJvZHVjdHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBwcml2YXRlIGRhdGFTdGF0ZVZhbHVlczoge1xuICAgIFtkYXRhU3RhdGUgaW4gRGF0YVN0YXRlXT86IElJbXBhY3RBc3Nlc3NtZW50SlNPTkxEW107XG4gIH0gPSB7fTtcbiAgQElucHV0KClcbiAgcHJpdmF0ZSBjeWNsZXM/OiBJQ3ljbGVKU09OTERbXTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgaW1wYWN0QXNzZXNzbWVudHM6IElJbXBhY3RBc3Nlc3NtZW50SlNPTkxEW10gPSBbXTtcbiAgQElucHV0KClcbiAgcHVibGljIGtleTogJ2ltcGFjdHMnIHwgJ2VtaXNzaW9uc1Jlc291cmNlVXNlJyA9ICdpbXBhY3RzJztcbiAgQElucHV0KClcbiAgcHVibGljIGRhdGFTdGF0ZT86IERhdGFTdGF0ZTtcbiAgQElucHV0KClcbiAgcHVibGljIGVuYWJsZUNvbXBhcmUgPSB0cnVlO1xuICBASW5wdXQoKVxuICBwdWJsaWMgZmlsdGVyVGVybVR5cGVzPzogVGVybVRlcm1UeXBlW107XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBlbmFibGVGaWx0ZXJNZXRob2RNb2RlbCA9IGZhbHNlO1xuXG4gIHB1YmxpYyBwcm9wZXJ0eVZhbHVlID0gcHJvcGVydHlWYWx1ZTtcbiAgcHVibGljIGl0ZW1Db2xvciA9IGl0ZW1Db2xvcjtcbiAgcHVibGljIGJhc2VVcmwgPSBiYXNlVXJsKCk7XG4gIHB1YmxpYyBzaG93RG93bmxvYWQgPSBmYWxzZTtcbiAgcHVibGljIFZpZXcgPSBWaWV3O1xuICBwdWJsaWMgc2VsZWN0ZWRWaWV3ID0gVmlldy50YWJsZTtcblxuICBwdWJsaWMgbWV0aG9kTW9kZWxzOiBUZXJtW10gPSBbXTtcbiAgcHVibGljIHNlbGVjdGVkTWV0aG9kTW9kZWw/OiBUZXJtO1xuXG4gIHB1YmxpYyBpbmRpY2F0b3JzOiBJR3JvdXBlZEtleXM8SW5kaWNhdG9yPltdID0gW107XG5cbiAgLy8gQWRkaW5nIGltcGFjdHMgdG8gY29tcGFyZVxuICBwdWJsaWMgZm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgIHNlYXJjaDogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXVxuICB9KTtcbiAgcHVibGljIHNlbGVjdGVkSW1wYWN0QXNzZXNzbWVudHM6IElJbXBhY3RBc3Nlc3NtZW50SlNPTkxEW10gPSBbXTtcbiAgcHVibGljIGxvYWRpbmcgPSBmYWxzZTtcbiAgcHVibGljIHN1Z2dlc3RpbmcgPSBmYWxzZTtcbiAgcHVibGljIGZvcm1hdHRlciA9ICh7ICdAaWQnOiBpZCB9KSA9PiBpZDtcbiAgcHVibGljIHN1Z2dlc3RJbXBhY3RBc3Nlc3NtZW50ID0gKHRleHQkOiBPYnNlcnZhYmxlPHN0cmluZz4pID0+XG4gICAgdGV4dCQucGlwZShcbiAgICAgIGRlYm91bmNlVGltZSgzMDApLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgIHRhcCgoKSA9PiB0aGlzLnN1Z2dlc3RpbmcgPSB0cnVlKSxcbiAgICAgIHN3aXRjaE1hcCh0ZXJtID0+IHRoaXMuc3VnZ2VzdCh0ZXJtKSksXG4gICAgICB0YXAoKCkgPT4gdGhpcy5zdWdnZXN0aW5nID0gZmFsc2UpXG4gICAgKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIG5vZGVTZXJ2aWNlOiBIZU5vZGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2VhcmNoU2VydmljZTogSGVTZWFyY2hTZXJ2aWNlLFxuICAgIHByaXZhdGUgdG9hc3RTZXJ2aWNlOiBUb2FzdFNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoJ2ltcGFjdEFzc2Vzc21lbnRzJyBpbiBjaGFuZ2VzKSB7XG4gICAgICB0aGlzLmRhdGFTdGF0ZVZhbHVlc1t0aGlzLmRhdGFTdGF0ZSFdID0gY2hhbmdlcy5pbXBhY3RBc3Nlc3NtZW50cy5jdXJyZW50VmFsdWUuc2xpY2UoKTtcbiAgICAgIHRoaXMuc2VsZWN0QWxsSW1wYWN0cygpO1xuICAgICAgcmV0dXJuIHRoaXMudXBkYXRlKCk7XG4gICAgfVxuICAgIGlmICgnZGF0YVN0YXRlJyBpbiBjaGFuZ2VzKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkVmlldyA9IFZpZXcudGFibGU7XG4gICAgICByZXR1cm4gdGhpcy51cGRhdGVEYXRhU3RhdGUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdHJhY2tCeUlkKF9pbmRleDogbnVtYmVyLCBpdGVtOiBJSW1wYWN0QXNzZXNzbWVudEpTT05MRCkge1xuICAgIHJldHVybiBpdGVtWydAaWQnXTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNPcmlnaW5hbCgpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhU3RhdGUgPT09IERhdGFTdGF0ZS5vcmlnaW5hbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgb3JpZ2luYWxWYWx1ZXMoKSB7XG4gICAgcmV0dXJuICh0aGlzLmlzT3JpZ2luYWwgPyBudWxsIDogdGhpcy5kYXRhU3RhdGVWYWx1ZXNbRGF0YVN0YXRlLm9yaWdpbmFsXSkgfHwgW107XG4gIH1cblxuICBwcml2YXRlIHRlcm1BbGxvd2VkKHRlcm0/OiBUZXJtKSB7XG4gICAgcmV0dXJuICF0aGlzLmZpbHRlclRlcm1UeXBlcz8ubGVuZ3RoIHx8ICh0aGlzLmZpbHRlclRlcm1UeXBlcyB8fCBbXSkuaW5jbHVkZXModGVybT8udGVybVR5cGUhKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlKCkge1xuICAgIHRoaXMudXBkYXRlSW1wYWN0cygpO1xuICAgIHRoaXMuZW5hYmxlRmlsdGVyTWV0aG9kTW9kZWwgJiYgdGhpcy51cGRhdGVNZXRob2RNb2RlbHMoKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlTWV0aG9kTW9kZWxzKCkge1xuICAgIGNvbnN0IG1ldGhvZE1vZGVscyA9IHRoaXMuaW1wYWN0QXNzZXNzbWVudHNcbiAgICAgIC5mbGF0TWFwKGltcGFjdCA9PiAoaW1wYWN0W3RoaXMua2V5XSB8fCBbXSkubWFwKHYgPT4gdi5tZXRob2RNb2RlbCkpXG4gICAgICAuZmlsdGVyKEJvb2xlYW4pO1xuICAgIHRoaXMubWV0aG9kTW9kZWxzID0gdW5pcXVlKG1ldGhvZE1vZGVscyBhcyBUZXJtW10pO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZUltcGFjdHMoKSB7XG4gICAgY29uc3QgaW5kaWNhdG9yUGVySW1wYWN0QXNzZXNzbWVudCA9IGdyb3VwTm9kZXNCeVRlcm08SUltcGFjdEFzc2Vzc21lbnRKU09OTEQsIEluZGljYXRvcj4oXG4gICAgICB0aGlzLmltcGFjdEFzc2Vzc21lbnRzLCB0aGlzLmtleSwgdGhpcy5vcmlnaW5hbFZhbHVlcywgdGhpcy5zZWxlY3RlZE1ldGhvZE1vZGVsXG4gICAgKTtcbiAgICB0aGlzLmluZGljYXRvcnMgPSBvcmRlckJ5KGdyb3VwcGVkS2V5cyhpbmRpY2F0b3JQZXJJbXBhY3RBc3Nlc3NtZW50KSwgWyd2YWx1ZS5tZXRob2RUaWVyT3JkZXInLCAna2V5J10sIFsnYXNjJywgJ2FzYyddKVxuICAgICAgLmZpbHRlcigoeyB2YWx1ZSB9KSA9PiB0aGlzLnRlcm1BbGxvd2VkKHZhbHVlPy50ZXJtKSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGxvYWREYXRhU3RhdGUoZGF0YVN0YXRlOiBEYXRhU3RhdGUpIHtcbiAgICB0aGlzLmRhdGFTdGF0ZVZhbHVlc1tkYXRhU3RhdGVdID0gdGhpcy5kYXRhU3RhdGVWYWx1ZXNbZGF0YVN0YXRlXSB8fCBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIHRoaXMuaW1wYWN0QXNzZXNzbWVudHMubWFwKG5vZGUgPT5cbiAgICAgICAgdGhpcy5ub2RlU2VydmljZS5nZXQ8SUltcGFjdEFzc2Vzc21lbnRKU09OTEQ+KHtcbiAgICAgICAgICAuLi5ub2RlLFxuICAgICAgICAgIGRhdGFTdGF0ZVxuICAgICAgICB9KVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZURhdGFTdGF0ZSgpIHtcbiAgICBhd2FpdCB0aGlzLmxvYWREYXRhU3RhdGUodGhpcy5kYXRhU3RhdGUhKTtcbiAgICB0aGlzLmltcGFjdEFzc2Vzc21lbnRzID0gdGhpcy5kYXRhU3RhdGVWYWx1ZXNbdGhpcy5kYXRhU3RhdGUhXSEuc2xpY2UoKTtcbiAgICByZXR1cm4gdGhpcy51cGRhdGUoKTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVQb3BvdmVyKHBvcG92ZXIsIGNvbnRleHQpIHtcbiAgICByZXR1cm4gcG9wb3Zlci5pc09wZW4oKSA/IHBvcG92ZXIuY2xvc2UoKSA6IHBvcG92ZXIub3Blbihjb250ZXh0KTtcbiAgfVxuXG4gIHB1YmxpYyBpbXBhY3ROYW1lKGltcGFjdDogSUltcGFjdEFzc2Vzc21lbnRKU09OTEQpIHtcbiAgICByZXR1cm4gaW1wYWN0Lm5hbWUgfHwgKGltcGFjdC5jeWNsZSA/IHRoaXMuY3ljbGVMYWJlbChpbXBhY3QuY3ljbGUpIDogaW1wYWN0WydAaWQnXSkgfHwgKGltcGFjdCBhcyBhbnkpLmlkO1xuICB9XG5cbiAgcHVibGljIGN5Y2xlTGFiZWwoeyAnQGlkJzogaWQsIG5hbWUgfTogYW55KSB7XG4gICAgcmV0dXJuIG5hbWUgfHwgKHRoaXMuY3ljbGVzIHx8IFtdKS5maW5kKHYgPT4gdlsnQGlkJ10gPT09IGlkKT8ubmFtZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZW5hYmxlQnJlYWtkb3duKCkge1xuICAgIHJldHVybiAhdGhpcy5pc09yaWdpbmFsICYmIHRoaXMuaW1wYWN0QXNzZXNzbWVudHMubGVuZ3RoID09PSAxICYmIHRoaXMua2V5ID09PSAnaW1wYWN0cyc7XG4gIH1cblxuICAvLyBSZWNhbGN1bGF0aW9uIGxvZ3NcblxuICBwdWJsaWMgYXN5bmMgc2hvd1JlY2FsY3VsYXRpb25Mb2dzKCkge1xuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgLy8gbWFrZSBzdXJlIG9yaWdpbmFsIGRhdGEgaXMgYWxzbyBsb2FkZWRcbiAgICBhd2FpdCB0aGlzLmxvYWREYXRhU3RhdGUoRGF0YVN0YXRlLm9yaWdpbmFsKTtcbiAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLnNlbGVjdGVkVmlldyA9IFZpZXcubG9ncztcbiAgfVxuXG4gIC8vIENvbXBhcmVcblxuICBwcml2YXRlIHNlbGVjdEFsbEltcGFjdHMoKSB7XG4gICAgdGhpcy5zZWxlY3RlZEltcGFjdEFzc2Vzc21lbnRzID0gdGhpcy5pbXBhY3RBc3Nlc3NtZW50cy5zbGljZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSB1bnNlbGVjdEFsbEltcGFjdHMoKSB7XG4gICAgdGhpcy5zZWxlY3RlZEltcGFjdEFzc2Vzc21lbnRzID0gW107XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlQWxsSW1wYWN0cygpIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEltcGFjdEFzc2Vzc21lbnRzLmxlbmd0aCA/IHRoaXMuc2VsZWN0QWxsSW1wYWN0cygpIDogdGhpcy51bnNlbGVjdEFsbEltcGFjdHMoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2VsZWN0SW1wYWN0KGltcGFjdDogSUltcGFjdEFzc2Vzc21lbnRKU09OTEQpIHtcbiAgICB0aGlzLnNlbGVjdGVkSW1wYWN0QXNzZXNzbWVudHMgPSBbXG4gICAgICAuLi50aGlzLnNlbGVjdGVkSW1wYWN0QXNzZXNzbWVudHMsXG4gICAgICBpbXBhY3RcbiAgICBdO1xuICB9XG5cbiAgcHJpdmF0ZSB1bnNlbGVjdEltcGFjdChpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5zZWxlY3RlZEltcGFjdEFzc2Vzc21lbnRzLnNwbGljZShpbmRleCwgMSk7XG4gICAgdGhpcy5zZWxlY3RlZEltcGFjdEFzc2Vzc21lbnRzID0gdGhpcy5zZWxlY3RlZEltcGFjdEFzc2Vzc21lbnRzLnNsaWNlKCk7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlSW1wYWN0KGltcGFjdDogSUltcGFjdEFzc2Vzc21lbnRKU09OTEQpIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuc2VsZWN0ZWRJbXBhY3RBc3Nlc3NtZW50cy5pbmRleE9mKGltcGFjdCk7XG4gICAgcmV0dXJuIGluZGV4ID49IDAgPyB0aGlzLnVuc2VsZWN0SW1wYWN0KGluZGV4KSA6IHRoaXMuc2VsZWN0SW1wYWN0KGltcGFjdCk7XG4gIH1cblxuICBwdWJsaWMgaXNTZWxlY3RlZChpbXBhY3Q6IElJbXBhY3RBc3Nlc3NtZW50SlNPTkxEKSB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRJbXBhY3RBc3Nlc3NtZW50cy5pbmNsdWRlcyhpbXBhY3QpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdWdnZXN0KHRlcm06IHN0cmluZykge1xuICAgIHJldHVybiB0ZXJtLmxlbmd0aCA8IE1JTl9UWVBFQUhFQURfTEVOR1RIID9cbiAgICAgIG9mKFtdKSA6XG4gICAgICB0aGlzLnNlYXJjaFNlcnZpY2Uuc3VnZ2VzdCh0ZXJtLCBOb2RlVHlwZS5JbXBhY3RBc3Nlc3NtZW50LCBbXSwge1xuICAgICAgICBib29sOiB7XG4gICAgICAgICAgbXVzdDogW1xuICAgICAgICAgICAgbWF0Y2hUeXBlKE5vZGVUeXBlLkltcGFjdEFzc2Vzc21lbnQpLFxuICAgICAgICAgICAgbWF0Y2hBZ2dyZWdhdGVkUXVlcnlcbiAgICAgICAgICBdLFxuICAgICAgICAgIG11c3Rfbm90OiB0aGlzLmltcGFjdEFzc2Vzc21lbnRzLm1hcCgoeyAnQGlkJzogaWQgfSkgPT4gbWF0Y2hFeGFjdFF1ZXJ5KCdAaWQnLCBpZCkpLFxuICAgICAgICAgIHNob3VsZDogW1xuICAgICAgICAgICAgbWF0Y2hQaHJhc2VRdWVyeSh0ZXJtLCAxMDAsICdAaWQnLCAnbmFtZScsICdjeWNsZS5uYW1lJyksXG4gICAgICAgICAgICBtYXRjaFBocmFzZVByZWZpeFF1ZXJ5KHRlcm0sIDIwLCAnQGlkJywgJ25hbWUnLCAnY3ljbGUubmFtZScpLFxuICAgICAgICAgICAgbWF0Y2hCb29sUHJlZml4UXVlcnkodGVybSwgMTAsICdAaWQnLCAnbmFtZScsICdjeWNsZS5uYW1lJylcbiAgICAgICAgICBdLFxuICAgICAgICAgIG1pbmltdW1fc2hvdWxkX21hdGNoOiAxXG4gICAgICAgIH1cbiAgICAgIH0sIDEwLCBbJ2N5Y2xlLm5hbWUnLCAnY291bnRyeS5uYW1lJywgJ3Byb2R1Y3QubmFtZScsICdlbmREYXRlJ10pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2FkSW1wYWN0KGlkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBpbXBhY3QgPSBhd2FpdCB0aGlzLm5vZGVTZXJ2aWNlLmdldDxJSW1wYWN0QXNzZXNzbWVudEpTT05MRD4oe1xuICAgICAgJ0B0eXBlJzogTm9kZVR5cGUuSW1wYWN0QXNzZXNzbWVudCxcbiAgICAgICdAaWQnOiBpZCxcbiAgICAgIGRhdGFTdGF0ZTogRGF0YVN0YXRlLnJlY2FsY3VsYXRlZFxuICAgIH0sIGZhbHNlKTtcbiAgICByZXR1cm4gaW1wYWN0WydAaWQnXSA/IHtcbiAgICAgIC4uLmltcGFjdCxcbiAgICAgIGN5Y2xlOiBhd2FpdCB0aGlzLmZldGNoQ3ljbGUoaW1wYWN0KVxuICAgIH0gOiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBmZXRjaEN5Y2xlKHsgY3ljbGUgfTogSUltcGFjdEFzc2Vzc21lbnRKU09OTEQpIHtcbiAgICByZXR1cm4gIWN5Y2xlIHx8IGN5Y2xlLm5hbWUgPyBjeWNsZTogdGhpcy5ub2RlU2VydmljZS5nZXQ8Q3ljbGU+KHtcbiAgICAgICdAdHlwZSc6IE5vZGVUeXBlLkN5Y2xlLFxuICAgICAgJ0BpZCc6IGN5Y2xlWydAaWQnXVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGFkZEltcGFjdCgpIHtcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgIGNvbnN0IHsgc2VhcmNoOiB7ICdAaWQnOiBpZCwgbmFtZSB9IH0gPSB0aGlzLmZvcm0udmFsdWU7XG4gICAgY29uc3QgaW1wYWN0ID0gYXdhaXQgdGhpcy5sb2FkSW1wYWN0KGlkKTtcbiAgICBpZiAoaW1wYWN0KSB7XG4gICAgICB0aGlzLmltcGFjdEFzc2Vzc21lbnRzID0gW1xuICAgICAgICAuLi50aGlzLmltcGFjdEFzc2Vzc21lbnRzLFxuICAgICAgICBpbXBhY3RcbiAgICAgIF07XG4gICAgICB0aGlzLnNlbGVjdEltcGFjdChpbXBhY3QpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmVycm9yKGBFcnJvciB3aGlsZSBsb2FkaW5nICR7bmFtZSB8fCBpZH1gKTtcbiAgICB9XG5cbiAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcblxuICAgIHRoaXMuZm9ybS5nZXQoJ3NlYXJjaCcpPy5zZXRWYWx1ZSgnJyk7XG4gICAgdGhpcy5mb3JtLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICByZXR1cm4gdGhpcy51cGRhdGUoKTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImluZGljYXRvcnMubGVuZ3RoOyBlbHNlIGVtcHR5VGFibGVcIj5cbiAgPGRpdiBjbGFzcz1cImNvbHVtbnMgaXMtdmFyaWFibGUgaXMtMiBtLTBcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sdW1uIGlzLWhpZGRlbi1tb2JpbGVcIj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sdW1uIGlzLW5hcnJvd1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIGhhcy1hZGRvbnNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uIGlzLXNtYWxsXCIgW2NsYXNzLmlzLWFjdGl2ZV09XCJzZWxlY3RlZFZpZXcgPT09IFZpZXcudGFibGVcIiAoY2xpY2spPVwic2VsZWN0ZWRWaWV3ID0gVmlldy50YWJsZVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uIGlzLXNtYWxsXCI+XG4gICAgICAgICAgICAgIDxmYS1pY29uIGljb249XCJsaXN0XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9mYS1pY29uPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4+VGFibGUgdmlldzwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sXCIgKm5nSWY9XCJpbXBhY3RBc3Nlc3NtZW50cy5sZW5ndGggPiAxXCI+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbiBpcy1zbWFsbFwiIFtjbGFzcy5pcy1hY3RpdmVdPVwic2VsZWN0ZWRWaWV3ID09PSBWaWV3LmNoYXJ0XCIgKGNsaWNrKT1cInNlbGVjdGVkVmlldyA9IFZpZXcuY2hhcnRcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbiBpcy1zbWFsbFwiPlxuICAgICAgICAgICAgICA8ZmEtaWNvbiBpY29uPVwiY2hhcnQtYmFyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9mYS1pY29uPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4+Q2hhcnQgdmlldzwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sXCIgKm5nSWY9XCJlbmFibGVCcmVha2Rvd25cIj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uIGlzLXNtYWxsXCIgW2NsYXNzLmlzLWFjdGl2ZV09XCJzZWxlY3RlZFZpZXcgPT09IFZpZXcuYnJlYWtkb3duXCIgKGNsaWNrKT1cInNlbGVjdGVkVmlldyA9IFZpZXcuYnJlYWtkb3duXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb24gaXMtc21hbGxcIj5cbiAgICAgICAgICAgICAgPGZhLWljb24gaWNvbj1cImNoYXJ0LWJhclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvZmEtaWNvbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuPkJyZWFrZG93biB2aWV3PC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIiAqbmdJZj1cIiFpc09yaWdpbmFsICYmIGltcGFjdEFzc2Vzc21lbnRzLmxlbmd0aCA9PT0gMVwiPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24gaXMtc21hbGxcIiBbY2xhc3MuaXMtYWN0aXZlXT1cInNlbGVjdGVkVmlldyA9PT0gVmlldy5sb2dzXCIgKGNsaWNrKT1cInNob3dSZWNhbGN1bGF0aW9uTG9ncygpXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb24gaXMtc21hbGxcIj5cbiAgICAgICAgICAgICAgPGZhLWljb24gaWNvbj1cImNhbGN1bGF0b3JcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2ZhLWljb24+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3Bhbj5SZWNhbGN1bGF0aW9ucyBsb2dzPC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwicHgtMyBwYi0zXCIgW2NsYXNzLmlzLWhpZGRlbl09XCJzZWxlY3RlZFZpZXcgIT09IFZpZXcudGFibGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwiaGFzLXRleHQtcmlnaHQgbWItMlwiPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbiBpcy1kYXJrIGlzLW91dGxpbmVkIGlzLXNtYWxsXCIgKGNsaWNrKT1cInNob3dEb3dubG9hZCA9IHRydWVcIj5cbiAgICAgICAgPGZhLWljb24gaWNvbj1cImRvd25sb2FkXCI+PC9mYS1pY29uPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInBsLTJcIj5Eb3dubG9hZCAoQ1NWKTwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cInRhYmxlLWNvbnRhaW5lciBkYXRhLXRhYmxlLWNvbnRhaW5lciBtYi0xXCIgKmJpbmRPbmNlPVwiaW5kaWNhdG9yc1wiPlxuICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgaXMtbmFycm93IGRhdGEtdGFibGUgaGFzLWNoaWxkcmVuLXt7aW5kaWNhdG9ycy5sZW5ndGggKyAxfX1cIj5cbiAgICAgICAgPHRoZWFkPlxuICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgIDx0aCBjbGFzcz1cIndpZHRoLWF1dG9cIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdCBpcy1zbWFsbFwiICpuZ0lmPVwiZW5hYmxlRmlsdGVyTWV0aG9kTW9kZWxcIj5cbiAgICAgICAgICAgICAgICA8c2VsZWN0IG5hbWU9XCJzZWxlY3RlZE1ldGhvZE1vZGVsXCJcbiAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidXBkYXRlSW1wYWN0cygpXCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZE1ldGhvZE1vZGVsXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cInVuZGVmaW5lZFwiPkZpbHRlciBNb2RlbDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgdGVybSBvZiBtZXRob2RNb2RlbHNcIiBbbmdWYWx1ZV09XCJ0ZXJtXCI+e3t0ZXJtLm5hbWV9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICA8dGg+PC90aD5cbiAgICAgICAgICAgIDx0aCAqbmdGb3I9XCJsZXQgaW5kaWNhdG9yIG9mIGluZGljYXRvcnNcIlxuICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCJpbmRpY2F0b3IudmFsdWUudGVybS5uYW1lXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGhlLW5vZGUtbGluayBbbm9kZV09XCJpbmRpY2F0b3IudmFsdWUudGVybVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7aW5kaWNhdG9yLnZhbHVlLnRlcm0ubmFtZSB8IGVsbGlwc2lzOjMwfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvaGUtbm9kZS1saW5rPlxuICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgIDx0aCBjbGFzcz1cIndpZHRoLWF1dG9cIj5cbiAgICAgICAgICAgICAgPGEgW2hyZWZdPVwiYmFzZVVybCArICcvc2NoZW1hL0ltcGFjdEFzc2Vzc21lbnQjZnVuY3Rpb25hbFVuaXQnXCIgdGFyZ2V0PVwiX2JsYW5rXCI+RnVuY3Rpb25hbCB1bml0OjwvYT5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwbC0xXCI+MSBrZzwvc3Bhbj5cbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICA8dGg+UHJvZHVjdDwvdGg+XG4gICAgICAgICAgICA8dGggKm5nRm9yPVwibGV0IGluZGljYXRvciBvZiBpbmRpY2F0b3JzXCJcbiAgICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwiaW5kaWNhdG9yLnZhbHVlLnRlcm0udW5pdHNcIlxuICAgICAgICAgICAgPnt7aW5kaWNhdG9yLnZhbHVlLnRlcm0udW5pdHN9fTwvdGg+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC90aGVhZD5cbiAgICAgICAgPHRib2R5PlxuICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgaW1wYWN0QXNzZXNzbWVudCBvZiBpbXBhY3RBc3Nlc3NtZW50czsgdHJhY2tCeTogdHJhY2tCeUlkOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJ3aWR0aC1hdXRvXCIgW2F0dHIudGl0bGVdPVwiaW1wYWN0TmFtZShpbXBhY3RBc3Nlc3NtZW50KVwiIFtzdHlsZS5ib3JkZXItbGVmdC1jb2xvcl09XCJpdGVtQ29sb3IoaSlcIj5cbiAgICAgICAgICAgICAgPGxhYmVsICpuZ0lmPVwiZW5hYmxlQ29tcGFyZVwiIGNsYXNzPVwiaXMtaW5saW5lLWJsb2NrIGNoZWNrYm94XCI+XG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGNsYXNzPVwic2VsZWN0b3JcIlxuICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVJbXBhY3QoaW1wYWN0QXNzZXNzbWVudClcIlxuICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXNTZWxlY3RlZChpbXBhY3RBc3Nlc3NtZW50KVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICA8aGUtbm9kZS1saW5rIGNsYXNzPVwiaXMtaW5saW5lLWJsb2NrXCIgW25vZGVdPVwiaW1wYWN0QXNzZXNzbWVudFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaXMtbm93cmFwIGhhcy10ZXh0LWVsbGlwc2lzXCI+e3tpICsgMX19LiB7e2ltcGFjdE5hbWUoaW1wYWN0QXNzZXNzbWVudCl9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9oZS1ub2RlLWxpbms+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPHRkIFthdHRyLnRpdGxlXT1cImltcGFjdEFzc2Vzc21lbnQucHJvZHVjdD8ubmFtZVwiPlxuICAgICAgICAgICAgICA8aGUtbm9kZS1saW5rICpuZ0lmPVwiaW1wYWN0QXNzZXNzbWVudC5wcm9kdWN0XCIgW25vZGVdPVwiaW1wYWN0QXNzZXNzbWVudC5wcm9kdWN0XCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3tpbXBhY3RBc3Nlc3NtZW50LnByb2R1Y3QubmFtZSB8IGVsbGlwc2lzOjMwfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvaGUtbm9kZS1saW5rPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImlzLW5vd3JhcFwiICpuZ0Zvcj1cImxldCBpbmRpY2F0b3Igb2YgaW5kaWNhdG9yc1wiPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImluZGljYXRvci52YWx1ZS52YWx1ZXNbaW1wYWN0QXNzZXNzbWVudFsnQGlkJ11dOyBlbHNlIGVtcHR5VmFsdWVcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidHJpZ2dlci1wb3BvdmVyXCJcbiAgICAgICAgICAgICAgICBbbmdiUG9wb3Zlcl09XCJkZXRhaWxzXCIgW2F1dG9DbG9zZV09XCInb3V0c2lkZSdcIlxuICAgICAgICAgICAgICAgIHRyaWdnZXJzPVwibWFudWFsXCIgI3A9XCJuZ2JQb3BvdmVyXCIgcGxhY2VtZW50PVwibGVmdFwiIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVQb3BvdmVyKHAsIHsgZGF0YTogaW5kaWNhdG9yLnZhbHVlLnZhbHVlc1tpbXBhY3RBc3Nlc3NtZW50WydAaWQnXV0sIGltcGFjdEFzc2Vzc21lbnQ6IGltcGFjdEFzc2Vzc21lbnQsIGtleToga2V5IH0pXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuIHBvaW50ZXI+e3twcm9wZXJ0eVZhbHVlKGluZGljYXRvci52YWx1ZS52YWx1ZXNbaW1wYWN0QXNzZXNzbWVudFsnQGlkJ11dLnZhbHVlLCBrZXkgPT09ICdpbXBhY3RzJykgfCBwcmVjaXNpb246MyB8IGRlZmF1bHQ6Jy0nfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPGhlLWJsYW5rLW5vZGUtc3RhdGUgY2xhc3M9XCJtbC0xXCJcbiAgICAgICAgICAgICAgICAgIFtub2RlXT1cImluZGljYXRvci52YWx1ZS52YWx1ZXNbaW1wYWN0QXNzZXNzbWVudFsnQGlkJ11dLm5vZGVzWzBdXCJcbiAgICAgICAgICAgICAgICAgIGtleT1cInZhbHVlXCJcbiAgICAgICAgICAgICAgICAgIFtzdGF0ZV09XCJpbXBhY3RBc3Nlc3NtZW50LmFnZ3JlZ2F0ZWQgPyAnYWdncmVnYXRlZCcgOiBudWxsXCJcbiAgICAgICAgICAgICAgICA+PC9oZS1ibGFuay1ub2RlLXN0YXRlPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDwvdHI+XG4gICAgICAgIDwvdGJvZHk+XG4gICAgICA8L3RhYmxlPlxuICAgIDwvZGl2PlxuXG4gICAgPGhlLWJsYW5rLW5vZGUtc3RhdGUtbm90aWNlIFtkYXRhU3RhdGVdPVwiZGF0YVN0YXRlXCI+PC9oZS1ibGFuay1ub2RlLXN0YXRlLW5vdGljZT5cblxuICAgIDxmb3JtICpuZ0lmPVwiZW5hYmxlQ29tcGFyZVwiIGNsYXNzPVwibXQtMlwiIFtmb3JtR3JvdXBdPVwiZm9ybVwiIChzdWJtaXQpPVwiZm9ybS52YWxpZCAmJiBhZGRJbXBhY3QoKVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIGhhcy1hZGRvbnNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImJ1dHRvbiBpcy1zbWFsbCBpcy1zdGF0aWNcIj5Db21wYXJlIHdpdGggQWdncmVnYXRlZCBJbXBhY3QgQXNzZXNzbWVudDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sIGlzLWV4cGFuZGVkXCIgW2NsYXNzLmhhcy1pY29ucy1yaWdodF09XCJzdWdnZXN0aW5nIHx8IGxvYWRpbmdcIj5cbiAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dCBpcy1zbWFsbFwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBieSBuYW1lIG9yIGlkXCJcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInNlYXJjaFwiIG5hbWU9XCJzZWFyY2hcIlxuXG4gICAgICAgICAgICBbbmdiVHlwZWFoZWFkXT1cInN1Z2dlc3RJbXBhY3RBc3Nlc3NtZW50XCJcbiAgICAgICAgICAgIFtpbnB1dEZvcm1hdHRlcl09XCJmb3JtYXR0ZXJcIlxuICAgICAgICAgICAgW3Jlc3VsdFRlbXBsYXRlXT1cInN1Z2dlc3Rpb25cIlxuICAgICAgICAgICAgW2ZvY3VzRmlyc3RdPVwidHJ1ZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbiBpcy1zbWFsbCBpcy1yaWdodCBoYXMtdGV4dC1ncmV5LWRhcmtcIiBbY2xhc3MuaXMtaGlkZGVuXT1cIiEoc3VnZ2VzdGluZyB8fCBsb2FkaW5nKVwiPlxuICAgICAgICAgICAgPGZhLWljb24gaWNvbj1cInNwaW5uZXJcIiBbcHVsc2VdPVwidHJ1ZVwiIHNpemU9XCJzbVwiPjwvZmEtaWNvbj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29udHJvbFwiPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24gaXMtc21hbGxcIiB0eXBlPVwic3VibWl0XCIgW2Rpc2FibGVkXT1cInN1Z2dlc3RpbmcgfHwgbG9hZGluZ1wiPlxuICAgICAgICAgICAgPGZhLWljb24gaWNvbj1cInBsdXNcIj48L2ZhLWljb24+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9mb3JtPlxuICA8L2Rpdj5cblxuICA8aGUtaW1wYWN0LWFzc2Vzc21lbnRzLWluZGljYXRvci1icmVha2Rvd24tY2hhcnQgKm5nSWY9XCJzZWxlY3RlZFZpZXcgPT09IFZpZXcuYnJlYWtkb3duXCJcbiAgICBbaW1wYWN0QXNzZXNzbWVudF09XCJpbXBhY3RBc3Nlc3NtZW50c1swXVwiXG4gICAgW2luZGljYXRvcnNdPVwiaW1wYWN0QXNzZXNzbWVudHNbMF1ba2V5XVwiXG4gID48L2hlLWltcGFjdC1hc3Nlc3NtZW50cy1pbmRpY2F0b3ItYnJlYWtkb3duLWNoYXJ0PlxuXG4gIDxoZS1pbXBhY3QtYXNzZXNzbWVudHMtaW5kaWNhdG9ycy1jaGFydCAqbmdJZj1cImltcGFjdEFzc2Vzc21lbnRzLmxlbmd0aCA+IDFcIiBbY2xhc3MuaXMtaGlkZGVuXT1cInNlbGVjdGVkVmlldyAhPT0gVmlldy5jaGFydFwiXG4gICAgW2tleV09XCJrZXlcIlxuICAgIFtpbXBhY3RBc3Nlc3NtZW50c109XCJzZWxlY3RlZEltcGFjdEFzc2Vzc21lbnRzXCJcbiAgICBbZmlsdGVyVGVybVR5cGVzXT1cImZpbHRlclRlcm1UeXBlc1wiXG4gID48L2hlLWltcGFjdC1hc3Nlc3NtZW50cy1pbmRpY2F0b3JzLWNoYXJ0PlxuXG4gIDxoZS1pbXBhY3QtYXNzZXNzbWVudHMtcHJvZHVjdHMtbG9ncyAqbmdJZj1cInNlbGVjdGVkVmlldyA9PT0gVmlldy5sb2dzICYmICFpc09yaWdpbmFsXCJcbiAgICBba2V5XT1cImtleVwiXG4gICAgW2ltcGFjdEFzc2Vzc21lbnRdPVwiaW1wYWN0QXNzZXNzbWVudHNbMF1cIlxuICAgIFtmaWx0ZXJUZXJtVHlwZXNdPVwiZmlsdGVyVGVybVR5cGVzXCJcbiAgICBbb3JpZ2luYWxWYWx1ZXNdPVwib3JpZ2luYWxWYWx1ZXNbMF1ba2V5XVwiXG4gICAgW3JlY2FsY3VsYXRlZFZhbHVlc109XCJpbXBhY3RBc3Nlc3NtZW50c1swXVtrZXldXCJcbiAgPjwvaGUtaW1wYWN0LWFzc2Vzc21lbnRzLXByb2R1Y3RzLWxvZ3M+XG48L25nLWNvbnRhaW5lcj5cblxuPGhlLW5vZGUtY3N2LWV4cG9ydC1jb25maXJtICpuZ0lmPVwic2hvd0Rvd25sb2FkXCJcbiAgW25vZGVzXT1cImltcGFjdEFzc2Vzc21lbnRzXCIgW2ZpbGVuYW1lXT1cIidpbXBhY3QtJyArIGtleSArICcuY3N2J1wiIFtpc1VwbG9hZF09XCJmYWxzZVwiXG4gIFtoZWFkZXJLZXlzXT1cIlsnaW1wYWN0QXNzZXNzbWVudC5pZCcsICdpbXBhY3RBc3Nlc3NtZW50LkBpZCcsICdpbXBhY3RBc3Nlc3NtZW50LicgKyBrZXkgKyAnLiddXCJcbiAgKGNsb3NlZCk9XCJzaG93RG93bmxvYWQgPSBmYWxzZVwiXG4+PC9oZS1ub2RlLWNzdi1leHBvcnQtY29uZmlybT5cblxuPG5nLXRlbXBsYXRlICNlbXB0eVRhYmxlPlxuICA8ZGl2IGNsYXNzPVwicGFuZWwtYmxvY2tcIj5cbiAgICA8c3Bhbj5ObyBkYXRhPC9zcGFuPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZW1wdHlWYWx1ZT5cbiAgPHNwYW4+LTwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZGV0YWlscyBsZXQtbm9kZT1cImltcGFjdEFzc2Vzc21lbnRcIiBsZXQtZGF0YT1cImRhdGFcIiBsZXQta2V5PVwia2V5XCI+XG4gIDxwICpiaW5kT25jZT1cIm5vZGVcIj5cbiAgICA8Yj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiZGF0YS5jeWNsZVwiPnt7Y3ljbGVMYWJlbChub2RlLmN5Y2xlKX19PC9zcGFuPlxuICAgICAgPHNwYW4gKm5nSWY9XCIhZGF0YS5jeWNsZVwiPnt7ZGF0YS5uYW1lfX08L3NwYW4+XG4gICAgPC9iPlxuICA8L3A+XG4gIDxoZS1ub2RlLXZhbHVlLWRldGFpbHNcbiAgICBbZGF0YV09XCJkYXRhXCIgW25vZGVUeXBlXT1cIm5vZGVbJ0B0eXBlJ11cIiBbZGF0YUtleV09XCJrZXlcIlxuICA+PC9oZS1ub2RlLXZhbHVlLWRldGFpbHM+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3N1Z2dlc3Rpb24gbGV0LWltcGFjdD1cInJlc3VsdFwiIGxldC10PVwidGVybVwiPlxuICA8ZGl2IGNsYXNzPVwiaXMtYmxvY2tcIj5cbiAgICA8bmdiLWhpZ2hsaWdodCBbcmVzdWx0XT1cImltcGFjdC5uYW1lIHx8IGltcGFjdC5jeWNsZS5uYW1lXCIgW3Rlcm1dPVwidFwiPjwvbmdiLWhpZ2hsaWdodD5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJjb2x1bW5zIGlzLWZsZXhcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sdW1uXCIgKm5nSWY9XCJpbXBhY3QuY291bnRyeVwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJwci0xIGhhcy10ZXh0LXVuZGVybGluZVwiPkNvdW50cnk6PC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJpcy1pbmxpbmUtZmxleFwiPjxuZ2ItaGlnaGxpZ2h0IFtyZXN1bHRdPVwiaW1wYWN0LmNvdW50cnkubmFtZVwiIFt0ZXJtXT1cInRcIj48L25nYi1oaWdobGlnaHQ+PC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb2x1bW5cIiAqbmdJZj1cImltcGFjdC5wcm9kdWN0XCI+XG4gICAgICA8c3BhbiBjbGFzcz1cInByLTEgaGFzLXRleHQtdW5kZXJsaW5lXCI+UHJvZHVjdDo8L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cImlzLWlubGluZS1mbGV4XCI+PG5nYi1oaWdobGlnaHQgW3Jlc3VsdF09XCJpbXBhY3QucHJvZHVjdC5uYW1lXCIgW3Rlcm1dPVwidFwiPjwvbmdiLWhpZ2hsaWdodD48L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbHVtblwiICpuZ0lmPVwiaW1wYWN0LmVuZERhdGVcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwicHItMSBoYXMtdGV4dC11bmRlcmxpbmVcIj5EYXRlOjwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiaXMtaW5saW5lLWZsZXhcIj48bmdiLWhpZ2hsaWdodCBbcmVzdWx0XT1cImltcGFjdC5lbmREYXRlXCIgW3Rlcm1dPVwidFwiPjwvbmdiLWhpZ2hsaWdodD48L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
252
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wYWN0LWFzc2Vzc21lbnRzLXByb2R1Y3RzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9pbXBhY3QtYXNzZXNzbWVudHMvaW1wYWN0LWFzc2Vzc21lbnRzLXByb2R1Y3RzL2ltcGFjdC1hc3Nlc3NtZW50cy1wcm9kdWN0cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvaW1wYWN0LWFzc2Vzc21lbnRzL2ltcGFjdC1hc3Nlc3NtZW50cy1wcm9kdWN0cy9pbXBhY3QtYXNzZXNzbWVudHMtcHJvZHVjdHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUMzRSxPQUFPLEVBQWUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekQsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxFQUNMLFFBQVEsRUFDVCxNQUFNLHNCQUFzQixDQUFDO0FBRTlCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUc3QyxPQUFPLEVBQ0wsU0FBUyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxzQkFBc0IsRUFBRSxvQkFBb0IsRUFBRSxvQkFBb0IsRUFDakgsTUFBTSwyQkFBMkIsQ0FBQztBQUduQyxPQUFPLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBZ0IsWUFBWSxFQUFFLE9BQU8sRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFUckgsTUFBTSxPQUFPLEdBQUcsT0FB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QUFFLENBQUM7O0tBQ3RCOztnSUFqUFUsa0NBQWtDO29IQUFsQyxrQ0FBa0MsNlRDakMvQyx5OFRBME5BOzRGRHpMYSxrQ0FBa0M7a0JBTDlDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdDQUFnQztvQkFDMUMsV0FBVyxFQUFFLDhDQUE4QztvQkFDM0QsU0FBUyxFQUFFLENBQUMsOENBQThDLENBQUM7aUJBQzVEO3lMQU1TLE1BQU07c0JBRGIsS0FBSztnQkFJQyxpQkFBaUI7c0JBRHZCLEtBQUs7Z0JBR0MsR0FBRztzQkFEVCxLQUFLO2dCQUdDLFNBQVM7c0JBRGYsS0FBSztnQkFHQyxhQUFhO3NCQURuQixLQUFLO2dCQUdDLGVBQWU7c0JBRHJCLEtBQUs7Z0JBR0MsdUJBQXVCO3NCQUQ3QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IERhdGFTdGF0ZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvYXBpJztcbmltcG9ydCB7XG4gIE5vZGVUeXBlLCBJQ3ljbGVKU09OTEQsIElJbXBhY3RBc3Nlc3NtZW50SlNPTkxELCBJbmRpY2F0b3IsIEN5Y2xlLCBUZXJtVGVybVR5cGUsIFRlcm1cbn0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9zY2hlbWEnO1xuY29uc3Qgb3JkZXJCeSA9IHJlcXVpcmUoJ2xvZGFzaC5vcmRlcmJ5Jyk7XG5pbXBvcnQgeyB1bmlxdWUgfSBmcm9tICdAaGVzdGlhLWVhcnRoL3V0aWxzJztcblxuaW1wb3J0IHsgSGVOb2RlU2VydmljZSB9IGZyb20gJy4uLy4uL25vZGUvbm9kZS5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIG1hdGNoVHlwZSwgbWF0Y2hFeGFjdFF1ZXJ5LCBtYXRjaFBocmFzZVF1ZXJ5LCBtYXRjaFBocmFzZVByZWZpeFF1ZXJ5LCBtYXRjaEJvb2xQcmVmaXhRdWVyeSwgbWF0Y2hBZ2dyZWdhdGVkUXVlcnlcbn0gZnJvbSAnLi4vLi4vc2VhcmNoL3NlYXJjaC5tb2RlbCc7XG5pbXBvcnQgeyBIZVNlYXJjaFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZWFyY2gvc2VhcmNoLnNlcnZpY2UnO1xuaW1wb3J0IHsgSGVUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb21tb24vdG9hc3Quc2VydmljZSc7XG5pbXBvcnQgeyBwcm9wZXJ0eVZhbHVlLCBncm91cE5vZGVzQnlUZXJtLCBpdGVtQ29sb3IsIElHcm91cGVkS2V5cywgZ3JvdXBwZWRLZXlzLCBiYXNlVXJsIH0gZnJvbSAnLi4vLi4vY29tbW9uL3V0aWxzJztcblxuY29uc3QgTUlOX1RZUEVBSEVBRF9MRU5HVEggPSAxO1xuXG5lbnVtIFZpZXcge1xuICB0YWJsZSA9ICd0YWJsZScsXG4gIGNoYXJ0ID0gJ2NoYXJ0JyxcbiAgYnJlYWtkb3duID0gJ2JyZWFrZG93bicsXG4gIGxvZ3MgPSAnbG9ncydcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaGUtaW1wYWN0LWFzc2Vzc21lbnRzLXByb2R1Y3RzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ltcGFjdC1hc3Nlc3NtZW50cy1wcm9kdWN0cy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ltcGFjdC1hc3Nlc3NtZW50cy1wcm9kdWN0cy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEltcGFjdEFzc2Vzc21lbnRzUHJvZHVjdHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBwcml2YXRlIGRhdGFTdGF0ZVZhbHVlczoge1xuICAgIFtkYXRhU3RhdGUgaW4gRGF0YVN0YXRlXT86IElJbXBhY3RBc3Nlc3NtZW50SlNPTkxEW107XG4gIH0gPSB7fTtcbiAgQElucHV0KClcbiAgcHJpdmF0ZSBjeWNsZXM/OiBJQ3ljbGVKU09OTERbXTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgaW1wYWN0QXNzZXNzbWVudHM6IElJbXBhY3RBc3Nlc3NtZW50SlNPTkxEW10gPSBbXTtcbiAgQElucHV0KClcbiAgcHVibGljIGtleTogJ2ltcGFjdHMnIHwgJ2VtaXNzaW9uc1Jlc291cmNlVXNlJyA9ICdpbXBhY3RzJztcbiAgQElucHV0KClcbiAgcHVibGljIGRhdGFTdGF0ZT86IERhdGFTdGF0ZTtcbiAgQElucHV0KClcbiAgcHVibGljIGVuYWJsZUNvbXBhcmUgPSB0cnVlO1xuICBASW5wdXQoKVxuICBwdWJsaWMgZmlsdGVyVGVybVR5cGVzPzogVGVybVRlcm1UeXBlW107XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBlbmFibGVGaWx0ZXJNZXRob2RNb2RlbCA9IGZhbHNlO1xuXG4gIHB1YmxpYyBwcm9wZXJ0eVZhbHVlID0gcHJvcGVydHlWYWx1ZTtcbiAgcHVibGljIGl0ZW1Db2xvciA9IGl0ZW1Db2xvcjtcbiAgcHVibGljIGJhc2VVcmwgPSBiYXNlVXJsKCk7XG4gIHB1YmxpYyBzaG93RG93bmxvYWQgPSBmYWxzZTtcbiAgcHVibGljIFZpZXcgPSBWaWV3O1xuICBwdWJsaWMgc2VsZWN0ZWRWaWV3ID0gVmlldy50YWJsZTtcblxuICBwdWJsaWMgbWV0aG9kTW9kZWxzOiBUZXJtW10gPSBbXTtcbiAgcHVibGljIHNlbGVjdGVkTWV0aG9kTW9kZWw/OiBUZXJtO1xuXG4gIHB1YmxpYyBpbmRpY2F0b3JzOiBJR3JvdXBlZEtleXM8SW5kaWNhdG9yPltdID0gW107XG5cbiAgLy8gQWRkaW5nIGltcGFjdHMgdG8gY29tcGFyZVxuICBwdWJsaWMgZm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgIHNlYXJjaDogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXVxuICB9KTtcbiAgcHVibGljIHNlbGVjdGVkSW1wYWN0QXNzZXNzbWVudHM6IElJbXBhY3RBc3Nlc3NtZW50SlNPTkxEW10gPSBbXTtcbiAgcHVibGljIGxvYWRpbmcgPSBmYWxzZTtcbiAgcHVibGljIHN1Z2dlc3RpbmcgPSBmYWxzZTtcbiAgcHVibGljIGZvcm1hdHRlciA9ICh7ICdAaWQnOiBpZCB9KSA9PiBpZDtcbiAgcHVibGljIHN1Z2dlc3RJbXBhY3RBc3Nlc3NtZW50ID0gKHRleHQkOiBPYnNlcnZhYmxlPHN0cmluZz4pID0+XG4gICAgdGV4dCQucGlwZShcbiAgICAgIGRlYm91bmNlVGltZSgzMDApLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgIHRhcCgoKSA9PiB0aGlzLnN1Z2dlc3RpbmcgPSB0cnVlKSxcbiAgICAgIHN3aXRjaE1hcCh0ZXJtID0+IHRoaXMuc3VnZ2VzdCh0ZXJtKSksXG4gICAgICB0YXAoKCkgPT4gdGhpcy5zdWdnZXN0aW5nID0gZmFsc2UpXG4gICAgKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIG5vZGVTZXJ2aWNlOiBIZU5vZGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2VhcmNoU2VydmljZTogSGVTZWFyY2hTZXJ2aWNlLFxuICAgIHByaXZhdGUgdG9hc3RTZXJ2aWNlOiBIZVRvYXN0U2VydmljZVxuICApIHt9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmICgnaW1wYWN0QXNzZXNzbWVudHMnIGluIGNoYW5nZXMpIHtcbiAgICAgIHRoaXMuZGF0YVN0YXRlVmFsdWVzW3RoaXMuZGF0YVN0YXRlIV0gPSBjaGFuZ2VzLmltcGFjdEFzc2Vzc21lbnRzLmN1cnJlbnRWYWx1ZS5zbGljZSgpO1xuICAgICAgdGhpcy5zZWxlY3RBbGxJbXBhY3RzKCk7XG4gICAgICByZXR1cm4gdGhpcy51cGRhdGUoKTtcbiAgICB9XG4gICAgaWYgKCdkYXRhU3RhdGUnIGluIGNoYW5nZXMpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRWaWV3ID0gVmlldy50YWJsZTtcbiAgICAgIHJldHVybiB0aGlzLnVwZGF0ZURhdGFTdGF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB0cmFja0J5SWQoX2luZGV4OiBudW1iZXIsIGl0ZW06IElJbXBhY3RBc3Nlc3NtZW50SlNPTkxEKSB7XG4gICAgcmV0dXJuIGl0ZW1bJ0BpZCddO1xuICB9XG5cbiAgcHVibGljIGdldCBpc09yaWdpbmFsKCkge1xuICAgIHJldHVybiB0aGlzLmRhdGFTdGF0ZSA9PT0gRGF0YVN0YXRlLm9yaWdpbmFsO1xuICB9XG5cbiAgcHVibGljIGdldCBvcmlnaW5hbFZhbHVlcygpIHtcbiAgICByZXR1cm4gKHRoaXMuaXNPcmlnaW5hbCA/IG51bGwgOiB0aGlzLmRhdGFTdGF0ZVZhbHVlc1tEYXRhU3RhdGUub3JpZ2luYWxdKSB8fCBbXTtcbiAgfVxuXG4gIHByaXZhdGUgdGVybUFsbG93ZWQodGVybT86IFRlcm0pIHtcbiAgICByZXR1cm4gIXRoaXMuZmlsdGVyVGVybVR5cGVzPy5sZW5ndGggfHwgKHRoaXMuZmlsdGVyVGVybVR5cGVzIHx8IFtdKS5pbmNsdWRlcyh0ZXJtPy50ZXJtVHlwZSEpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGUoKSB7XG4gICAgdGhpcy51cGRhdGVJbXBhY3RzKCk7XG4gICAgdGhpcy5lbmFibGVGaWx0ZXJNZXRob2RNb2RlbCAmJiB0aGlzLnVwZGF0ZU1ldGhvZE1vZGVscygpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVNZXRob2RNb2RlbHMoKSB7XG4gICAgY29uc3QgbWV0aG9kTW9kZWxzID0gdGhpcy5pbXBhY3RBc3Nlc3NtZW50c1xuICAgICAgLmZsYXRNYXAoaW1wYWN0ID0+IChpbXBhY3RbdGhpcy5rZXldIHx8IFtdKS5tYXAodiA9PiB2Lm1ldGhvZE1vZGVsKSlcbiAgICAgIC5maWx0ZXIoQm9vbGVhbik7XG4gICAgdGhpcy5tZXRob2RNb2RlbHMgPSB1bmlxdWUobWV0aG9kTW9kZWxzIGFzIFRlcm1bXSk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlSW1wYWN0cygpIHtcbiAgICBjb25zdCBpbmRpY2F0b3JQZXJJbXBhY3RBc3Nlc3NtZW50ID0gZ3JvdXBOb2Rlc0J5VGVybTxJSW1wYWN0QXNzZXNzbWVudEpTT05MRCwgSW5kaWNhdG9yPihcbiAgICAgIHRoaXMuaW1wYWN0QXNzZXNzbWVudHMsIHRoaXMua2V5LCB0aGlzLm9yaWdpbmFsVmFsdWVzLCB0aGlzLnNlbGVjdGVkTWV0aG9kTW9kZWxcbiAgICApO1xuICAgIHRoaXMuaW5kaWNhdG9ycyA9IG9yZGVyQnkoZ3JvdXBwZWRLZXlzKGluZGljYXRvclBlckltcGFjdEFzc2Vzc21lbnQpLCBbJ3ZhbHVlLm1ldGhvZFRpZXJPcmRlcicsICdrZXknXSwgWydhc2MnLCAnYXNjJ10pXG4gICAgICAuZmlsdGVyKCh7IHZhbHVlIH0pID0+IHRoaXMudGVybUFsbG93ZWQodmFsdWU/LnRlcm0pKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZERhdGFTdGF0ZShkYXRhU3RhdGU6IERhdGFTdGF0ZSkge1xuICAgIHRoaXMuZGF0YVN0YXRlVmFsdWVzW2RhdGFTdGF0ZV0gPSB0aGlzLmRhdGFTdGF0ZVZhbHVlc1tkYXRhU3RhdGVdIHx8IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgdGhpcy5pbXBhY3RBc3Nlc3NtZW50cy5tYXAobm9kZSA9PlxuICAgICAgICB0aGlzLm5vZGVTZXJ2aWNlLmdldDxJSW1wYWN0QXNzZXNzbWVudEpTT05MRD4oe1xuICAgICAgICAgIC4uLm5vZGUsXG4gICAgICAgICAgZGF0YVN0YXRlXG4gICAgICAgIH0pXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdXBkYXRlRGF0YVN0YXRlKCkge1xuICAgIGF3YWl0IHRoaXMubG9hZERhdGFTdGF0ZSh0aGlzLmRhdGFTdGF0ZSEpO1xuICAgIHRoaXMuaW1wYWN0QXNzZXNzbWVudHMgPSB0aGlzLmRhdGFTdGF0ZVZhbHVlc1t0aGlzLmRhdGFTdGF0ZSFdIS5zbGljZSgpO1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZSgpO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZVBvcG92ZXIocG9wb3ZlciwgY29udGV4dCkge1xuICAgIHJldHVybiBwb3BvdmVyLmlzT3BlbigpID8gcG9wb3Zlci5jbG9zZSgpIDogcG9wb3Zlci5vcGVuKGNvbnRleHQpO1xuICB9XG5cbiAgcHVibGljIGltcGFjdE5hbWUoaW1wYWN0OiBJSW1wYWN0QXNzZXNzbWVudEpTT05MRCkge1xuICAgIHJldHVybiBpbXBhY3QubmFtZSB8fCAoaW1wYWN0LmN5Y2xlID8gdGhpcy5jeWNsZUxhYmVsKGltcGFjdC5jeWNsZSkgOiBpbXBhY3RbJ0BpZCddKSB8fCAoaW1wYWN0IGFzIGFueSkuaWQ7XG4gIH1cblxuICBwdWJsaWMgY3ljbGVMYWJlbCh7ICdAaWQnOiBpZCwgbmFtZSB9OiBhbnkpIHtcbiAgICByZXR1cm4gbmFtZSB8fCAodGhpcy5jeWNsZXMgfHwgW10pLmZpbmQodiA9PiB2WydAaWQnXSA9PT0gaWQpPy5uYW1lO1xuICB9XG5cbiAgcHVibGljIGdldCBlbmFibGVCcmVha2Rvd24oKSB7XG4gICAgcmV0dXJuICF0aGlzLmlzT3JpZ2luYWwgJiYgdGhpcy5pbXBhY3RBc3Nlc3NtZW50cy5sZW5ndGggPT09IDEgJiYgdGhpcy5rZXkgPT09ICdpbXBhY3RzJztcbiAgfVxuXG4gIC8vIFJlY2FsY3VsYXRpb24gbG9nc1xuXG4gIHB1YmxpYyBhc3luYyBzaG93UmVjYWxjdWxhdGlvbkxvZ3MoKSB7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAvLyBtYWtlIHN1cmUgb3JpZ2luYWwgZGF0YSBpcyBhbHNvIGxvYWRlZFxuICAgIGF3YWl0IHRoaXMubG9hZERhdGFTdGF0ZShEYXRhU3RhdGUub3JpZ2luYWwpO1xuICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgIHRoaXMuc2VsZWN0ZWRWaWV3ID0gVmlldy5sb2dzO1xuICB9XG5cbiAgLy8gQ29tcGFyZVxuXG4gIHByaXZhdGUgc2VsZWN0QWxsSW1wYWN0cygpIHtcbiAgICB0aGlzLnNlbGVjdGVkSW1wYWN0QXNzZXNzbWVudHMgPSB0aGlzLmltcGFjdEFzc2Vzc21lbnRzLnNsaWNlKCk7XG4gIH1cblxuICBwcml2YXRlIHVuc2VsZWN0QWxsSW1wYWN0cygpIHtcbiAgICB0aGlzLnNlbGVjdGVkSW1wYWN0QXNzZXNzbWVudHMgPSBbXTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVBbGxJbXBhY3RzKCkge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkSW1wYWN0QXNzZXNzbWVudHMubGVuZ3RoID8gdGhpcy5zZWxlY3RBbGxJbXBhY3RzKCkgOiB0aGlzLnVuc2VsZWN0QWxsSW1wYWN0cygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZWxlY3RJbXBhY3QoaW1wYWN0OiBJSW1wYWN0QXNzZXNzbWVudEpTT05MRCkge1xuICAgIHRoaXMuc2VsZWN0ZWRJbXBhY3RBc3Nlc3NtZW50cyA9IFtcbiAgICAgIC4uLnRoaXMuc2VsZWN0ZWRJbXBhY3RBc3Nlc3NtZW50cyxcbiAgICAgIGltcGFjdFxuICAgIF07XG4gIH1cblxuICBwcml2YXRlIHVuc2VsZWN0SW1wYWN0KGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLnNlbGVjdGVkSW1wYWN0QXNzZXNzbWVudHMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB0aGlzLnNlbGVjdGVkSW1wYWN0QXNzZXNzbWVudHMgPSB0aGlzLnNlbGVjdGVkSW1wYWN0QXNzZXNzbWVudHMuc2xpY2UoKTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVJbXBhY3QoaW1wYWN0OiBJSW1wYWN0QXNzZXNzbWVudEpTT05MRCkge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5zZWxlY3RlZEltcGFjdEFzc2Vzc21lbnRzLmluZGV4T2YoaW1wYWN0KTtcbiAgICByZXR1cm4gaW5kZXggPj0gMCA/IHRoaXMudW5zZWxlY3RJbXBhY3QoaW5kZXgpIDogdGhpcy5zZWxlY3RJbXBhY3QoaW1wYWN0KTtcbiAgfVxuXG4gIHB1YmxpYyBpc1NlbGVjdGVkKGltcGFjdDogSUltcGFjdEFzc2Vzc21lbnRKU09OTEQpIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEltcGFjdEFzc2Vzc21lbnRzLmluY2x1ZGVzKGltcGFjdCk7XG4gIH1cblxuICBwcml2YXRlIHN1Z2dlc3QodGVybTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRlcm0ubGVuZ3RoIDwgTUlOX1RZUEVBSEVBRF9MRU5HVEggP1xuICAgICAgb2YoW10pIDpcbiAgICAgIHRoaXMuc2VhcmNoU2VydmljZS5zdWdnZXN0KHRlcm0sIE5vZGVUeXBlLkltcGFjdEFzc2Vzc21lbnQsIFtdLCB7XG4gICAgICAgIGJvb2w6IHtcbiAgICAgICAgICBtdXN0OiBbXG4gICAgICAgICAgICBtYXRjaFR5cGUoTm9kZVR5cGUuSW1wYWN0QXNzZXNzbWVudCksXG4gICAgICAgICAgICBtYXRjaEFnZ3JlZ2F0ZWRRdWVyeVxuICAgICAgICAgIF0sXG4gICAgICAgICAgbXVzdF9ub3Q6IHRoaXMuaW1wYWN0QXNzZXNzbWVudHMubWFwKCh7ICdAaWQnOiBpZCB9KSA9PiBtYXRjaEV4YWN0UXVlcnkoJ0BpZCcsIGlkKSksXG4gICAgICAgICAgc2hvdWxkOiBbXG4gICAgICAgICAgICBtYXRjaFBocmFzZVF1ZXJ5KHRlcm0sIDEwMCwgJ0BpZCcsICduYW1lJywgJ2N5Y2xlLm5hbWUnKSxcbiAgICAgICAgICAgIG1hdGNoUGhyYXNlUHJlZml4UXVlcnkodGVybSwgMjAsICdAaWQnLCAnbmFtZScsICdjeWNsZS5uYW1lJyksXG4gICAgICAgICAgICBtYXRjaEJvb2xQcmVmaXhRdWVyeSh0ZXJtLCAxMCwgJ0BpZCcsICduYW1lJywgJ2N5Y2xlLm5hbWUnKVxuICAgICAgICAgIF0sXG4gICAgICAgICAgbWluaW11bV9zaG91bGRfbWF0Y2g6IDFcbiAgICAgICAgfVxuICAgICAgfSwgMTAsIFsnY3ljbGUubmFtZScsICdjb3VudHJ5Lm5hbWUnLCAncHJvZHVjdC5uYW1lJywgJ2VuZERhdGUnXSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGxvYWRJbXBhY3QoaWQ6IHN0cmluZykge1xuICAgIGNvbnN0IGltcGFjdCA9IGF3YWl0IHRoaXMubm9kZVNlcnZpY2UuZ2V0PElJbXBhY3RBc3Nlc3NtZW50SlNPTkxEPih7XG4gICAgICAnQHR5cGUnOiBOb2RlVHlwZS5JbXBhY3RBc3Nlc3NtZW50LFxuICAgICAgJ0BpZCc6IGlkLFxuICAgICAgZGF0YVN0YXRlOiBEYXRhU3RhdGUucmVjYWxjdWxhdGVkXG4gICAgfSwgZmFsc2UpO1xuICAgIHJldHVybiBpbXBhY3RbJ0BpZCddID8ge1xuICAgICAgLi4uaW1wYWN0LFxuICAgICAgY3ljbGU6IGF3YWl0IHRoaXMuZmV0Y2hDeWNsZShpbXBhY3QpXG4gICAgfSA6IG51bGw7XG4gIH1cblxuICBwcml2YXRlIGZldGNoQ3ljbGUoeyBjeWNsZSB9OiBJSW1wYWN0QXNzZXNzbWVudEpTT05MRCkge1xuICAgIHJldHVybiAhY3ljbGUgfHwgY3ljbGUubmFtZSA/IGN5Y2xlOiB0aGlzLm5vZGVTZXJ2aWNlLmdldDxDeWNsZT4oe1xuICAgICAgJ0B0eXBlJzogTm9kZVR5cGUuQ3ljbGUsXG4gICAgICAnQGlkJzogY3ljbGVbJ0BpZCddXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWRkSW1wYWN0KCkge1xuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgY29uc3QgeyBzZWFyY2g6IHsgJ0BpZCc6IGlkLCBuYW1lIH0gfSA9IHRoaXMuZm9ybS52YWx1ZTtcbiAgICBjb25zdCBpbXBhY3QgPSBhd2FpdCB0aGlzLmxvYWRJbXBhY3QoaWQpO1xuICAgIGlmIChpbXBhY3QpIHtcbiAgICAgIHRoaXMuaW1wYWN0QXNzZXNzbWVudHMgPSBbXG4gICAgICAgIC4uLnRoaXMuaW1wYWN0QXNzZXNzbWVudHMsXG4gICAgICAgIGltcGFjdFxuICAgICAgXTtcbiAgICAgIHRoaXMuc2VsZWN0SW1wYWN0KGltcGFjdCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZXJyb3IoYEVycm9yIHdoaWxlIGxvYWRpbmcgJHtuYW1lIHx8IGlkfWApO1xuICAgIH1cblxuICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuXG4gICAgdGhpcy5mb3JtLmdldCgnc2VhcmNoJyk/LnNldFZhbHVlKCcnKTtcbiAgICB0aGlzLmZvcm0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZSgpO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiaW5kaWNhdG9ycy5sZW5ndGg7IGVsc2UgZW1wdHlUYWJsZVwiPlxuICA8ZGl2IGNsYXNzPVwiY29sdW1ucyBpcy12YXJpYWJsZSBpcy0yIG0tMFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4gaXMtaGlkZGVuLW1vYmlsZVwiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4gaXMtbmFycm93XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgaGFzLWFkZG9uc1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29udHJvbFwiPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24gaXMtc21hbGxcIiBbY2xhc3MuaXMtYWN0aXZlXT1cInNlbGVjdGVkVmlldyA9PT0gVmlldy50YWJsZVwiIChjbGljayk9XCJzZWxlY3RlZFZpZXcgPSBWaWV3LnRhYmxlXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb24gaXMtc21hbGxcIj5cbiAgICAgICAgICAgICAgPGZhLWljb24gaWNvbj1cImxpc3RcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2ZhLWljb24+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3Bhbj5UYWJsZSB2aWV3PC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIiAqbmdJZj1cImltcGFjdEFzc2Vzc21lbnRzLmxlbmd0aCA+IDFcIj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uIGlzLXNtYWxsXCIgW2NsYXNzLmlzLWFjdGl2ZV09XCJzZWxlY3RlZFZpZXcgPT09IFZpZXcuY2hhcnRcIiAoY2xpY2spPVwic2VsZWN0ZWRWaWV3ID0gVmlldy5jaGFydFwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uIGlzLXNtYWxsXCI+XG4gICAgICAgICAgICAgIDxmYS1pY29uIGljb249XCJjaGFydC1iYXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2ZhLWljb24+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3Bhbj5DaGFydCB2aWV3PC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIiAqbmdJZj1cImVuYWJsZUJyZWFrZG93blwiPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24gaXMtc21hbGxcIiBbY2xhc3MuaXMtYWN0aXZlXT1cInNlbGVjdGVkVmlldyA9PT0gVmlldy5icmVha2Rvd25cIiAoY2xpY2spPVwic2VsZWN0ZWRWaWV3ID0gVmlldy5icmVha2Rvd25cIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbiBpcy1zbWFsbFwiPlxuICAgICAgICAgICAgICA8ZmEtaWNvbiBpY29uPVwiY2hhcnQtYmFyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9mYS1pY29uPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4+QnJlYWtkb3duIHZpZXc8L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29udHJvbFwiICpuZ0lmPVwiIWlzT3JpZ2luYWwgJiYgaW1wYWN0QXNzZXNzbWVudHMubGVuZ3RoID09PSAxXCI+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbiBpcy1zbWFsbFwiIFtjbGFzcy5pcy1hY3RpdmVdPVwic2VsZWN0ZWRWaWV3ID09PSBWaWV3LmxvZ3NcIiAoY2xpY2spPVwic2hvd1JlY2FsY3VsYXRpb25Mb2dzKClcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbiBpcy1zbWFsbFwiPlxuICAgICAgICAgICAgICA8ZmEtaWNvbiBpY29uPVwiY2FsY3VsYXRvclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvZmEtaWNvbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuPlJlY2FsY3VsYXRpb25zIGxvZ3M8L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJweC0zIHBiLTNcIiBbY2xhc3MuaXMtaGlkZGVuXT1cInNlbGVjdGVkVmlldyAhPT0gVmlldy50YWJsZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJoYXMtdGV4dC1yaWdodCBtYi0yXCI+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uIGlzLWRhcmsgaXMtb3V0bGluZWQgaXMtc21hbGxcIiAoY2xpY2spPVwic2hvd0Rvd25sb2FkID0gdHJ1ZVwiPlxuICAgICAgICA8ZmEtaWNvbiBpY29uPVwiZG93bmxvYWRcIj48L2ZhLWljb24+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwicGwtMlwiPkRvd25sb2FkIChDU1YpPC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwidGFibGUtY29udGFpbmVyIGRhdGEtdGFibGUtY29udGFpbmVyIG1iLTFcIiAqYmluZE9uY2U9XCJpbmRpY2F0b3JzXCI+XG4gICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBpcy1uYXJyb3cgZGF0YS10YWJsZSBoYXMtY2hpbGRyZW4te3tpbmRpY2F0b3JzLmxlbmd0aCArIDF9fVwiPlxuICAgICAgICA8dGhlYWQ+XG4gICAgICAgICAgPHRyPlxuICAgICAgICAgICAgPHRoIGNsYXNzPVwid2lkdGgtYXV0b1wiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0IGlzLXNtYWxsXCIgKm5nSWY9XCJlbmFibGVGaWx0ZXJNZXRob2RNb2RlbFwiPlxuICAgICAgICAgICAgICAgIDxzZWxlY3QgbmFtZT1cInNlbGVjdGVkTWV0aG9kTW9kZWxcIlxuICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ1cGRhdGVJbXBhY3RzKClcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkTWV0aG9kTW9kZWxcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwidW5kZWZpbmVkXCI+RmlsdGVyIE1vZGVsPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCB0ZXJtIG9mIG1ldGhvZE1vZGVsc1wiIFtuZ1ZhbHVlXT1cInRlcm1cIj57e3Rlcm0ubmFtZX19PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgIDx0aD48L3RoPlxuICAgICAgICAgICAgPHRoICpuZ0Zvcj1cImxldCBpbmRpY2F0b3Igb2YgaW5kaWNhdG9yc1wiXG4gICAgICAgICAgICAgIFthdHRyLnRpdGxlXT1cImluZGljYXRvci52YWx1ZS50ZXJtLm5hbWVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aGUtbm9kZS1saW5rIFtub2RlXT1cImluZGljYXRvci52YWx1ZS50ZXJtXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3tpbmRpY2F0b3IudmFsdWUudGVybS5uYW1lIHwgZWxsaXBzaXM6MzB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9oZS1ub2RlLWxpbms+XG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPHRyPlxuICAgICAgICAgICAgPHRoIGNsYXNzPVwid2lkdGgtYXV0b1wiPlxuICAgICAgICAgICAgICA8YSBbaHJlZl09XCJiYXNlVXJsICsgJy9zY2hlbWEvSW1wYWN0QXNzZXNzbWVudCNmdW5jdGlvbmFsVW5pdCdcIiB0YXJnZXQ9XCJfYmxhbmtcIj5GdW5jdGlvbmFsIHVuaXQ6PC9hPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBsLTFcIj4xIGtnPC9zcGFuPlxuICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgIDx0aD5Qcm9kdWN0PC90aD5cbiAgICAgICAgICAgIDx0aCAqbmdGb3I9XCJsZXQgaW5kaWNhdG9yIG9mIGluZGljYXRvcnNcIlxuICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCJpbmRpY2F0b3IudmFsdWUudGVybS51bml0c1wiXG4gICAgICAgICAgICA+e3tpbmRpY2F0b3IudmFsdWUudGVybS51bml0c319PC90aD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICA8L3RoZWFkPlxuICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBpbXBhY3RBc3Nlc3NtZW50IG9mIGltcGFjdEFzc2Vzc21lbnRzOyB0cmFja0J5OiB0cmFja0J5SWQ7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cIndpZHRoLWF1dG9cIiBbYXR0ci50aXRsZV09XCJpbXBhY3ROYW1lKGltcGFjdEFzc2Vzc21lbnQpXCIgW3N0eWxlLmJvcmRlci1sZWZ0LWNvbG9yXT1cIml0ZW1Db2xvcihpKVwiPlxuICAgICAgICAgICAgICA8bGFiZWwgKm5nSWY9XCJlbmFibGVDb21wYXJlXCIgY2xhc3M9XCJpcy1pbmxpbmUtYmxvY2sgY2hlY2tib3hcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJzZWxlY3RvclwiXG4gICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZUltcGFjdChpbXBhY3RBc3Nlc3NtZW50KVwiXG4gICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpc1NlbGVjdGVkKGltcGFjdEFzc2Vzc21lbnQpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgIDxoZS1ub2RlLWxpbmsgY2xhc3M9XCJpcy1pbmxpbmUtYmxvY2tcIiBbbm9kZV09XCJpbXBhY3RBc3Nlc3NtZW50XCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpcy1ub3dyYXAgaGFzLXRleHQtZWxsaXBzaXNcIj57e2kgKyAxfX0uIHt7aW1wYWN0TmFtZShpbXBhY3RBc3Nlc3NtZW50KX19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2hlLW5vZGUtbGluaz5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8dGQgW2F0dHIudGl0bGVdPVwiaW1wYWN0QXNzZXNzbWVudC5wcm9kdWN0Py5uYW1lXCI+XG4gICAgICAgICAgICAgIDxoZS1ub2RlLWxpbmsgKm5nSWY9XCJpbXBhY3RBc3Nlc3NtZW50LnByb2R1Y3RcIiBbbm9kZV09XCJpbXBhY3RBc3Nlc3NtZW50LnByb2R1Y3RcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57e2ltcGFjdEFzc2Vzc21lbnQucHJvZHVjdC5uYW1lIHwgZWxsaXBzaXM6MzB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9oZS1ub2RlLWxpbms+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiaXMtbm93cmFwXCIgKm5nRm9yPVwibGV0IGluZGljYXRvciBvZiBpbmRpY2F0b3JzXCI+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaW5kaWNhdG9yLnZhbHVlLnZhbHVlc1tpbXBhY3RBc3Nlc3NtZW50WydAaWQnXV07IGVsc2UgZW1wdHlWYWx1ZVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0cmlnZ2VyLXBvcG92ZXJcIlxuICAgICAgICAgICAgICAgIFtuZ2JQb3BvdmVyXT1cImRldGFpbHNcIiBbYXV0b0Nsb3NlXT1cIidvdXRzaWRlJ1wiXG4gICAgICAgICAgICAgICAgdHJpZ2dlcnM9XCJtYW51YWxcIiAjcD1cIm5nYlBvcG92ZXJcIiBwbGFjZW1lbnQ9XCJsZWZ0XCIgY29udGFpbmVyPVwiYm9keVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVBvcG92ZXIocCwgeyBkYXRhOiBpbmRpY2F0b3IudmFsdWUudmFsdWVzW2ltcGFjdEFzc2Vzc21lbnRbJ0BpZCddXSwgaW1wYWN0QXNzZXNzbWVudDogaW1wYWN0QXNzZXNzbWVudCwga2V5OiBrZXkgfSlcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gcG9pbnRlcj57e3Byb3BlcnR5VmFsdWUoaW5kaWNhdG9yLnZhbHVlLnZhbHVlc1tpbXBhY3RBc3Nlc3NtZW50WydAaWQnXV0udmFsdWUsIGtleSA9PT0gJ2ltcGFjdHMnKSB8IHByZWNpc2lvbjozIHwgZGVmYXVsdDonLSd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8aGUtYmxhbmstbm9kZS1zdGF0ZSBjbGFzcz1cIm1sLTFcIlxuICAgICAgICAgICAgICAgICAgW25vZGVdPVwiaW5kaWNhdG9yLnZhbHVlLnZhbHVlc1tpbXBhY3RBc3Nlc3NtZW50WydAaWQnXV0ubm9kZXNbMF1cIlxuICAgICAgICAgICAgICAgICAga2V5PVwidmFsdWVcIlxuICAgICAgICAgICAgICAgICAgW3N0YXRlXT1cImltcGFjdEFzc2Vzc21lbnQuYWdncmVnYXRlZCA/ICdhZ2dyZWdhdGVkJyA6IG51bGxcIlxuICAgICAgICAgICAgICAgID48L2hlLWJsYW5rLW5vZGUtc3RhdGU+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC90Ym9keT5cbiAgICAgIDwvdGFibGU+XG4gICAgPC9kaXY+XG5cbiAgICA8aGUtYmxhbmstbm9kZS1zdGF0ZS1ub3RpY2UgW2RhdGFTdGF0ZV09XCJkYXRhU3RhdGVcIj48L2hlLWJsYW5rLW5vZGUtc3RhdGUtbm90aWNlPlxuXG4gICAgPGZvcm0gKm5nSWY9XCJlbmFibGVDb21wYXJlXCIgY2xhc3M9XCJtdC0yXCIgW2Zvcm1Hcm91cF09XCJmb3JtXCIgKHN1Ym1pdCk9XCJmb3JtLnZhbGlkICYmIGFkZEltcGFjdCgpXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgaGFzLWFkZG9uc1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29udHJvbFwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYnV0dG9uIGlzLXNtYWxsIGlzLXN0YXRpY1wiPkNvbXBhcmUgd2l0aCBBZ2dyZWdhdGVkIEltcGFjdCBBc3Nlc3NtZW50PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2wgaXMtZXhwYW5kZWRcIiBbY2xhc3MuaGFzLWljb25zLXJpZ2h0XT1cInN1Z2dlc3RpbmcgfHwgbG9hZGluZ1wiPlxuICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0IGlzLXNtYWxsXCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoIGJ5IG5hbWUgb3IgaWRcIlxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic2VhcmNoXCIgbmFtZT1cInNlYXJjaFwiXG5cbiAgICAgICAgICAgIFtuZ2JUeXBlYWhlYWRdPVwic3VnZ2VzdEltcGFjdEFzc2Vzc21lbnRcIlxuICAgICAgICAgICAgW2lucHV0Rm9ybWF0dGVyXT1cImZvcm1hdHRlclwiXG4gICAgICAgICAgICBbcmVzdWx0VGVtcGxhdGVdPVwic3VnZ2VzdGlvblwiXG4gICAgICAgICAgICBbZm9jdXNGaXJzdF09XCJ0cnVlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uIGlzLXNtYWxsIGlzLXJpZ2h0IGhhcy10ZXh0LWdyZXktZGFya1wiIFtjbGFzcy5pcy1oaWRkZW5dPVwiIShzdWdnZXN0aW5nIHx8IGxvYWRpbmcpXCI+XG4gICAgICAgICAgICA8ZmEtaWNvbiBpY29uPVwic3Bpbm5lclwiIFtwdWxzZV09XCJ0cnVlXCIgc2l6ZT1cInNtXCI+PC9mYS1pY29uPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sXCI+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbiBpcy1zbWFsbFwiIHR5cGU9XCJzdWJtaXRcIiBbZGlzYWJsZWRdPVwic3VnZ2VzdGluZyB8fCBsb2FkaW5nXCI+XG4gICAgICAgICAgICA8ZmEtaWNvbiBpY29uPVwicGx1c1wiPjwvZmEtaWNvbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Zvcm0+XG4gIDwvZGl2PlxuXG4gIDxoZS1pbXBhY3QtYXNzZXNzbWVudHMtaW5kaWNhdG9yLWJyZWFrZG93bi1jaGFydCAqbmdJZj1cInNlbGVjdGVkVmlldyA9PT0gVmlldy5icmVha2Rvd25cIlxuICAgIFtpbXBhY3RBc3Nlc3NtZW50XT1cImltcGFjdEFzc2Vzc21lbnRzWzBdXCJcbiAgICBbaW5kaWNhdG9yc109XCJpbXBhY3RBc3Nlc3NtZW50c1swXVtrZXldXCJcbiAgPjwvaGUtaW1wYWN0LWFzc2Vzc21lbnRzLWluZGljYXRvci1icmVha2Rvd24tY2hhcnQ+XG5cbiAgPGhlLWltcGFjdC1hc3Nlc3NtZW50cy1pbmRpY2F0b3JzLWNoYXJ0ICpuZ0lmPVwiaW1wYWN0QXNzZXNzbWVudHMubGVuZ3RoID4gMVwiIFtjbGFzcy5pcy1oaWRkZW5dPVwic2VsZWN0ZWRWaWV3ICE9PSBWaWV3LmNoYXJ0XCJcbiAgICBba2V5XT1cImtleVwiXG4gICAgW2ltcGFjdEFzc2Vzc21lbnRzXT1cInNlbGVjdGVkSW1wYWN0QXNzZXNzbWVudHNcIlxuICAgIFtmaWx0ZXJUZXJtVHlwZXNdPVwiZmlsdGVyVGVybVR5cGVzXCJcbiAgPjwvaGUtaW1wYWN0LWFzc2Vzc21lbnRzLWluZGljYXRvcnMtY2hhcnQ+XG5cbiAgPGhlLWltcGFjdC1hc3Nlc3NtZW50cy1wcm9kdWN0cy1sb2dzICpuZ0lmPVwic2VsZWN0ZWRWaWV3ID09PSBWaWV3LmxvZ3MgJiYgIWlzT3JpZ2luYWxcIlxuICAgIFtrZXldPVwia2V5XCJcbiAgICBbaW1wYWN0QXNzZXNzbWVudF09XCJpbXBhY3RBc3Nlc3NtZW50c1swXVwiXG4gICAgW2ZpbHRlclRlcm1UeXBlc109XCJmaWx0ZXJUZXJtVHlwZXNcIlxuICAgIFtvcmlnaW5hbFZhbHVlc109XCJvcmlnaW5hbFZhbHVlc1swXVtrZXldXCJcbiAgICBbcmVjYWxjdWxhdGVkVmFsdWVzXT1cImltcGFjdEFzc2Vzc21lbnRzWzBdW2tleV1cIlxuICA+PC9oZS1pbXBhY3QtYXNzZXNzbWVudHMtcHJvZHVjdHMtbG9ncz5cbjwvbmctY29udGFpbmVyPlxuXG48aGUtbm9kZS1jc3YtZXhwb3J0LWNvbmZpcm0gKm5nSWY9XCJzaG93RG93bmxvYWRcIlxuICBbbm9kZXNdPVwiaW1wYWN0QXNzZXNzbWVudHNcIiBbZmlsZW5hbWVdPVwiJ2ltcGFjdC0nICsga2V5ICsgJy5jc3YnXCIgW2lzVXBsb2FkXT1cImZhbHNlXCJcbiAgW2hlYWRlcktleXNdPVwiWydpbXBhY3RBc3Nlc3NtZW50LmlkJywgJ2ltcGFjdEFzc2Vzc21lbnQuQGlkJywgJ2ltcGFjdEFzc2Vzc21lbnQuJyArIGtleSArICcuJ11cIlxuICAoY2xvc2VkKT1cInNob3dEb3dubG9hZCA9IGZhbHNlXCJcbj48L2hlLW5vZGUtY3N2LWV4cG9ydC1jb25maXJtPlxuXG48bmctdGVtcGxhdGUgI2VtcHR5VGFibGU+XG4gIDxkaXYgY2xhc3M9XCJwYW5lbC1ibG9ja1wiPlxuICAgIDxzcGFuPk5vIGRhdGE8L3NwYW4+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNlbXB0eVZhbHVlPlxuICA8c3Bhbj4tPC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNkZXRhaWxzIGxldC1ub2RlPVwiaW1wYWN0QXNzZXNzbWVudFwiIGxldC1kYXRhPVwiZGF0YVwiIGxldC1rZXk9XCJrZXlcIj5cbiAgPHAgKmJpbmRPbmNlPVwibm9kZVwiPlxuICAgIDxiPlxuICAgICAgPHNwYW4gKm5nSWY9XCJkYXRhLmN5Y2xlXCI+e3tjeWNsZUxhYmVsKG5vZGUuY3ljbGUpfX08L3NwYW4+XG4gICAgICA8c3BhbiAqbmdJZj1cIiFkYXRhLmN5Y2xlXCI+e3tkYXRhLm5hbWV9fTwvc3Bhbj5cbiAgICA8L2I+XG4gIDwvcD5cbiAgPGhlLW5vZGUtdmFsdWUtZGV0YWlsc1xuICAgIFtkYXRhXT1cImRhdGFcIiBbbm9kZVR5cGVdPVwibm9kZVsnQHR5cGUnXVwiIFtkYXRhS2V5XT1cImtleVwiXG4gID48L2hlLW5vZGUtdmFsdWUtZGV0YWlscz5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjc3VnZ2VzdGlvbiBsZXQtaW1wYWN0PVwicmVzdWx0XCIgbGV0LXQ9XCJ0ZXJtXCI+XG4gIDxkaXYgY2xhc3M9XCJpcy1ibG9ja1wiPlxuICAgIDxuZ2ItaGlnaGxpZ2h0IFtyZXN1bHRdPVwiaW1wYWN0Lm5hbWUgfHwgaW1wYWN0LmN5Y2xlLm5hbWVcIiBbdGVybV09XCJ0XCI+PC9uZ2ItaGlnaGxpZ2h0PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImNvbHVtbnMgaXMtZmxleFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2x1bW5cIiAqbmdJZj1cImltcGFjdC5jb3VudHJ5XCI+XG4gICAgICA8c3BhbiBjbGFzcz1cInByLTEgaGFzLXRleHQtdW5kZXJsaW5lXCI+Q291bnRyeTo8L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cImlzLWlubGluZS1mbGV4XCI+PG5nYi1oaWdobGlnaHQgW3Jlc3VsdF09XCJpbXBhY3QuY291bnRyeS5uYW1lXCIgW3Rlcm1dPVwidFwiPjwvbmdiLWhpZ2hsaWdodD48L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbHVtblwiICpuZ0lmPVwiaW1wYWN0LnByb2R1Y3RcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwicHItMSBoYXMtdGV4dC11bmRlcmxpbmVcIj5Qcm9kdWN0Ojwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiaXMtaW5saW5lLWZsZXhcIj48bmdiLWhpZ2hsaWdodCBbcmVzdWx0XT1cImltcGFjdC5wcm9kdWN0Lm5hbWVcIiBbdGVybV09XCJ0XCI+PC9uZ2ItaGlnaGxpZ2h0Pjwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sdW1uXCIgKm5nSWY9XCJpbXBhY3QuZW5kRGF0ZVwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJwci0xIGhhcy10ZXh0LXVuZGVybGluZVwiPkRhdGU6PC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJpcy1pbmxpbmUtZmxleFwiPjxuZ2ItaGlnaGxpZ2h0IFtyZXN1bHRdPVwiaW1wYWN0LmVuZERhdGVcIiBbdGVybV09XCJ0XCI+PC9uZ2ItaGlnaGxpZ2h0Pjwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -32,4 +32,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
32
32
|
providedIn: 'root'
|
|
33
33
|
}]
|
|
34
34
|
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.HeCommonService }]; } });
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVuZGVsZXkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tZW5kZWxleS9tZW5kZWxleS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJM0MsT0FBTyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7OztBQVUvRCxNQUFNLE9BQU8sb0JBQW9CO0lBQWpDO1FBQ0UsVUFBSyxHQUFHLENBQUMsQ0FBQztRQUNWLFlBQU8sR0FBNEIsRUFBRSxDQUFDO0lBQ3hDLENBQUM7Q0FBQTtBQUtELE1BQU0sT0FBTyxpQkFBaUI7SUFDNUIsWUFDWSxJQUFnQixFQUNoQixhQUE4QjtRQUQ5QixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLGtCQUFhLEdBQWIsYUFBYSxDQUFpQjtJQUN2QyxDQUFDO0lBRUosSUFBWSxJQUFJO1FBQ2QsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxXQUFXLENBQUM7SUFDckQsQ0FBQztJQUVELElBQUksQ0FBQyxNQUE2QjtRQUNoQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUF1QixJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsTUFBTSxFQUFFLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDMUYsQ0FBQztJQUVELEdBQUcsQ0FBQyxFQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBZSxHQUFHLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDN0YsQ0FBQzs7K0dBaEJVLGlCQUFpQjttSEFBakIsaUJBQWlCLGNBRmhCLE1BQU07NEZBRVAsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBCaWJsaW9ncmFwaHkgfSBmcm9tICdAaGVzdGlhLWVhcnRoL3NjaGVtYSc7XG5cbmltcG9ydCB7IGZpbHRlclBhcmFtcywgaGFuZGxlQVBJRXJyb3IgfSBmcm9tICcuLi9jb21tb24vdXRpbHMnO1xuaW1wb3J0IHsgSGVDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL2NvbW1vbi5zZXJ2aWNlJztcblxuaW50ZXJmYWNlIElNZW5kZWxleVNlYXJjaFBhcmFtcyB7XG4gIHRpdGxlPzogc3RyaW5nO1xuICBsaW1pdD86IG51bWJlcjtcbiAgZG9pPzogc3RyaW5nO1xuICBzY29wdXM/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBNZW5kZWxleVNlYXJjaFJlc3VsdCB7XG4gIGNvdW50ID0gMDtcbiAgcmVzdWx0czogUGFydGlhbDxCaWJsaW9ncmFwaHk+W10gPSBbXTtcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgSGVNZW5kZWxleVNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgaHR0cDogSHR0cENsaWVudCxcbiAgICBwcm90ZWN0ZWQgY29tbW9uU2VydmljZTogSGVDb21tb25TZXJ2aWNlXG4gICkge31cblxuICBwcml2YXRlIGdldCBwYXRoKCkge1xuICAgIHJldHVybiBgJHt0aGlzLmNvbW1vblNlcnZpY2UuYXBpQmFzZVVybH0vbWVuZGVsZXlgO1xuICB9XG5cbiAgZmluZChwYXJhbXM6IElNZW5kZWxleVNlYXJjaFBhcmFtcykge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PE1lbmRlbGV5U2VhcmNoUmVzdWx0Pih0aGlzLnBhdGgsIHsgcGFyYW1zOiBmaWx0ZXJQYXJhbXMocGFyYW1zKSB9KTtcbiAgfVxuXG4gIGdldChpZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QmlibGlvZ3JhcGh5PihgJHt0aGlzLnBhdGh9LyR7aWR9YCkudG9Qcm9taXNlKCkuY2F0Y2goaGFuZGxlQVBJRXJyb3IpO1xuICB9XG59XG4iXX0=
|
|
@@ -21,4 +21,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
21
21
|
providedIn: 'root'
|
|
22
22
|
}]
|
|
23
23
|
}], ctorParameters: function () { return [{ type: i1.HeSchemaService }]; } });
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1jc3Yuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ub2RlL25vZGUtY3N2LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7QUFPdEQsTUFBTSxPQUFPLGdCQUFnQjtJQUMzQixZQUNZLGFBQThCO1FBQTlCLGtCQUFhLEdBQWIsYUFBYSxDQUFpQjtJQUN0QyxDQUFDO0lBRUMsU0FBUyxDQUFDLE9BQWU7O1lBQzdCLE9BQU8sTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUM3RCxDQUFDO0tBQUE7OzhHQVBVLGdCQUFnQjtrSEFBaEIsZ0JBQWdCLGNBRmYsTUFBTTs0RkFFUCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdG9Kc29uIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9zY2hlbWEtY29udmVydCc7XG5cbmltcG9ydCB7IEhlU2NoZW1hU2VydmljZSB9IGZyb20gJy4uL3NjaGVtYS9zY2hlbWEuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEhlTm9kZUNzdlNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgc2NoZW1hU2VydmljZTogSGVTY2hlbWFTZXJ2aWNlXG4gICkgeyB9XG5cbiAgYXN5bmMgY3N2VG9Kc29uKGNvbnRlbnQ6IHN0cmluZykge1xuICAgIHJldHVybiB0b0pzb24oYXdhaXQgdGhpcy5zY2hlbWFTZXJ2aWNlLnNjaGVtYXMoKSwgY29udGVudCk7XG4gIH1cbn1cbiJdfQ==
|