@wemake4u/form-player-se 1.0.19 → 1.0.21

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.
@@ -0,0 +1,304 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { map } from 'rxjs/operators';
3
+ import { observableAll } from '../utils/observableAll';
4
+ import { localize } from '../locale/localize';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "../services/programmability.service";
7
+ export class ChartService {
8
+ programmability;
9
+ constructor(programmability) {
10
+ this.programmability = programmability;
11
+ }
12
+ getOptions(component, formGroup, language) {
13
+ const expression = this.getDataExpression(component);
14
+ const data = this.programmability.evaluate(formGroup, expression);
15
+ return observableAll(data).pipe(map((chartData) => {
16
+ const series = this.getSeries(component, formGroup, language);
17
+ const options = {
18
+ theme: this.getTheme(),
19
+ series: series,
20
+ ...this.getProps(component)
21
+ };
22
+ this.bindData(options, chartData);
23
+ return options;
24
+ }));
25
+ }
26
+ getDataExpression(component) {
27
+ const getExpression = (expression) => {
28
+ return this.programmability.isExpression(expression)
29
+ ? this.programmability.getExpression(expression)
30
+ : "null";
31
+ };
32
+ const dataExpr = getExpression(component.data);
33
+ const seriesExprs = (component.series ?? [])
34
+ .map((serie) => getExpression(serie.data))
35
+ .map((expr) => `(${expr})`)
36
+ .join(", ");
37
+ return `={ data: (${dataExpr}), series: [${seriesExprs}] }`;
38
+ }
39
+ bindData(options, chartData) {
40
+ if (chartData.data) {
41
+ options.data = chartData.data;
42
+ }
43
+ if (Array.isArray(options.series)) {
44
+ options.series.forEach((serie, index) => {
45
+ if (chartData.series[index]) {
46
+ serie.data = chartData.series[index];
47
+ }
48
+ });
49
+ }
50
+ }
51
+ locale(component, key, language) {
52
+ return localize(language, component, key);
53
+ }
54
+ getTheme() {
55
+ return {
56
+ baseTheme: "ag-default",
57
+ params: {
58
+ fontFamily: "inherit",
59
+ textColor: "#00121A",
60
+ chromeFontFamily: "inherit",
61
+ chromeTextColor: "#00121A"
62
+ },
63
+ overrides: {
64
+ common: {
65
+ background: {
66
+ visible: true,
67
+ fill: "transparent",
68
+ }
69
+ }
70
+ }
71
+ };
72
+ }
73
+ getSeries(component, formGroup, language) {
74
+ if (Array.isArray(component.series)) {
75
+ const series = component.series.map((serie) => {
76
+ switch (serie.type) {
77
+ case "bar":
78
+ return this.getBarSeriesOptions(serie, formGroup, language);
79
+ case "line":
80
+ return this.getLineSeriesOptions(serie, formGroup, language);
81
+ case "area":
82
+ return this.getAreaSeriesOptions(serie, formGroup, language);
83
+ case "scatter":
84
+ return this.getScatterSeriesOptions(serie, formGroup, language);
85
+ case "bubble":
86
+ return this.getBubbleSeriesOptions(serie, formGroup, language);
87
+ case "pie":
88
+ return this.getPieSeriesOptions(serie, formGroup, language);
89
+ case "donut":
90
+ return this.getDonutSeriesOptions(serie, formGroup, language);
91
+ default:
92
+ return {};
93
+ }
94
+ });
95
+ return series;
96
+ }
97
+ else {
98
+ return [];
99
+ }
100
+ }
101
+ getSeriesOptionsNames(serie, language) {
102
+ const options = {};
103
+ if (this.isString(serie.xName))
104
+ options.xName = this.locale(serie, "xName", language);
105
+ if (this.isString(serie.yName))
106
+ options.yName = this.locale(serie, "yName", language);
107
+ if (this.isString(serie.legendItemName))
108
+ options.legendItemName = this.locale(serie, "legendItemName", language);
109
+ return options;
110
+ }
111
+ getBaseSeriesOptions(serie, formGroup) {
112
+ const options = {};
113
+ if (this.isBoolean(serie.visible))
114
+ options.visible = serie.visible;
115
+ return options;
116
+ }
117
+ getBarSeriesOptions(serie, formGroup, language) {
118
+ const options = {
119
+ type: "bar",
120
+ xKey: serie.xKey,
121
+ yKey: serie.yKey,
122
+ ...this.getBaseSeriesOptions(serie, formGroup),
123
+ ...this.getSeriesOptionsNames(serie, language)
124
+ };
125
+ if (this.isDirection(serie.direction))
126
+ options.direction = serie.direction;
127
+ if (this.isBoolean(serie.stacked))
128
+ options.stacked = serie.stacked;
129
+ if (this.isNumber(serie.normalizedTo))
130
+ options.normalizedTo = serie.normalizedTo;
131
+ if (this.isString(serie.stackGroup))
132
+ options.stackGroup = serie.stackGroup;
133
+ return options;
134
+ }
135
+ getLineSeriesOptions(serie, formGroup, language) {
136
+ const options = {
137
+ type: "line",
138
+ xKey: serie.xKey,
139
+ yKey: serie.yKey,
140
+ ...this.getBaseSeriesOptions(serie, formGroup),
141
+ ...this.getSeriesOptionsNames(serie, language)
142
+ };
143
+ if (this.isInterpolation(serie.interpolation)) {
144
+ options.interpolation = {
145
+ type: serie.interpolation
146
+ };
147
+ }
148
+ return options;
149
+ }
150
+ getAreaSeriesOptions(serie, formGroup, language) {
151
+ const options = {
152
+ type: "area",
153
+ xKey: serie.xKey,
154
+ yKey: serie.yKey,
155
+ ...this.getBaseSeriesOptions(serie, formGroup),
156
+ ...this.getAreaSeriesOptionsNames(serie, language)
157
+ };
158
+ if (this.isBoolean(serie.stacked))
159
+ options.stacked = serie.stacked;
160
+ if (this.isNumber(serie.normalizedTo))
161
+ options.normalizedTo = serie.normalizedTo;
162
+ return options;
163
+ }
164
+ getAreaSeriesOptionsNames(serie, language) {
165
+ const options = {};
166
+ if (serie.xName)
167
+ options.xName = this.locale(serie, "xName", language);
168
+ if (serie.yName)
169
+ options.yName = this.locale(serie, "yName", language);
170
+ return options;
171
+ }
172
+ getScatterSeriesOptions(serie, formGroup, language) {
173
+ return {
174
+ type: "scatter",
175
+ xKey: serie.xKey,
176
+ yKey: serie.yKey,
177
+ labelKey: serie.labelKey,
178
+ ...this.getBaseSeriesOptions(serie, formGroup),
179
+ ...this.getScatterSeriesOptionsNames(serie, language)
180
+ };
181
+ }
182
+ getScatterSeriesOptionsNames(serie, language) {
183
+ const options = {};
184
+ if (serie.xName)
185
+ options.xName = this.locale(serie, "xName", language);
186
+ if (serie.yName)
187
+ options.yName = this.locale(serie, "yName", language);
188
+ if (serie.labelName)
189
+ options.labelName = this.locale(serie, "labelName", language);
190
+ return options;
191
+ }
192
+ getBubbleSeriesOptions(serie, formGroup, language) {
193
+ return {
194
+ type: "bubble",
195
+ xKey: serie.xKey,
196
+ yKey: serie.yKey,
197
+ sizeKey: serie.sizeKey,
198
+ labelKey: serie.labelKey,
199
+ ...this.getBaseSeriesOptions(serie, formGroup),
200
+ ...this.getBubbleSeriesOptionsNames(serie, language)
201
+ };
202
+ }
203
+ getBubbleSeriesOptionsNames(serie, language) {
204
+ const options = {};
205
+ if (serie.xName)
206
+ options.xName = this.locale(serie, "xName", language);
207
+ if (serie.yName)
208
+ options.yName = this.locale(serie, "yName", language);
209
+ if (serie.sizeName)
210
+ options.sizeName = this.locale(serie, "sizeName", language);
211
+ if (serie.labelName)
212
+ options.labelName = this.locale(serie, "labelName", language);
213
+ return options;
214
+ }
215
+ getPieSeriesOptions(serie, formGroup, language) {
216
+ const options = {
217
+ type: "pie",
218
+ angleKey: serie.angleKey,
219
+ ...this.getBaseSeriesOptions(serie, formGroup),
220
+ ...this.getPieSeriesOptionsNames(serie, language)
221
+ };
222
+ if (this.isString(serie.radiusKey))
223
+ options.radiusKey = serie.radiusKey;
224
+ if (this.isString(serie.calloutLabelKey))
225
+ options.calloutLabelKey = serie.calloutLabelKey;
226
+ if (this.isString(serie.sectorLabelKey))
227
+ options.sectorLabelKey = serie.sectorLabelKey;
228
+ if (this.isString(serie.legendItemKey))
229
+ options.legendItemKey = serie.legendItemKey;
230
+ return options;
231
+ }
232
+ getPieSeriesOptionsNames(serie, language) {
233
+ const options = {};
234
+ if (serie.angleName)
235
+ options.angleName = this.locale(serie, "angleName", language);
236
+ if (serie.radiusName)
237
+ options.radiusName = this.locale(serie, "radiusName", language);
238
+ if (serie.calloutLabelName)
239
+ options.calloutLabelName = this.locale(serie, "calloutLabelName", language);
240
+ if (serie.sectorLabelName)
241
+ options.sectorLabelName = this.locale(serie, "sectorLabelName", language);
242
+ return options;
243
+ }
244
+ getDonutSeriesOptions(serie, formGroup, language) {
245
+ const options = {
246
+ type: "donut",
247
+ angleKey: serie.angleKey,
248
+ ...this.getBaseSeriesOptions(serie, formGroup),
249
+ ...this.getDonutSeriesOptionsNames(serie, language)
250
+ };
251
+ if (this.isString(serie.radiusKey))
252
+ options.radiusKey = serie.radiusKey;
253
+ if (this.isString(serie.calloutLabelKey))
254
+ options.calloutLabelKey = serie.calloutLabelKey;
255
+ if (this.isString(serie.sectorLabelKey))
256
+ options.sectorLabelKey = serie.sectorLabelKey;
257
+ if (this.isString(serie.legendItemKey))
258
+ options.legendItemKey = serie.legendItemKey;
259
+ return options;
260
+ }
261
+ getDonutSeriesOptionsNames(serie, language) {
262
+ const options = {};
263
+ if (serie.angleName)
264
+ options.angleName = this.locale(serie, "angleName", language);
265
+ if (serie.radiusName)
266
+ options.radiusName = this.locale(serie, "radiusName", language);
267
+ if (serie.calloutLabelName)
268
+ options.calloutLabelName = this.locale(serie, "calloutLabelName", language);
269
+ if (serie.sectorLabelName)
270
+ options.sectorLabelName = this.locale(serie, "sectorLabelName", language);
271
+ return options;
272
+ }
273
+ getProps(component) {
274
+ const props = {};
275
+ if (component && component.title) {
276
+ props.title = { text: component.title };
277
+ }
278
+ if (component && component.subtitle) {
279
+ props.subtitle = { text: component.subtitle };
280
+ }
281
+ return props;
282
+ }
283
+ isBoolean(value) {
284
+ return typeof value === 'boolean' || value instanceof Boolean;
285
+ }
286
+ isString(value) {
287
+ return typeof value === 'string' || value instanceof String;
288
+ }
289
+ isNumber(value) {
290
+ return typeof value === 'number' && isFinite(value);
291
+ }
292
+ isDirection(value) {
293
+ return value === 'horizontal' || value === 'vertical';
294
+ }
295
+ isInterpolation(value) {
296
+ return value === 'linear' || value === 'smooth' || value === 'step';
297
+ }
298
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ChartService, deps: [{ token: i1.ProgrammabilityService }], target: i0.ɵɵFactoryTarget.Injectable });
299
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ChartService });
300
+ }
301
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ChartService, decorators: [{
302
+ type: Injectable
303
+ }], ctorParameters: () => [{ type: i1.ProgrammabilityService }] });
304
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zaXJpby9zcmMvbGliL3NlcnZpY2VzL2NoYXJ0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUkzQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBV3ZELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7O0FBRzlDLE1BQU0sT0FBTyxZQUFZO0lBR2I7SUFEVixZQUNVLGVBQXVDO1FBQXZDLG9CQUFlLEdBQWYsZUFBZSxDQUF3QjtJQUNqRCxDQUFDO0lBRUQsVUFBVSxDQUFDLFNBQWMsRUFBRSxTQUFvQixFQUFFLFFBQWdCO1FBQy9ELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNyRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDbEUsT0FBTyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUM3QixHQUFHLENBQUMsQ0FBQyxTQUFjLEVBQUUsRUFBRTtZQUNyQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDOUQsTUFBTSxPQUFPLEdBQW1CO2dCQUM5QixLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDdEIsTUFBTSxFQUFFLE1BQU07Z0JBQ2QsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQzthQUM1QixDQUFDO1lBQ0YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxP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LENBQUM7WUFDakMsS0FBSyxDQUFDLEtBQUssR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDMUMsQ0FBQztRQUVELElBQUksU0FBUyxJQUFJLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNwQyxLQUFLLENBQUMsUUFBUSxHQUFHLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoRCxDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU8sU0FBUyxDQUFDLEtBQVU7UUFDMUIsT0FBTyxPQUFPLEtBQUssS0FBSyxTQUFTLElBQUksS0FBSyxZQUFZLE9BQU8sQ0FBQztJQUNoRSxDQUFDO0lBRU8sUUFBUSxDQUFDLEtBQVU7UUFDekIsT0FBTyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxZQUFZLE1BQU0sQ0FBQztJQUM5RCxDQUFDO0lBRU8sUUFBUSxDQUFDLEtBQVU7UUFDekIsT0FBTyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFTyxXQUFXLENBQUMsS0FBVTtRQUM1QixPQUFPLEtBQUssS0FBSyxZQUFZLElBQUksS0FBSyxLQUFLLFVBQVUsQ0FBQztJQUN4RCxDQUFDO0lBRU8sZUFBZSxDQUFDLEtBQVU7UUFDaEMsT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxLQUFLLE1BQU0sQ0FBQztJQUN0RSxDQUFDO3dHQXpYVSxZQUFZOzRHQUFaLFlBQVk7OzRGQUFaLFlBQVk7a0JBRHhCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgUHJvZ3JhbW1hYmlsaXR5U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3Byb2dyYW1tYWJpbGl0eS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IG9ic2VydmFibGVBbGwgfSBmcm9tICcuLi91dGlscy9vYnNlcnZhYmxlQWxsJztcclxuaW1wb3J0IHtcclxuICBBZ0NoYXJ0T3B0aW9ucywgQWdDaGFydFRoZW1lLCBBZ0Jhc2VTZXJpZXNPcHRpb25zLFxyXG4gIEFnQmFyU2VyaWVzT3B0aW9ucywgQWdCYXJTZXJpZXNPcHRpb25zTmFtZXMsIFxyXG4gIEFnTGluZVNlcmllc09wdGlvbnMsIEFnTGluZVNlcmllc09wdGlvbnNOYW1lcyxcclxuICBBZ0FyZWFTZXJpZXNPcHRpb25zLCBBZ0FyZWFTZXJpZXNPcHRpb25zTmFtZXMsXHJcbiAgQWdTY2F0dGVyU2VyaWVzT3B0aW9ucywgQWdTY2F0dGVyU2VyaWVzT3B0aW9uc05hbWVzLFxyXG4gIEFnQnViYmxlU2VyaWVzT3B0aW9ucywgQWdCdWJibGVTZXJpZXNPcHRpb25zTmFtZXMsXHJcbiAgQWdQaWVTZXJpZXNPcHRpb25zLCBBZ1BpZVNlcmllc09wdGlvbnNOYW1lcyxcclxuICBBZ0RvbnV0U2VyaWVzT3B0aW9ucywgQWdEb251dFNlcmllc09wdGlvbnNOYW1lc1xyXG59IGZyb20gJ2FnLWNoYXJ0cy1jb21tdW5pdHknO1xyXG5pbXBvcnQgeyBsb2NhbGl6ZSB9IGZyb20gJy4uL2xvY2FsZS9sb2NhbGl6ZSc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBDaGFydFNlcnZpY2Uge1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcHJvZ3JhbW1hYmlsaXR5OiBQcm9ncmFtbWFiaWxpdHlTZXJ2aWNlKSB7XHJcbiAgfVxyXG5cclxuICBnZXRPcHRpb25zKGNvbXBvbmVudDogYW55LCBmb3JtR3JvdXA6IEZvcm1Hcm91cCwgbGFuZ3VhZ2U6IHN0cmluZyk6IE9ic2VydmFibGU8QWdDaGFydE9wdGlvbnM+IHtcclxuICAgIGNvbnN0IGV4cHJlc3Npb24gPSB0aGlzLmdldERhdGFFeHByZXNzaW9uKGNvbXBvbmVudCk7XHJcbiAgICBjb25zdCBkYXRhID0gdGhpcy5wcm9ncmFtbWFiaWxpdHkuZXZhbHVhdGUoZm9ybUdyb3VwLCBleHByZXNzaW9uKTtcclxuICAgIHJldHVybiBvYnNlcnZhYmxlQWxsKGRhdGEpLnBpcGUoXHJcbiAgICAgIG1hcCgoY2hhcnREYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCBzZXJpZXMgPSB0aGlzLmdldFNlcmllcyhjb21wb25lbnQsIGZvcm1Hcm91cCwgbGFuZ3VhZ2UpO1xyXG4gICAgICAgIGNvbnN0IG9wdGlvbnM6IEFnQ2hhcnRPcHRpb25zID0ge1xyXG4gICAgICAgICAgdGhlbWU6IHRoaXMuZ2V0VGhlbWUoKSxcclxuICAgICAgICAgIHNlcmllczogc2VyaWVzLFxyXG4gICAgICAgICAgLi4udGhpcy5nZXRQcm9wcyhjb21wb25lbnQpXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLmJpbmREYXRhKG9wdGlvbnMsIGNoYXJ0RGF0YSk7XHJcbiAgICAgICAgcmV0dXJuIG9wdGlvbnM7XHJcbiAgICAgIH0pXHJcbiAgICApOyAgIFxyXG4gIH1cclxuXHJcbiAgZ2V0RGF0YUV4cHJlc3Npb24oY29tcG9uZW50OiBhbnkpIHtcclxuICAgIGNvbnN0IGdldEV4cHJlc3Npb24gPSAoZXhwcmVzc2lvbjogYW55KSA9PiB7XHJcbiAgICAgIHJldHVybiB0aGlzLnByb2dyYW1tYWJpbGl0eS5pc0V4cHJlc3Npb24oZXhwcmVzc2lvbilcclxuICAgICAgICA/IHRoaXMucHJvZ3JhbW1hYmlsaXR5LmdldEV4cHJlc3Npb24oZXhwcmVzc2lvbilcclxuICAgICAgICA6IFwibnVsbFwiXHJcbiAgICB9XHJcbiAgICBjb25zdCBkYXRhRXhwciA9IGdldEV4cHJlc3Npb24oY29tcG9uZW50LmRhdGEpO1xyXG4gICAgY29uc3Qgc2VyaWVzRXhwcnMgPSAoY29tcG9uZW50LnNlcmllcyA/PyBbXSlcclxuICAgICAgLm1hcCgoc2VyaWU6IGFueSkgPT4gZ2V0RXhwcmVzc2lvbihzZXJpZS5kYXRhKSlcclxuICAgICAgLm1hcCgoZXhwcjogc3RyaW5nKSA9PiBgKCR7ZXhwcn0pYClcclxuICAgICAgLmpvaW4oXCIsIFwiKTtcclxuXHJcbiAgICByZXR1cm4gYD17IGRhdGE6ICgke2RhdGFFeHByfSksIHNlcmllczogWyR7c2VyaWVzRXhwcnN9XSB9YDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYmluZERhdGEob3B0aW9uczogQWdDaGFydE9wdGlvbnMsIGNoYXJ0RGF0YTogYW55KSB7XHJcbiAgICBpZiAoY2hhcnREYXRhLmRhdGEpIHtcclxuICAgICAgb3B0aW9ucy5kYXRhID0gY2hhcnREYXRhLmRhdGE7XHJcbiAgICB9XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShvcHRpb25zLnNlcmllcykpIHtcclxuICAgICAgb3B0aW9ucy5zZXJpZXMuZm9yRWFjaCgoc2VyaWU6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgIGlmIChjaGFydERhdGEuc2VyaWVzW2luZGV4XSkge1xyXG4gICAgICAgICAgc2VyaWUuZGF0YSA9IGNoYXJ0RGF0YS5zZXJpZXNbaW5kZXhdO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxvY2FsZShjb21wb25lbnQ6IGFueSwga2V5OiBzdHJpbmcsIGxhbmd1YWdlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGxvY2FsaXplKGxhbmd1YWdlLCBjb21wb25lbnQsIGtleSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFRoZW1lKCk6IEFnQ2hhcnRUaGVtZSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBiYXNlVGhlbWU6IFwiYWctZGVmYXVsdFwiLFxyXG4gICAgICBwYXJhbXM6IHtcclxuICAgICAgICBmb250RmFtaWx5OiBcImluaGVyaXRcIixcclxuICAgICAgICB0ZXh0Q29sb3I6IFwiIzAwMTIxQVwiLFxyXG4gICAgICAgIGNocm9tZUZvbnRGYW1pbHk6IFwiaW5oZXJpdFwiLFxyXG4gICAgICAgIGNocm9tZVRleHRDb2xvcjogXCIjMDAxMjFBXCJcclxuICAgICAgfSxcclxuICAgICAgb3ZlcnJpZGVzOiB7XHJcbiAgICAgICAgY29tbW9uOiB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kOiB7XHJcbiAgICAgICAgICAgIHZpc2libGU6IHRydWUsXHJcbiAgICAgICAgICAgIGZpbGw6IFwidHJhbnNwYXJlbnRcIixcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFNlcmllcyhjb21wb25lbnQ6IGFueSwgZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGxhbmd1YWdlOiBzdHJpbmcpOiBhbnlbXSB7XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjb21wb25lbnQuc2VyaWVzKSkge1xyXG4gICAgICBjb25zdCBzZXJpZXMgPSBjb21wb25lbnQuc2VyaWVzLm1hcCgoc2VyaWU6IGFueSkgPT4ge1xyXG4gICAgICAgIHN3aXRjaCAoc2VyaWUudHlwZSkge1xyXG4gICAgICAgICAgY2FzZSBcImJhclwiOlxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRCYXJTZXJpZXNPcHRpb25zKHNlcmllLCBmb3JtR3JvdXAsIGxhbmd1YWdlKTtcclxuICAgICAgICAgIGNhc2UgXCJsaW5lXCI6XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldExpbmVTZXJpZXNPcHRpb25zKHNlcmllLCBmb3JtR3JvdXAsIGxhbmd1YWdlKTtcclxuICAgICAgICAgIGNhc2UgXCJhcmVhXCI6XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldEFyZWFTZXJpZXNPcHRpb25zKHNlcmllLCBmb3JtR3JvdXAsIGxhbmd1YWdlKTtcclxuICAgICAgICAgIGNhc2UgXCJzY2F0dGVyXCI6XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFNjYXR0ZXJTZXJpZXNPcHRpb25zKHNlcmllLCBmb3JtR3JvdXAsIGxhbmd1YWdlKTtcclxuICAgICAgICAgIGNhc2UgXCJidWJibGVcIjpcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QnViYmxlU2VyaWVzT3B0aW9ucyhzZXJpZSwgZm9ybUdyb3VwLCBsYW5ndWFnZSk7XHJcbiAgICAgICAgICBjYXNlIFwicGllXCI6XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFBpZVNlcmllc09wdGlvbnMoc2VyaWUsIGZvcm1Hcm91cCwgbGFuZ3VhZ2UpO1xyXG4gICAgICAgICAgY2FzZSBcImRvbnV0XCI6XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldERvbnV0U2VyaWVzT3B0aW9ucyhzZXJpZSwgZm9ybUdyb3VwLCBsYW5ndWFnZSk7XHJcbiAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICByZXR1cm4ge307XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIHNlcmllcztcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm4gW107XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFNlcmllc09wdGlvbnNOYW1lcyhzZXJpZTogYW55LCBsYW5ndWFnZTogc3RyaW5nKVxyXG4gICAgOiBBZ0JhclNlcmllc09wdGlvbnNOYW1lcyB8IEFnTGluZVNlcmllc09wdGlvbnNOYW1lcyAge1xyXG4gICAgY29uc3Qgb3B0aW9uczogQWdCYXJTZXJpZXNPcHRpb25zTmFtZXMgfCBBZ0xpbmVTZXJpZXNPcHRpb25zTmFtZXMgPSB7fTtcclxuXHJcbiAgICBpZiAodGhpcy5pc1N0cmluZyhzZXJpZS54TmFtZSkpXHJcbiAgICAgIG9wdGlvbnMueE5hbWUgPSB0aGlzLmxvY2FsZShzZXJpZSwgXCJ4TmFtZVwiLCBsYW5ndWFnZSk7XHJcblxyXG4gICAgaWYgKHRoaXMuaXNTdHJpbmcoc2VyaWUueU5hbWUpKVxyXG4gICAgICBvcHRpb25zLnlOYW1lID0gdGhpcy5sb2NhbGUoc2VyaWUsIFwieU5hbWVcIiwgbGFuZ3VhZ2UpO1xyXG5cclxuICAgIGlmICh0aGlzLmlzU3RyaW5nKHNlcmllLmxlZ2VuZEl0ZW1OYW1lKSlcclxuICAgICAgb3B0aW9ucy5sZWdlbmRJdGVtTmFtZSA9IHRoaXMubG9jYWxlKHNlcmllLCBcImxlZ2VuZEl0ZW1OYW1lXCIsIGxhbmd1YWdlKTtcclxuXHJcbiAgICByZXR1cm4gb3B0aW9ucztcclxuICB9XHJcbiAgXHJcbiAgcHJpdmF0ZSBnZXRCYXNlU2VyaWVzT3B0aW9ucyhzZXJpZTogYW55LCBmb3JtR3JvdXA6IEZvcm1Hcm91cCk6IEFnQmFzZVNlcmllc09wdGlvbnM8YW55PlxyXG4gIHtcclxuICAgIGNvbnN0IG9wdGlvbnM6IEFnQmFzZVNlcmllc09wdGlvbnM8YW55PiA9IHsgfTtcclxuXHJcbiAgICBpZiAodGhpcy5pc0Jvb2xlYW4oc2VyaWUudmlzaWJsZSkpXHJcbiAgICAgIG9wdGlvbnMudmlzaWJsZSA9IHNlcmllLnZpc2libGU7XHJcblxyXG4gICAgcmV0dXJuIG9wdGlvbnM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEJhclNlcmllc09wdGlvbnMoc2VyaWU6IGFueSwgZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGxhbmd1YWdlOiBzdHJpbmcpOiBBZ0JhclNlcmllc09wdGlvbnMge1xyXG4gICAgY29uc3Qgb3B0aW9uczogQWdCYXJTZXJpZXNPcHRpb25zID0ge1xyXG4gICAgICB0eXBlOiBcImJhclwiLFxyXG4gICAgICB4S2V5OiBzZXJpZS54S2V5LFxyXG4gICAgICB5S2V5OiBzZXJpZS55S2V5LFxyXG4gICAgICAuLi50aGlzLmdldEJhc2VTZXJpZXNPcHRpb25zKHNlcmllLCBmb3JtR3JvdXApLFxyXG4gICAgICAuLi50aGlzLmdldFNlcmllc09wdGlvbnNOYW1lcyhzZXJpZSwgbGFuZ3VhZ2UpXHJcbiAgICB9O1xyXG5cclxuICAgIGlmICh0aGlzLmlzRGlyZWN0aW9uKHNlcmllLmRpcmVjdGlvbikpXHJcbiAgICAgIG9wdGlvbnMuZGlyZWN0aW9uID0gc2VyaWUuZGlyZWN0aW9uO1xyXG5cclxuICAgIGlmICh0aGlzLmlzQm9vbGVhbihzZXJpZS5zdGFja2VkKSlcclxuICAgICAgb3B0aW9ucy5zdGFja2VkID0gc2VyaWUuc3RhY2tlZDtcclxuXHJcbiAgICBpZiAodGhpcy5pc051bWJlcihzZXJpZS5ub3JtYWxpemVkVG8pKVxyXG4gICAgICBvcHRpb25zLm5vcm1hbGl6ZWRUbyA9IHNlcmllLm5vcm1hbGl6ZWRUbztcclxuXHJcbiAgICBpZiAodGhpcy5pc1N0cmluZyhzZXJpZS5zdGFja0dyb3VwKSlcclxuICAgICAgb3B0aW9ucy5zdGFja0dyb3VwID0gc2VyaWUuc3RhY2tHcm91cDtcclxuXHJcbiAgICByZXR1cm4gb3B0aW9ucztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0TGluZVNlcmllc09wdGlvbnMoc2VyaWU6IGFueSwgZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGxhbmd1YWdlOiBzdHJpbmcpOiBBZ0xpbmVTZXJpZXNPcHRpb25zIHtcclxuICAgIGNvbnN0IG9wdGlvbnM6IEFnTGluZVNlcmllc09wdGlvbnMgPSB7XHJcbiAgICAgIHR5cGU6IFwibGluZVwiLFxyXG4gICAgICB4S2V5OiBzZXJpZS54S2V5LFxyXG4gICAgICB5S2V5OiBzZXJpZS55S2V5LFxyXG4gICAgICAuLi50aGlzLmdldEJhc2VTZXJpZXNPcHRpb25zKHNlcmllLCBmb3JtR3JvdXApLFxyXG4gICAgICAuLi50aGlzLmdldFNlcmllc09wdGlvbnNOYW1lcyhzZXJpZSwgbGFuZ3VhZ2UpXHJcbiAgICB9O1xyXG5cclxuICAgIGlmICh0aGlzLmlzSW50ZXJwb2xhdGlvbihzZXJpZS5pbnRlcnBvbGF0aW9uKSkgeyBcclxuICAgICAgb3B0aW9ucy5pbnRlcnBvbGF0aW9uID0ge1xyXG4gICAgICAgIHR5cGU6IHNlcmllLmludGVycG9sYXRpb25cclxuICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gb3B0aW9ucztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0QXJlYVNlcmllc09wdGlvbnMoc2VyaWU6IGFueSwgZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGxhbmd1YWdlOiBzdHJpbmcpOiBBZ0FyZWFTZXJpZXNPcHRpb25zIHtcclxuICAgIGNvbnN0IG9wdGlvbnM6IEFnQXJlYVNlcmllc09wdGlvbnMgPSB7XHJcbiAgICAgIHR5cGU6IFwiYXJlYVwiLFxyXG4gICAgICB4S2V5OiBzZXJpZS54S2V5LFxyXG4gICAgICB5S2V5OiBzZXJpZS55S2V5LFxyXG4gICAgICAuLi50aGlzLmdldEJhc2VTZXJpZXNPcHRpb25zKHNlcmllLCBmb3JtR3JvdXApLFxyXG4gICAgICAuLi50aGlzLmdldEFyZWFTZXJpZXNPcHRpb25zTmFtZXMoc2VyaWUsIGxhbmd1YWdlKVxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAodGhpcy5pc0Jvb2xlYW4oc2VyaWUuc3RhY2tlZCkpXHJcbiAgICAgIG9wdGlvbnMuc3RhY2tlZCA9IHNlcmllLnN0YWNrZWQ7XHJcblxyXG4gICAgaWYgKHRoaXMuaXNOdW1iZXIoc2VyaWUubm9ybWFsaXplZFRvKSlcclxuICAgICAgb3B0aW9ucy5ub3JtYWxpemVkVG8gPSBzZXJpZS5ub3JtYWxpemVkVG87XHJcblxyXG4gICAgcmV0dXJuIG9wdGlvbnM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEFyZWFTZXJpZXNPcHRpb25zTmFtZXMoc2VyaWU6IGFueSwgbGFuZ3VhZ2U6IHN0cmluZylcclxuICAgIDogQWdBcmVhU2VyaWVzT3B0aW9uc05hbWVzIHtcclxuICAgIGNvbnN0IG9wdGlvbnM6IEFnQXJlYVNlcmllc09wdGlvbnNOYW1lcyA9IHt9O1xyXG5cclxuICAgIGlmIChzZXJpZS54TmFtZSlcclxuICAgICAgb3B0aW9ucy54TmFtZSA9IHRoaXMubG9jYWxlKHNlcmllLCBcInhOYW1lXCIsIGxhbmd1YWdlKTtcclxuXHJcbiAgICBpZiAoc2VyaWUueU5hbWUpXHJcbiAgICAgIG9wdGlvbnMueU5hbWUgPSB0aGlzLmxvY2FsZShzZXJpZSwgXCJ5TmFtZVwiLCBsYW5ndWFnZSk7XHJcblxyXG4gICAgcmV0dXJuIG9wdGlvbnM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFNjYXR0ZXJTZXJpZXNPcHRpb25zKHNlcmllOiBhbnksIGZvcm1Hcm91cDogRm9ybUdyb3VwLCBsYW5ndWFnZTogc3RyaW5nKTogQWdTY2F0dGVyU2VyaWVzT3B0aW9ucyB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB0eXBlOiBcInNjYXR0ZXJcIixcclxuICAgICAgeEtleTogc2VyaWUueEtleSxcclxuICAgICAgeUtleTogc2VyaWUueUtleSxcclxuICAgICAgbGFiZWxLZXk6IHNlcmllLmxhYmVsS2V5LFxyXG4gICAgICAuLi50aGlzLmdldEJhc2VTZXJpZXNPcHRpb25zKHNlcmllLCBmb3JtR3JvdXApLFxyXG4gICAgICAuLi50aGlzLmdldFNjYXR0ZXJTZXJpZXNPcHRpb25zTmFtZXMoc2VyaWUsIGxhbmd1YWdlKVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0U2NhdHRlclNlcmllc09wdGlvbnNOYW1lcyhzZXJpZTogYW55LCBsYW5ndWFnZTogc3RyaW5nKVxyXG4gICAgOiBBZ1NjYXR0ZXJTZXJpZXNPcHRpb25zTmFtZXMge1xyXG4gICAgY29uc3Qgb3B0aW9uczogQWdTY2F0dGVyU2VyaWVzT3B0aW9uc05hbWVzID0ge307XHJcblxyXG4gICAgaWYgKHNlcmllLnhOYW1lKVxyXG4gICAgICBvcHRpb25zLnhOYW1lID0gdGhpcy5sb2NhbGUoc2VyaWUsIFwieE5hbWVcIiwgbGFuZ3VhZ2UpO1xyXG5cclxuICAgIGlmIChzZXJpZS55TmFtZSlcclxuICAgICAgb3B0aW9ucy55TmFtZSA9IHRoaXMubG9jYWxlKHNlcmllLCBcInlOYW1lXCIsIGxhbmd1YWdlKTtcclxuXHJcbiAgICBpZiAoc2VyaWUubGFiZWxOYW1lKVxyXG4gICAgICBvcHRpb25zLmxhYmVsTmFtZSA9IHRoaXMubG9jYWxlKHNlcmllLCBcImxhYmVsTmFtZVwiLCBsYW5ndWFnZSk7XHJcblxyXG4gICAgcmV0dXJuIG9wdGlvbnM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEJ1YmJsZVNlcmllc09wdGlvbnMoc2VyaWU6IGFueSwgZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGxhbmd1YWdlOiBzdHJpbmcpOiBBZ0J1YmJsZVNlcmllc09wdGlvbnMge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdHlwZTogXCJidWJibGVcIixcclxuICAgICAgeEtleTogc2VyaWUueEtleSxcclxuICAgICAgeUtleTogc2VyaWUueUtleSxcclxuICAgICAgc2l6ZUtleTogc2VyaWUuc2l6ZUtleSxcclxuICAgICAgbGFiZWxLZXk6IHNlcmllLmxhYmVsS2V5LFxyXG4gICAgICAuLi50aGlzLmdldEJhc2VTZXJpZXNPcHRpb25zKHNlcmllLCBmb3JtR3JvdXApLFxyXG4gICAgICAuLi50aGlzLmdldEJ1YmJsZVNlcmllc09wdGlvbnNOYW1lcyhzZXJpZSwgbGFuZ3VhZ2UpXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRCdWJibGVTZXJpZXNPcHRpb25zTmFtZXMoc2VyaWU6IGFueSwgbGFuZ3VhZ2U6IHN0cmluZylcclxuICAgIDogQWdCdWJibGVTZXJpZXNPcHRpb25zTmFtZXMge1xyXG4gICAgY29uc3Qgb3B0aW9uczogQWdCdWJibGVTZXJpZXNPcHRpb25zTmFtZXMgPSB7fTtcclxuXHJcbiAgICBpZiAoc2VyaWUueE5hbWUpXHJcbiAgICAgIG9wdGlvbnMueE5hbWUgPSB0aGlzLmxvY2FsZShzZXJpZSwgXCJ4TmFtZVwiLCBsYW5ndWFnZSk7XHJcblxyXG4gICAgaWYgKHNlcmllLnlOYW1lKVxyXG4gICAgICBvcHRpb25zLnlOYW1lID0gdGhpcy5sb2NhbGUoc2VyaWUsIFwieU5hbWVcIiwgbGFuZ3VhZ2UpO1xyXG5cclxuICAgIGlmIChzZXJpZS5zaXplTmFtZSlcclxuICAgICAgb3B0aW9ucy5zaXplTmFtZSA9IHRoaXMubG9jYWxlKHNlcmllLCBcInNpemVOYW1lXCIsIGxhbmd1YWdlKTtcclxuXHJcbiAgICBpZiAoc2VyaWUubGFiZWxOYW1lKVxyXG4gICAgICBvcHRpb25zLmxhYmVsTmFtZSA9IHRoaXMubG9jYWxlKHNlcmllLCBcImxhYmVsTmFtZVwiLCBsYW5ndWFnZSk7XHJcblxyXG4gICAgcmV0dXJuIG9wdGlvbnM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFBpZVNlcmllc09wdGlvbnMoc2VyaWU6IGFueSwgZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGxhbmd1YWdlOiBzdHJpbmcpOiBBZ1BpZVNlcmllc09wdGlvbnMge1xyXG4gICAgY29uc3Qgb3B0aW9uczogQWdQaWVTZXJpZXNPcHRpb25zID0ge1xyXG4gICAgICB0eXBlOiBcInBpZVwiLFxyXG4gICAgICBhbmdsZUtleTogc2VyaWUuYW5nbGVLZXksXHJcbiAgICAgIC4uLnRoaXMuZ2V0QmFzZVNlcmllc09wdGlvbnMoc2VyaWUsIGZvcm1Hcm91cCksXHJcbiAgICAgIC4uLnRoaXMuZ2V0UGllU2VyaWVzT3B0aW9uc05hbWVzKHNlcmllLCBsYW5ndWFnZSlcclxuICAgIH07XHJcblxyXG4gICAgaWYgKHRoaXMuaXNTdHJpbmcoc2VyaWUucmFkaXVzS2V5KSlcclxuICAgICAgb3B0aW9ucy5yYWRpdXNLZXkgPSBzZXJpZS5yYWRpdXNLZXk7XHJcblxyXG4gICAgaWYgKHRoaXMuaXNTdHJpbmcoc2VyaWUuY2FsbG91dExhYmVsS2V5KSlcclxuICAgICAgb3B0aW9ucy5jYWxsb3V0TGFiZWxLZXkgPSBzZXJpZS5jYWxsb3V0TGFiZWxLZXk7XHJcblxyXG4gICAgaWYgKHRoaXMuaXNTdHJpbmcoc2VyaWUuc2VjdG9yTGFiZWxLZXkpKVxyXG4gICAgICBvcHRpb25zLnNlY3RvckxhYmVsS2V5ID0gc2VyaWUuc2VjdG9yTGFiZWxLZXk7XHJcblxyXG4gICAgaWYgKHRoaXMuaXNTdHJpbmcoc2VyaWUubGVnZW5kSXRlbUtleSkpXHJcbiAgICAgIG9wdGlvbnMubGVnZW5kSXRlbUtleSA9IHNlcmllLmxlZ2VuZEl0ZW1LZXk7XHJcblxyXG4gICAgcmV0dXJuIG9wdGlvbnM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFBpZVNlcmllc09wdGlvbnNOYW1lcyhzZXJpZTogYW55LCBsYW5ndWFnZTogc3RyaW5nKVxyXG4gICAgOiBBZ1BpZVNlcmllc09wdGlvbnNOYW1lcyB7XHJcbiAgICBjb25zdCBvcHRpb25zOiBBZ1BpZVNlcmllc09wdGlvbnNOYW1lcyA9IHt9O1xyXG5cclxuICAgIGlmIChzZXJpZS5hbmdsZU5hbWUpXHJcbiAgICAgIG9wdGlvbnMuYW5nbGVOYW1lID0gdGhpcy5sb2NhbGUoc2VyaWUsIFwiYW5nbGVOYW1lXCIsIGxhbmd1YWdlKTtcclxuXHJcbiAgICBpZiAoc2VyaWUucmFkaXVzTmFtZSlcclxuICAgICAgb3B0aW9ucy5yYWRpdXNOYW1lID0gdGhpcy5sb2NhbGUoc2VyaWUsIFwicmFkaXVzTmFtZVwiLCBsYW5ndWFnZSk7XHJcblxyXG4gICAgaWYgKHNlcmllLmNhbGxvdXRMYWJlbE5hbWUpXHJcbiAgICAgIG9wdGlvbnMuY2FsbG91dExhYmVsTmFtZSA9IHRoaXMubG9jYWxlKHNlcmllLCBcImNhbGxvdXRMYWJlbE5hbWVcIiwgbGFuZ3VhZ2UpO1xyXG5cclxuICAgIGlmIChzZXJpZS5zZWN0b3JMYWJlbE5hbWUpXHJcbiAgICAgIG9wdGlvbnMuc2VjdG9yTGFiZWxOYW1lID0gdGhpcy5sb2NhbGUoc2VyaWUsIFwic2VjdG9yTGFiZWxOYW1lXCIsIGxhbmd1YWdlKTtcclxuXHJcbiAgICByZXR1cm4gb3B0aW9ucztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RG9udXRTZXJpZXNPcHRpb25zKHNlcmllOiBhbnksIGZvcm1Hcm91cDogRm9ybUdyb3VwLCBsYW5ndWFnZTogc3RyaW5nKTogQWdEb251dFNlcmllc09wdGlvbnMge1xyXG4gICAgY29uc3Qgb3B0aW9uczogQWdEb251dFNlcmllc09wdGlvbnMgPSB7XHJcbiAgICAgIHR5cGU6IFwiZG9udXRcIixcclxuICAgICAgYW5nbGVLZXk6IHNlcmllLmFuZ2xlS2V5LFxyXG4gICAgICAuLi50aGlzLmdldEJhc2VTZXJpZXNPcHRpb25zKHNlcmllLCBmb3JtR3JvdXApLFxyXG4gICAgICAuLi50aGlzLmdldERvbnV0U2VyaWVzT3B0aW9uc05hbWVzKHNlcmllLCBsYW5ndWFnZSlcclxuICAgIH07XHJcblxyXG4gICAgaWYgKHRoaXMuaXNTdHJpbmcoc2VyaWUucmFkaXVzS2V5KSlcclxuICAgICAgb3B0aW9ucy5yYWRpdXNLZXkgPSBzZXJpZS5yYWRpdXNLZXk7XHJcblxyXG4gICAgaWYgKHRoaXMuaXNTdHJpbmcoc2VyaWUuY2FsbG91dExhYmVsS2V5KSlcclxuICAgICAgb3B0aW9ucy5jYWxsb3V0TGFiZWxLZXkgPSBzZXJpZS5jYWxsb3V0TGFiZWxLZXk7XHJcblxyXG4gICAgaWYgKHRoaXMuaXNTdHJpbmcoc2VyaWUuc2VjdG9yTGFiZWxLZXkpKVxyXG4gICAgICBvcHRpb25zLnNlY3RvckxhYmVsS2V5ID0gc2VyaWUuc2VjdG9yTGFiZWxLZXk7XHJcblxyXG4gICAgaWYgKHRoaXMuaXNTdHJpbmcoc2VyaWUubGVnZW5kSXRlbUtleSkpXHJcbiAgICAgIG9wdGlvbnMubGVnZW5kSXRlbUtleSA9IHNlcmllLmxlZ2VuZEl0ZW1LZXk7XHJcblxyXG4gICAgcmV0dXJuIG9wdGlvbnM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldERvbnV0U2VyaWVzT3B0aW9uc05hbWVzKHNlcmllOiBhbnksIGxhbmd1YWdlOiBzdHJpbmcpXHJcbiAgICA6IEFnRG9udXRTZXJpZXNPcHRpb25zTmFtZXMge1xyXG4gICAgY29uc3Qgb3B0aW9uczogQWdEb251dFNlcmllc09wdGlvbnNOYW1lcyA9IHt9O1xyXG5cclxuICAgIGlmIChzZXJpZS5hbmdsZU5hbWUpXHJcbiAgICAgIG9wdGlvbnMuYW5nbGVOYW1lID0gdGhpcy5sb2NhbGUoc2VyaWUsIFwiYW5nbGVOYW1lXCIsIGxhbmd1YWdlKTtcclxuXHJcbiAgICBpZiAoc2VyaWUucmFkaXVzTmFtZSlcclxuICAgICAgb3B0aW9ucy5yYWRpdXNOYW1lID0gdGhpcy5sb2NhbGUoc2VyaWUsIFwicmFkaXVzTmFtZVwiLCBsYW5ndWFnZSk7XHJcblxyXG4gICAgaWYgKHNlcmllLmNhbGxvdXRMYWJlbE5hbWUpXHJcbiAgICAgIG9wdGlvbnMuY2FsbG91dExhYmVsTmFtZSA9IHRoaXMubG9jYWxlKHNlcmllLCBcImNhbGxvdXRMYWJlbE5hbWVcIiwgbGFuZ3VhZ2UpO1xyXG5cclxuICAgIGlmIChzZXJpZS5zZWN0b3JMYWJlbE5hbWUpXHJcbiAgICAgIG9wdGlvbnMuc2VjdG9yTGFiZWxOYW1lID0gdGhpcy5sb2NhbGUoc2VyaWUsIFwic2VjdG9yTGFiZWxOYW1lXCIsIGxhbmd1YWdlKTtcclxuXHJcbiAgICByZXR1cm4gb3B0aW9ucztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0UHJvcHMoY29tcG9uZW50OiBhbnkpOiBhbnkge1xyXG4gICAgY29uc3QgcHJvcHM6IGFueSA9IHt9O1xyXG5cclxuICAgIGlmIChjb21wb25lbnQgJiYgY29tcG9uZW50LnRpdGxlKSB7XHJcbiAgICAgIHByb3BzLnRpdGxlID0geyB0ZXh0OiBjb21wb25lbnQudGl0bGUgfTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoY29tcG9uZW50ICYmIGNvbXBvbmVudC5zdWJ0aXRsZSkge1xyXG4gICAgICBwcm9wcy5zdWJ0aXRsZSA9IHsgdGV4dDogY29tcG9uZW50LnN1YnRpdGxlIH07XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHByb3BzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0Jvb2xlYW4odmFsdWU6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nIHx8IHZhbHVlIGluc3RhbmNlb2YgQm9vbGVhbjtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNTdHJpbmcodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgfHwgdmFsdWUgaW5zdGFuY2VvZiBTdHJpbmc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzTnVtYmVyKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInICYmIGlzRmluaXRlKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNEaXJlY3Rpb24odmFsdWU6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHZhbHVlID09PSAnaG9yaXpvbnRhbCcgfHwgdmFsdWUgPT09ICd2ZXJ0aWNhbCc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzSW50ZXJwb2xhdGlvbih2YWx1ZTogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdmFsdWUgPT09ICdsaW5lYXInIHx8IHZhbHVlID09PSAnc21vb3RoJyB8fCB2YWx1ZSA9PT0gJ3N0ZXAnO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,6 +1,7 @@
1
1
  import { Injectable } from '@angular/core';
2
2
  import { ToBoundArrows } from '../utils/functions';
3
3
  import { DialogComponent } from '../dialog/dialog.component';
4
+ import { DynamicFormComponent } from '../dynamic-form/dynamic-form.component';
4
5
  import * as i0 from "@angular/core";
5
6
  import * as i1 from "ngx-sirio-lib";
6
7
  export class DialogService {
@@ -64,7 +65,8 @@ export class DialogService {
64
65
  showDialog(formSchema, options) {
65
66
  const data = {
66
67
  formSchema,
67
- options
68
+ options,
69
+ dynamicFormType: DynamicFormComponent
68
70
  };
69
71
  this.dialogService
70
72
  .openDialog(DialogComponent, data);
@@ -100,4 +102,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
100
102
  providedIn: 'root'
101
103
  }]
102
104
  }], ctorParameters: () => [{ type: i1.SirioDialogService }] });
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2lyaW8vc3JjL2xpYi9zZXJ2aWNlcy9kaWFsb2cuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBR3JELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7OztBQUs3RCxNQUFNLE9BQU8sYUFBYTtJQUdkO0lBRFYsWUFDVSxhQUFpQztRQUFqQyxrQkFBYSxHQUFiLGFBQWEsQ0FBb0I7SUFFekMsQ0FBQztJQUVILFVBQVUsQ0FBQyxVQUFlLEVBQUUsT0FBMkI7UUFDckQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFZLEVBQUUsT0FBdUI7UUFDekMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9DLE1BQU0sV0FBVyxHQUF1QjtZQUN0QyxHQUFHLE9BQU87WUFDVixJQUFJLEVBQUUsU0FBUztZQUNmLE9BQU8sRUFBRSxJQUFJO1lBQ2IsUUFBUSxFQUFFLEtBQUs7WUFDZixPQUFPLEVBQUUsS0FBSztZQUNkLGFBQWEsRUFBRSxLQUFLO1lBQ3BCLFlBQVksRUFBRSxLQUFLO1lBQ25CLGFBQWEsRUFBRSxLQUFLO1NBQ3JCLENBQUM7UUFDRixJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsSUFBSSxDQUFDLElBQVksRUFBRSxPQUF1QjtRQUN4QyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0MsTUFBTSxXQUFXLEdBQXNCO1lBQ3JDLEdBQUcsT0FBTztZQUNWLElBQUksRUFBRSxNQUFNO1lBQ1osT0FBTyxFQUFFLElBQUk7WUFDYixRQUFRLEVBQUUsS0FBSztZQUNmLE9BQU8sRUFBRSxLQUFLO1lBQ2QsYUFBYSxFQUFFLEtBQUs7WUFDcEIsWUFBWSxFQUFFLEtBQUs7WUFDbkIsYUFBYSxFQUFFLEtBQUs7U0FDckIsQ0FBQztRQUNGLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxPQUFPLENBQUMsSUFBWSxFQUFFLE9BQXVCO1FBQzNDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQyxNQUFNLFdBQVcsR0FBc0I7WUFDckMsR0FBRyxPQUFPO1lBQ1YsSUFBSSxFQUFFLE1BQU07WUFDWixPQUFPLEVBQUUsT0FBTztZQUNoQixRQUFRLEVBQUUsS0FBSztZQUNmLE9BQU8sRUFBRSxLQUFLO1lBQ2QsYUFBYSxFQUFFLEtBQUs7WUFDcEIsWUFBWSxFQUFFLEtBQUs7WUFDbkIsYUFBYSxFQUFFLEtBQUs7U0FDckIsQ0FBQztRQUNGLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxVQUFVO1FBQ1IsT0FBTyxhQUFhLENBQUMsSUFBSSxFQUFFO1lBQ3pCLFlBQVk7WUFDWixPQUFPO1lBQ1AsTUFBTTtZQUNOLFNBQVM7U0FDVixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sVUFBVSxDQUFDLFVBQWUsRUFBRSxPQUEyQjtRQUU3RCxNQUFNLElBQUksR0FBRztZQUNYLFVBQVU7WUFDVixPQUFPO1NBQ1IsQ0FBQztRQUVGLElBQUksQ0FBQyxhQUFhO2FBQ2YsVUFBVSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsSUFBWTtRQUNuQyxPQUFPO1lBQ0wsT0FBTyxFQUFFO2dCQUNQO29CQUNFLFlBQVksRUFBRTt3QkFDWjs0QkFDRSxNQUFNLEVBQUUsSUFBSTs0QkFDWixNQUFNLEVBQUUsTUFBTTs0QkFDZCxRQUFRLEVBQUU7Z0NBQ1IsS0FBSyxFQUFFLGFBQWE7Z0NBQ3BCLFNBQVMsRUFBRSxJQUFJOzZCQUNoQjs0QkFDRCxJQUFJLEVBQUUsZUFBZTt5QkFDdEI7cUJBQ0Y7b0JBQ0QsTUFBTSxFQUFFLFNBQVM7b0JBQ2pCLElBQUksRUFBRSxjQUFjO29CQUNwQixlQUFlLEVBQUUsRUFBRTtpQkFDcEI7YUFDRjtTQUNGLENBQUE7SUFDSCxDQUFDO3dHQWpHVSxhQUFhOzRHQUFiLGFBQWEsY0FGWixNQUFNOzs0RkFFUCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNpcmlvRGlhbG9nU2VydmljZSwgRGlhbG9nVHlwZXMsIERpYWxvZ1NpemVzIH0gZnJvbSAnbmd4LXNpcmlvLWxpYic7XHJcbmltcG9ydCB7IElFdmFsdWF0b3JQcm92aWRlciB9IGZyb20gJy4uL3NlcnZpY2VzL3Byb2dyYW1tYWJpbGl0eS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVG9Cb3VuZEFycm93cyB9IGZyb20gJy4uL3V0aWxzL2Z1bmN0aW9ucyc7XHJcbmltcG9ydCB7IERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2RpYWxvZy9kaWFsb2cuY29tcG9uZW50JztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIERpYWxvZ1NlcnZpY2UgaW1wbGVtZW50cyBJRXZhbHVhdG9yUHJvdmlkZXIge1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZGlhbG9nU2VydmljZTogU2lyaW9EaWFsb2dTZXJ2aWNlXHJcbiAgICApXHJcbiAgeyB9XHJcblxyXG4gIG9wZW5EaWFsb2coZm9ybVNjaGVtYTogYW55LCBvcHRpb25zPzogRm9ybURpYWxvZ09wdGlvbnMpIHtcclxuICAgIHRoaXMuc2hvd0RpYWxvZyhmb3JtU2NoZW1hLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIGFsZXJ0KHRleHQ6IHN0cmluZywgb3B0aW9ucz86IERpYWxvZ09wdGlvbnMpIHtcclxuICAgIGNvbnN0IGZvcm1TY2hlbWEgPSB0aGlzLmNyZWF0ZVRleHRTY2hlbWEodGV4dCk7XHJcbiAgICBjb25zdCBmb3JtT3B0aW9ucyA6IEZvcm1EaWFsb2dPcHRpb25zID0ge1xyXG4gICAgICAuLi5vcHRpb25zLFxyXG4gICAgICB0eXBlOiBcIndhcm5pbmdcIixcclxuICAgICAgYnV0dG9uczogJ09LJyxcclxuICAgICAgaXNEcmF3ZXI6IGZhbHNlLFxyXG4gICAgICBzaG93TmF2OiBmYWxzZSxcclxuICAgICAgc2hvd05hdkJ1dHRvbjogZmFsc2UsXHJcbiAgICAgIHNob3dQcm9ncmVzczogZmFsc2UsXHJcbiAgICAgIHNob3dGb3JtVGl0bGU6IGZhbHNlXHJcbiAgICB9O1xyXG4gICAgdGhpcy5zaG93RGlhbG9nKGZvcm1TY2hlbWEsIGZvcm1PcHRpb25zKTtcclxuICB9XHJcblxyXG4gIGluZm8odGV4dDogc3RyaW5nLCBvcHRpb25zPzogRGlhbG9nT3B0aW9ucykge1xyXG4gICAgY29uc3QgZm9ybVNjaGVtYSA9IHRoaXMuY3JlYXRlVGV4dFNjaGVtYSh0ZXh0KTtcclxuICAgIGNvbnN0IGZvcm1PcHRpb25zOiBGb3JtRGlhbG9nT3B0aW9ucyA9IHtcclxuICAgICAgLi4ub3B0aW9ucyxcclxuICAgICAgdHlwZTogXCJpbmZvXCIsXHJcbiAgICAgIGJ1dHRvbnM6ICdPSycsXHJcbiAgICAgIGlzRHJhd2VyOiBmYWxzZSxcclxuICAgICAgc2hvd05hdjogZmFsc2UsXHJcbiAgICAgIHNob3dOYXZCdXR0b246IGZhbHNlLFxyXG4gICAgICBzaG93UHJvZ3Jlc3M6IGZhbHNlLFxyXG4gICAgICBzaG93Rm9ybVRpdGxlOiBmYWxzZVxyXG4gICAgfTtcclxuICAgIHRoaXMuc2hvd0RpYWxvZyhmb3JtU2NoZW1hLCBmb3JtT3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBjb25maXJtKHRleHQ6IHN0cmluZywgb3B0aW9ucz86IERpYWxvZ09wdGlvbnMpIHtcclxuICAgIGNvbnN0IGZvcm1TY2hlbWEgPSB0aGlzLmNyZWF0ZVRleHRTY2hlbWEodGV4dCk7XHJcbiAgICBjb25zdCBmb3JtT3B0aW9uczogRm9ybURpYWxvZ09wdGlvbnMgPSB7XHJcbiAgICAgIC4uLm9wdGlvbnMsXHJcbiAgICAgIHR5cGU6IFwiaW5mb1wiLFxyXG4gICAgICBidXR0b25zOiAnWWVzTm8nLFxyXG4gICAgICBpc0RyYXdlcjogZmFsc2UsXHJcbiAgICAgIHNob3dOYXY6IGZhbHNlLFxyXG4gICAgICBzaG93TmF2QnV0dG9uOiBmYWxzZSxcclxuICAgICAgc2hvd1Byb2dyZXNzOiBmYWxzZSxcclxuICAgICAgc2hvd0Zvcm1UaXRsZTogZmFsc2VcclxuICAgIH07ICAgIFxyXG4gICAgdGhpcy5zaG93RGlhbG9nKGZvcm1TY2hlbWEsIGZvcm1PcHRpb25zKTtcclxuICB9XHJcblxyXG4gIGdldENvbnRleHQoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XHJcbiAgICByZXR1cm4gVG9Cb3VuZEFycm93cyh0aGlzLCBbXHJcbiAgICAgICdvcGVuRGlhbG9nJyxcclxuICAgICAgJ2FsZXJ0JyxcclxuICAgICAgJ2luZm8nLFxyXG4gICAgICAnY29uZmlybSdcclxuICAgIF0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzaG93RGlhbG9nKGZvcm1TY2hlbWE6IGFueSwgb3B0aW9ucz86IEZvcm1EaWFsb2dPcHRpb25zKSB7XHJcbiAgICBcclxuICAgIGNvbnN0IGRhdGEgPSB7XHJcbiAgICAgIGZvcm1TY2hlbWEsXHJcbiAgICAgIG9wdGlvbnNcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5kaWFsb2dTZXJ2aWNlXHJcbiAgICAgIC5vcGVuRGlhbG9nKERpYWxvZ0NvbXBvbmVudCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZVRleHRTY2hlbWEodGV4dDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBcImZvcm1zXCI6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBcImNvbXBvbmVudHNcIjogW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgXCJ0ZXh0XCI6IHRleHQsXHJcbiAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwidGV4dFwiLFxyXG4gICAgICAgICAgICAgIFwibGF5b3V0XCI6IHtcclxuICAgICAgICAgICAgICAgIFwicm93XCI6IFwiUm93XzE0ejlteW9cIixcclxuICAgICAgICAgICAgICAgIFwiY29sdW1uc1wiOiBudWxsXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBcImlkXCI6IFwiRmllbGRfMXhpYnAyclwiXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIF0sXHJcbiAgICAgICAgICBcInR5cGVcIjogXCJkZWZhdWx0XCIsXHJcbiAgICAgICAgICBcImlkXCI6IFwiRm9ybV8wbG90bTJoXCIsXHJcbiAgICAgICAgICBcInNjaGVtYVZlcnNpb25cIjogMThcclxuICAgICAgICB9XHJcbiAgICAgIF1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRGlhbG9nT3B0aW9ucyB7XHJcbiAgdHlwZT86IERpYWxvZ1R5cGVzO1xyXG4gIHNpemU/OiBEaWFsb2dTaXplcztcclxuICB0aXRsZT86IHN0cmluZztcclxuICBpc0RyYXdlcj86IGJvb2xlYW47ICBcclxuICBjbG9zZUJ1dHRvbj86IGJvb2xlYW47XHJcbiAgbGFuZ3VhZ2U/OiBzdHJpbmc7XHJcbiAgYnV0dG9ucz86IERpYWxvZ0J1dHRvbnM7ICBcclxuICBvblJlc3VsdD86IChyZXN1bHQ6IERpYWxvZ1Jlc3VsdCkgPT4gdm9pZDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGb3JtRGlhbG9nT3B0aW9ucyBleHRlbmRzIERpYWxvZ09wdGlvbnMge1xyXG4gIHZhbHVlPzogYW55O1xyXG4gIGluamVjdG9yPzogSW5qZWN0b3I7XHJcbiAgc2hvd05hdj86IGJvb2xlYW47XHJcbiAgc2hvd05hdkJ1dHRvbj86IGJvb2xlYW47XHJcbiAgc2hvd1Byb2dyZXNzPzogYm9vbGVhbjtcclxuICBzaG93Rm9ybVRpdGxlPzogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEaWFsb2dSZXN1bHQge1xyXG4gIGFjdGlvbjogRGlhbG9nQWN0aW9uO1xyXG4gIHZhbHVlPzogYW55O1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBEaWFsb2dBY3Rpb24gPSAnT0snXHJcbiAgfCAnQ2FuY2VsJ1xyXG4gIHwgJ1llcydcclxuICB8ICdObydcclxuICB8ICdDb25maXJtJ1xyXG4gIHwgJ0Nsb3NlJ1xyXG4gIHwgJ0Fib3J0J1xyXG4gIHwgJ1JldHJ5J1xyXG4gIHwgJ0lnbm9yZSdcclxuICB8ICdUcnknXHJcbiAgfCAnQ29udGludWUnO1xyXG5cclxuZXhwb3J0IHR5cGUgRGlhbG9nQnV0dG9ucyA9ICdPSydcclxuICB8ICdPS0NhbmNlbCdcclxuICB8ICdDb25maXJtQ2FuY2VsJ1xyXG4gIHwgJ0Fib3J0UmV0cnlJZ25vcmUnXHJcbiAgfCAnWWVzTm9DYW5jZWwnXHJcbiAgfCAnWWVzTm8nXHJcbiAgfCAnUmV0cnlDYW5jZWwnXHJcbiAgfCAnQ2FuY2VsVHJ5Q29udGludWUnO1xyXG4iXX0=
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2lyaW8vc3JjL2xpYi9zZXJ2aWNlcy9kaWFsb2cuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBR3JELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7OztBQUs5RSxNQUFNLE9BQU8sYUFBYTtJQUdkO0lBRFYsWUFDVSxhQUFpQztRQUFqQyxrQkFBYSxHQUFiLGFBQWEsQ0FBb0I7SUFFekMsQ0FBQztJQUVILFVBQVUsQ0FBQyxVQUFlLEVBQUUsT0FBMkI7UUFDckQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFZLEVBQUUsT0FBdUI7UUFDekMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9DLE1BQU0sV0FBVyxHQUF1QjtZQUN0QyxHQUFHLE9BQU87WUFDVixJQUFJLEVBQUUsU0FBUztZQUNmLE9BQU8sRUFBRSxJQUFJO1lBQ2IsUUFBUSxFQUFFLEtBQUs7WUFDZixPQUFPLEVBQUUsS0FBSztZQUNkLGFBQWEsRUFBRSxLQUFLO1lBQ3BCLFlBQVksRUFBRSxLQUFLO1lBQ25CLGFBQWEsRUFBRSxLQUFLO1NBQ3JCLENBQUM7UUFDRixJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsSUFBSSxDQUFDLElBQVksRUFBRSxPQUF1QjtRQUN4QyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0MsTUFBTSxXQUFXLEdBQXNCO1lBQ3JDLEdBQUcsT0FBTztZQUNWLElBQUksRUFBRSxNQUFNO1lBQ1osT0FBTyxFQUFFLElBQUk7WUFDYixRQUFRLEVBQUUsS0FBSztZQUNmLE9BQU8sRUFBRSxLQUFLO1lBQ2QsYUFBYSxFQUFFLEtBQUs7WUFDcEIsWUFBWSxFQUFFLEtBQUs7WUFDbkIsYUFBYSxFQUFFLEtBQUs7U0FDckIsQ0FBQztRQUNGLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxPQUFPLENBQUMsSUFBWSxFQUFFLE9BQXVCO1FBQzNDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQyxNQUFNLFdBQVcsR0FBc0I7WUFDckMsR0FBRyxPQUFPO1lBQ1YsSUFBSSxFQUFFLE1BQU07WUFDWixPQUFPLEVBQUUsT0FBTztZQUNoQixRQUFRLEVBQUUsS0FBSztZQUNmLE9BQU8sRUFBRSxLQUFLO1lBQ2QsYUFBYSxFQUFFLEtBQUs7WUFDcEIsWUFBWSxFQUFFLEtBQUs7WUFDbkIsYUFBYSxFQUFFLEtBQUs7U0FDckIsQ0FBQztRQUNGLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxVQUFVO1FBQ1IsT0FBTyxhQUFhLENBQUMsSUFBSSxFQUFFO1lBQ3pCLFlBQVk7WUFDWixPQUFPO1lBQ1AsTUFBTTtZQUNOLFNBQVM7U0FDVixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sVUFBVSxDQUFDLFVBQWUsRUFBRSxPQUEyQjtRQUU3RCxNQUFNLElBQUksR0FBRztZQUNYLFVBQVU7WUFDVixPQUFPO1lBQ1AsZUFBZSxFQUFFLG9CQUFvQjtTQUN0QyxDQUFDO1FBRUYsSUFBSSxDQUFDLGFBQWE7YUFDZixVQUFVLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxJQUFZO1FBQ25DLE9BQU87WUFDTCxPQUFPLEVBQUU7Z0JBQ1A7b0JBQ0UsWUFBWSxFQUFFO3dCQUNaOzRCQUNFLE1BQU0sRUFBRSxJQUFJOzRCQUNaLE1BQU0sRUFBRSxNQUFNOzRCQUNkLFFBQVEsRUFBRTtnQ0FDUixLQUFLLEVBQUUsYUFBYTtnQ0FDcEIsU0FBUyxFQUFFLElBQUk7NkJBQ2hCOzRCQUNELElBQUksRUFBRSxlQUFlO3lCQUN0QjtxQkFDRjtvQkFDRCxNQUFNLEVBQUUsU0FBUztvQkFDakIsSUFBSSxFQUFFLGNBQWM7b0JBQ3BCLGVBQWUsRUFBRSxFQUFFO2lCQUNwQjthQUNGO1NBQ0YsQ0FBQTtJQUNILENBQUM7d0dBbEdVLGFBQWE7NEdBQWIsYUFBYSxjQUZaLE1BQU07OzRGQUVQLGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU2lyaW9EaWFsb2dTZXJ2aWNlLCBEaWFsb2dUeXBlcywgRGlhbG9nU2l6ZXMgfSBmcm9tICduZ3gtc2lyaW8tbGliJztcclxuaW1wb3J0IHsgSUV2YWx1YXRvclByb3ZpZGVyIH0gZnJvbSAnLi4vc2VydmljZXMvcHJvZ3JhbW1hYmlsaXR5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUb0JvdW5kQXJyb3dzIH0gZnJvbSAnLi4vdXRpbHMvZnVuY3Rpb25zJztcclxuaW1wb3J0IHsgRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vZGlhbG9nL2RpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEeW5hbWljRm9ybUNvbXBvbmVudCB9IGZyb20gJy4uL2R5bmFtaWMtZm9ybS9keW5hbWljLWZvcm0uY29tcG9uZW50JztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIERpYWxvZ1NlcnZpY2UgaW1wbGVtZW50cyBJRXZhbHVhdG9yUHJvdmlkZXIge1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZGlhbG9nU2VydmljZTogU2lyaW9EaWFsb2dTZXJ2aWNlXHJcbiAgICApXHJcbiAgeyB9XHJcblxyXG4gIG9wZW5EaWFsb2coZm9ybVNjaGVtYTogYW55LCBvcHRpb25zPzogRm9ybURpYWxvZ09wdGlvbnMpIHtcclxuICAgIHRoaXMuc2hvd0RpYWxvZyhmb3JtU2NoZW1hLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIGFsZXJ0KHRleHQ6IHN0cmluZywgb3B0aW9ucz86IERpYWxvZ09wdGlvbnMpIHtcclxuICAgIGNvbnN0IGZvcm1TY2hlbWEgPSB0aGlzLmNyZWF0ZVRleHRTY2hlbWEodGV4dCk7XHJcbiAgICBjb25zdCBmb3JtT3B0aW9ucyA6IEZvcm1EaWFsb2dPcHRpb25zID0ge1xyXG4gICAgICAuLi5vcHRpb25zLFxyXG4gICAgICB0eXBlOiBcIndhcm5pbmdcIixcclxuICAgICAgYnV0dG9uczogJ09LJyxcclxuICAgICAgaXNEcmF3ZXI6IGZhbHNlLFxyXG4gICAgICBzaG93TmF2OiBmYWxzZSxcclxuICAgICAgc2hvd05hdkJ1dHRvbjogZmFsc2UsXHJcbiAgICAgIHNob3dQcm9ncmVzczogZmFsc2UsXHJcbiAgICAgIHNob3dGb3JtVGl0bGU6IGZhbHNlXHJcbiAgICB9O1xyXG4gICAgdGhpcy5zaG93RGlhbG9nKGZvcm1TY2hlbWEsIGZvcm1PcHRpb25zKTtcclxuICB9XHJcblxyXG4gIGluZm8odGV4dDogc3RyaW5nLCBvcHRpb25zPzogRGlhbG9nT3B0aW9ucykge1xyXG4gICAgY29uc3QgZm9ybVNjaGVtYSA9IHRoaXMuY3JlYXRlVGV4dFNjaGVtYSh0ZXh0KTtcclxuICAgIGNvbnN0IGZvcm1PcHRpb25zOiBGb3JtRGlhbG9nT3B0aW9ucyA9IHtcclxuICAgICAgLi4ub3B0aW9ucyxcclxuICAgICAgdHlwZTogXCJpbmZvXCIsXHJcbiAgICAgIGJ1dHRvbnM6ICdPSycsXHJcbiAgICAgIGlzRHJhd2VyOiBmYWxzZSxcclxuICAgICAgc2hvd05hdjogZmFsc2UsXHJcbiAgICAgIHNob3dOYXZCdXR0b246IGZhbHNlLFxyXG4gICAgICBzaG93UHJvZ3Jlc3M6IGZhbHNlLFxyXG4gICAgICBzaG93Rm9ybVRpdGxlOiBmYWxzZVxyXG4gICAgfTtcclxuICAgIHRoaXMuc2hvd0RpYWxvZyhmb3JtU2NoZW1hLCBmb3JtT3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBjb25maXJtKHRleHQ6IHN0cmluZywgb3B0aW9ucz86IERpYWxvZ09wdGlvbnMpIHtcclxuICAgIGNvbnN0IGZvcm1TY2hlbWEgPSB0aGlzLmNyZWF0ZVRleHRTY2hlbWEodGV4dCk7XHJcbiAgICBjb25zdCBmb3JtT3B0aW9uczogRm9ybURpYWxvZ09wdGlvbnMgPSB7XHJcbiAgICAgIC4uLm9wdGlvbnMsXHJcbiAgICAgIHR5cGU6IFwiaW5mb1wiLFxyXG4gICAgICBidXR0b25zOiAnWWVzTm8nLFxyXG4gICAgICBpc0RyYXdlcjogZmFsc2UsXHJcbiAgICAgIHNob3dOYXY6IGZhbHNlLFxyXG4gICAgICBzaG93TmF2QnV0dG9uOiBmYWxzZSxcclxuICAgICAgc2hvd1Byb2dyZXNzOiBmYWxzZSxcclxuICAgICAgc2hvd0Zvcm1UaXRsZTogZmFsc2VcclxuICAgIH07ICAgIFxyXG4gICAgdGhpcy5zaG93RGlhbG9nKGZvcm1TY2hlbWEsIGZvcm1PcHRpb25zKTtcclxuICB9XHJcblxyXG4gIGdldENvbnRleHQoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XHJcbiAgICByZXR1cm4gVG9Cb3VuZEFycm93cyh0aGlzLCBbXHJcbiAgICAgICdvcGVuRGlhbG9nJyxcclxuICAgICAgJ2FsZXJ0JyxcclxuICAgICAgJ2luZm8nLFxyXG4gICAgICAnY29uZmlybSdcclxuICAgIF0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzaG93RGlhbG9nKGZvcm1TY2hlbWE6IGFueSwgb3B0aW9ucz86IEZvcm1EaWFsb2dPcHRpb25zKSB7XHJcbiAgICBcclxuICAgIGNvbnN0IGRhdGEgPSB7XHJcbiAgICAgIGZvcm1TY2hlbWEsXHJcbiAgICAgIG9wdGlvbnMsXHJcbiAgICAgIGR5bmFtaWNGb3JtVHlwZTogRHluYW1pY0Zvcm1Db21wb25lbnRcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5kaWFsb2dTZXJ2aWNlXHJcbiAgICAgIC5vcGVuRGlhbG9nKERpYWxvZ0NvbXBvbmVudCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZVRleHRTY2hlbWEodGV4dDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBcImZvcm1zXCI6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBcImNvbXBvbmVudHNcIjogW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgXCJ0ZXh0XCI6IHRleHQsXHJcbiAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwidGV4dFwiLFxyXG4gICAgICAgICAgICAgIFwibGF5b3V0XCI6IHtcclxuICAgICAgICAgICAgICAgIFwicm93XCI6IFwiUm93XzE0ejlteW9cIixcclxuICAgICAgICAgICAgICAgIFwiY29sdW1uc1wiOiBudWxsXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBcImlkXCI6IFwiRmllbGRfMXhpYnAyclwiXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIF0sXHJcbiAgICAgICAgICBcInR5cGVcIjogXCJkZWZhdWx0XCIsXHJcbiAgICAgICAgICBcImlkXCI6IFwiRm9ybV8wbG90bTJoXCIsXHJcbiAgICAgICAgICBcInNjaGVtYVZlcnNpb25cIjogMThcclxuICAgICAgICB9XHJcbiAgICAgIF1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRGlhbG9nT3B0aW9ucyB7XHJcbiAgdHlwZT86IERpYWxvZ1R5cGVzO1xyXG4gIHNpemU/OiBEaWFsb2dTaXplcztcclxuICB0aXRsZT86IHN0cmluZztcclxuICBpc0RyYXdlcj86IGJvb2xlYW47ICBcclxuICBjbG9zZUJ1dHRvbj86IGJvb2xlYW47XHJcbiAgbGFuZ3VhZ2U/OiBzdHJpbmc7XHJcbiAgYnV0dG9ucz86IERpYWxvZ0J1dHRvbnM7ICBcclxuICBvblJlc3VsdD86IChyZXN1bHQ6IERpYWxvZ1Jlc3VsdCkgPT4gdm9pZDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGb3JtRGlhbG9nT3B0aW9ucyBleHRlbmRzIERpYWxvZ09wdGlvbnMge1xyXG4gIHZhbHVlPzogYW55O1xyXG4gIGluamVjdG9yPzogSW5qZWN0b3I7XHJcbiAgc2hvd05hdj86IGJvb2xlYW47XHJcbiAgc2hvd05hdkJ1dHRvbj86IGJvb2xlYW47XHJcbiAgc2hvd1Byb2dyZXNzPzogYm9vbGVhbjtcclxuICBzaG93Rm9ybVRpdGxlPzogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEaWFsb2dSZXN1bHQge1xyXG4gIGFjdGlvbjogRGlhbG9nQWN0aW9uO1xyXG4gIHZhbHVlPzogYW55O1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBEaWFsb2dBY3Rpb24gPSAnT0snXHJcbiAgfCAnQ2FuY2VsJ1xyXG4gIHwgJ1llcydcclxuICB8ICdObydcclxuICB8ICdDb25maXJtJ1xyXG4gIHwgJ0Nsb3NlJ1xyXG4gIHwgJ0Fib3J0J1xyXG4gIHwgJ1JldHJ5J1xyXG4gIHwgJ0lnbm9yZSdcclxuICB8ICdUcnknXHJcbiAgfCAnQ29udGludWUnO1xyXG5cclxuZXhwb3J0IHR5cGUgRGlhbG9nQnV0dG9ucyA9ICdPSydcclxuICB8ICdPS0NhbmNlbCdcclxuICB8ICdDb25maXJtQ2FuY2VsJ1xyXG4gIHwgJ0Fib3J0UmV0cnlJZ25vcmUnXHJcbiAgfCAnWWVzTm9DYW5jZWwnXHJcbiAgfCAnWWVzTm8nXHJcbiAgfCAnUmV0cnlDYW5jZWwnXHJcbiAgfCAnQ2FuY2VsVHJ5Q29udGludWUnO1xyXG4iXX0=