@messaia/cdk 17.1.3 → 17.1.5-rc01
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/chips/components/chips.component.mjs +2 -2
- package/esm2022/lib/common/common.module.mjs +2 -1
- package/esm2022/lib/common/models/icon.mjs +37 -0
- package/esm2022/lib/forms/components/generic-form/generic-form.component.mjs +3 -3
- package/esm2022/lib/forms/helpers/abstract-select-form-field.component.mjs +84 -53
- package/esm2022/lib/forms/models/form-field-definition.mjs +22 -7
- package/esm2022/lib/list/components/list.component.mjs +3 -3
- package/esm2022/lib/select/components/select.component.mjs +68 -45
- package/esm2022/lib/table/components/dynamic-table/dynamic-table.component.mjs +3 -3
- package/esm2022/lib/table/enums/table-column-type.mjs +3 -2
- package/esm2022/lib/table/functions/decorators.mjs +5 -1
- package/esm2022/lib/table/models/table-column.mjs +6 -1
- package/fesm2022/messaia-cdk.mjs +228 -112
- package/fesm2022/messaia-cdk.mjs.map +1 -1
- package/lib/common/common.module.d.ts +1 -0
- package/lib/common/models/icon.d.ts +34 -0
- package/lib/forms/helpers/abstract-select-form-field.component.d.ts +62 -38
- package/lib/forms/models/form-field-definition.d.ts +21 -6
- package/lib/select/components/select.component.d.ts +46 -29
- package/lib/table/enums/table-column-type.d.ts +2 -1
- package/lib/table/models/table-column.d.ts +6 -0
- package/package.json +1 -1
|
@@ -14,134 +14,152 @@ import * as i3 from "@angular/cdk/a11y";
|
|
|
14
14
|
export class AbstractSelectFormField extends AbstractMatFormField {
|
|
15
15
|
injector;
|
|
16
16
|
/**
|
|
17
|
-
*
|
|
17
|
+
* A BehaviorSubject that tracks changes to the endpoint data.
|
|
18
18
|
*/
|
|
19
19
|
_endpointChange = new BehaviorSubject([]);
|
|
20
20
|
/**
|
|
21
|
-
*
|
|
21
|
+
* A BehaviorSubject that tracks changes to the enum data.
|
|
22
22
|
*/
|
|
23
23
|
_enumChange = new BehaviorSubject([]);
|
|
24
24
|
/**
|
|
25
|
-
* The
|
|
25
|
+
* The HTTP client service used to fetch data from an API.
|
|
26
26
|
*/
|
|
27
27
|
_http;
|
|
28
28
|
/**
|
|
29
|
-
*
|
|
29
|
+
* Whether the default option should be selected by default.
|
|
30
30
|
*/
|
|
31
31
|
_defaultOption = true;
|
|
32
32
|
/**
|
|
33
|
-
*
|
|
33
|
+
* Whether multiple selection is enabled.
|
|
34
34
|
*/
|
|
35
35
|
_multiple = false;
|
|
36
36
|
/**
|
|
37
|
-
*
|
|
37
|
+
* Whether the options should be sorted.
|
|
38
38
|
*/
|
|
39
39
|
_sorted = true;
|
|
40
40
|
/**
|
|
41
|
-
*
|
|
41
|
+
* The API endpoint or a function returning the endpoint URL.
|
|
42
42
|
*/
|
|
43
43
|
_endpoint;
|
|
44
44
|
/**
|
|
45
|
-
*
|
|
45
|
+
* Parameters to be sent with the API request.
|
|
46
46
|
*/
|
|
47
47
|
_params = {};
|
|
48
48
|
/**
|
|
49
|
-
*
|
|
49
|
+
* Projection fields to be included in the API request.
|
|
50
50
|
*/
|
|
51
51
|
_projection;
|
|
52
52
|
/**
|
|
53
|
-
*
|
|
53
|
+
* Whether to load data automatically.
|
|
54
54
|
*/
|
|
55
55
|
_loadData = true;
|
|
56
56
|
/**
|
|
57
|
-
*
|
|
57
|
+
* A filter function to apply to the enum data.
|
|
58
58
|
*/
|
|
59
59
|
_enumFilter;
|
|
60
60
|
/**
|
|
61
|
-
* A function to compare
|
|
61
|
+
* A function to compare option values with the selected values.
|
|
62
62
|
*/
|
|
63
63
|
_compareWith = (o1, o2) => o1 === o2;
|
|
64
64
|
/**
|
|
65
|
-
* The
|
|
65
|
+
* The enumeration data or endpoint for the options.
|
|
66
66
|
*/
|
|
67
67
|
enum;
|
|
68
68
|
/**
|
|
69
|
-
*
|
|
69
|
+
* Optional prefix text to display.
|
|
70
70
|
*/
|
|
71
71
|
textPrefix = '';
|
|
72
72
|
/**
|
|
73
|
-
* The
|
|
73
|
+
* The property name in the option object for the text to display.
|
|
74
|
+
* This is used to determine which property of the option object to show as the option's text.
|
|
74
75
|
*/
|
|
75
|
-
|
|
76
|
+
optionTextProperty = 'name';
|
|
76
77
|
/**
|
|
77
|
-
* The
|
|
78
|
+
* The property name in the option object for the value of the options.
|
|
79
|
+
* This is used to identify the unique value for each option.
|
|
78
80
|
*/
|
|
79
|
-
|
|
81
|
+
optionValueProperty = 'id';
|
|
80
82
|
/**
|
|
81
|
-
* The
|
|
83
|
+
* The key for the Material icon to display.
|
|
84
|
+
*/
|
|
85
|
+
matIconKey;
|
|
86
|
+
/**
|
|
87
|
+
* The key for the SVG icon to display.
|
|
88
|
+
*/
|
|
89
|
+
svgIconKey;
|
|
90
|
+
/**
|
|
91
|
+
* Font set name for font icon.
|
|
92
|
+
*/
|
|
93
|
+
fontSet = 'material-symbols-outlined';
|
|
94
|
+
/**
|
|
95
|
+
* Optional prefix to display before the options.
|
|
82
96
|
*/
|
|
83
97
|
prefix = '';
|
|
84
98
|
/**
|
|
85
|
-
*
|
|
99
|
+
* The list of available options.
|
|
86
100
|
*/
|
|
87
101
|
options;
|
|
88
102
|
/**
|
|
89
|
-
* filtered
|
|
103
|
+
* The list of filtered options.
|
|
90
104
|
*/
|
|
91
105
|
filteredOptions;
|
|
92
106
|
/**
|
|
93
|
-
*
|
|
107
|
+
* Whether the options can be filtered.
|
|
94
108
|
*/
|
|
95
109
|
filterable = true;
|
|
96
110
|
/**
|
|
97
|
-
* cache
|
|
111
|
+
* Whether to cache the options.
|
|
98
112
|
*/
|
|
99
113
|
cache = true;
|
|
100
114
|
/**
|
|
101
|
-
*
|
|
115
|
+
* Whether to select the first option by default.
|
|
102
116
|
*/
|
|
103
117
|
selectFirst = false;
|
|
104
118
|
/**
|
|
105
|
-
*
|
|
119
|
+
* The field by which to sort the options.
|
|
106
120
|
*/
|
|
107
121
|
sortBy;
|
|
108
122
|
/**
|
|
109
|
-
*
|
|
123
|
+
* A function to map the options before displaying.
|
|
110
124
|
*/
|
|
111
125
|
mapper;
|
|
112
126
|
/**
|
|
113
|
-
*
|
|
127
|
+
* A function to return the icon for a given option.
|
|
128
|
+
*/
|
|
129
|
+
optionIcon;
|
|
130
|
+
/**
|
|
131
|
+
* Whether the default option should be selected.
|
|
114
132
|
*/
|
|
115
133
|
get defaultOption() { return this._defaultOption; }
|
|
116
134
|
set defaultOption(defaultOption) { this._defaultOption = coerceBooleanProperty(defaultOption); this.stateChanges.next(); }
|
|
117
135
|
/**
|
|
118
|
-
*
|
|
136
|
+
* Whether multiple selection is enabled.
|
|
119
137
|
*/
|
|
120
138
|
get multiple() { return this._multiple; }
|
|
121
139
|
set multiple(multi) { this._multiple = coerceBooleanProperty(multi); this.stateChanges.next(); }
|
|
122
140
|
/**
|
|
123
|
-
*
|
|
141
|
+
* Whether the options should be sorted.
|
|
124
142
|
*/
|
|
125
143
|
get sorted() { return this._sorted; }
|
|
126
144
|
set sorted(sorted) { this._sorted = coerceBooleanProperty(sorted); this.stateChanges.next(); }
|
|
127
145
|
/**
|
|
128
|
-
*
|
|
146
|
+
* The API endpoint or a function returning the endpoint URL.
|
|
129
147
|
*/
|
|
130
148
|
get endpoint() { return this._endpoint; }
|
|
131
149
|
set endpoint(endpoint) { this._endpoint = endpoint; this.endpointChanged(); }
|
|
132
150
|
/**
|
|
133
|
-
*
|
|
151
|
+
* Parameters to be sent with the API request.
|
|
134
152
|
*/
|
|
135
153
|
get params() { return this._params; }
|
|
136
154
|
set params(params) {
|
|
137
155
|
if (params) {
|
|
138
|
-
|
|
156
|
+
// Remove empty parameters
|
|
139
157
|
Object.keys(params).forEach((key) => {
|
|
140
|
-
if (
|
|
158
|
+
if (params[key] == null || params[key] == '' || params[key] == 'undefined') {
|
|
141
159
|
delete params[key];
|
|
142
160
|
}
|
|
143
161
|
});
|
|
144
|
-
|
|
162
|
+
// Update parameters if they have changed
|
|
145
163
|
if (JSON.stringify(this._params) !== JSON.stringify(params)) {
|
|
146
164
|
this._params = params;
|
|
147
165
|
this.endpointChanged();
|
|
@@ -149,23 +167,22 @@ export class AbstractSelectFormField extends AbstractMatFormField {
|
|
|
149
167
|
}
|
|
150
168
|
}
|
|
151
169
|
/**
|
|
152
|
-
*
|
|
170
|
+
* Projection fields to be included in the API request.
|
|
153
171
|
*/
|
|
154
172
|
get projection() { return this._projection ?? ''; }
|
|
155
173
|
set projection(projection) { this._projection = projection; this.endpointChanged(); }
|
|
156
174
|
/**
|
|
157
|
-
*
|
|
175
|
+
* Whether to load data automatically.
|
|
158
176
|
*/
|
|
159
177
|
get loadData() { return this._loadData; }
|
|
160
178
|
set loadData(loadData) { this._loadData = coerceBooleanProperty(loadData); this.endpointChanged(); }
|
|
161
179
|
/**
|
|
162
|
-
*
|
|
180
|
+
* A filter function to apply to the enum data.
|
|
163
181
|
*/
|
|
164
182
|
get enumFilter() { return this._enumFilter; }
|
|
165
183
|
set enumFilter(enumFilter) { this._enumFilter = enumFilter; this.enumChanged(); }
|
|
166
184
|
/**
|
|
167
|
-
*
|
|
168
|
-
* @param disabled
|
|
185
|
+
* Whether the control is disabled.
|
|
169
186
|
*/
|
|
170
187
|
get disabled() { return this._readonly || super.disabled; }
|
|
171
188
|
set disabled(disabled) {
|
|
@@ -176,16 +193,16 @@ export class AbstractSelectFormField extends AbstractMatFormField {
|
|
|
176
193
|
}
|
|
177
194
|
}
|
|
178
195
|
/**
|
|
179
|
-
* Gets
|
|
196
|
+
* Gets the currently selected value(s).
|
|
180
197
|
*/
|
|
181
198
|
get currentValue() {
|
|
182
199
|
if (this.multiple) {
|
|
183
200
|
if (this.compareWith) {
|
|
184
201
|
return this.options?.filter((x) => (this._value || []).some(y => this.compareWith(x, y)));
|
|
185
202
|
}
|
|
186
|
-
return this.options?.filter((x) => (this._value || []).includes(x[this.
|
|
203
|
+
return this.options?.filter((x) => (this._value || []).includes(x[this.optionValueProperty]));
|
|
187
204
|
}
|
|
188
|
-
return this.options?.filter((x) => x[this.
|
|
205
|
+
return this.options?.filter((x) => x[this.optionValueProperty] == this._value)[0];
|
|
189
206
|
}
|
|
190
207
|
/**
|
|
191
208
|
* A function to compare the option values with the selected values. The first argument
|
|
@@ -268,7 +285,7 @@ export class AbstractSelectFormField extends AbstractMatFormField {
|
|
|
268
285
|
}
|
|
269
286
|
/* Add sorting */
|
|
270
287
|
if (!this.params.sortBy && (this.sortBy || this.sorted)) {
|
|
271
|
-
params.sortBy = this.sortBy || this.
|
|
288
|
+
params.sortBy = this.sortBy || this.optionTextProperty;
|
|
272
289
|
}
|
|
273
290
|
/* Get endpoint */
|
|
274
291
|
let endpoint = typeof this.endpoint === 'function' ? this.endpoint(this) : this.endpoint;
|
|
@@ -278,7 +295,7 @@ export class AbstractSelectFormField extends AbstractMatFormField {
|
|
|
278
295
|
.subscribe(x => {
|
|
279
296
|
this.filteredOptions = this.options = x;
|
|
280
297
|
if (this.selectFirst && !this.value && this.options?.length > 0) {
|
|
281
|
-
this.value = this.options[0][this.
|
|
298
|
+
this.value = this.options[0][this.optionValueProperty];
|
|
282
299
|
}
|
|
283
300
|
if (Array.isArray(this.options)) {
|
|
284
301
|
this.handleItemSelected(this.value);
|
|
@@ -316,10 +333,10 @@ export class AbstractSelectFormField extends AbstractMatFormField {
|
|
|
316
333
|
*/
|
|
317
334
|
handleItemSelected(value) {
|
|
318
335
|
if (this.multiple) {
|
|
319
|
-
this.onItemSelected.emit(this.options.filter((x) => (value || []).includes(x[this.
|
|
336
|
+
this.onItemSelected.emit(this.options.filter((x) => (value || []).includes(x[this.optionValueProperty])));
|
|
320
337
|
}
|
|
321
338
|
else {
|
|
322
|
-
this.onItemSelected.emit(this.options.filter((x) => x[this.
|
|
339
|
+
this.onItemSelected.emit(this.options.filter((x) => x[this.optionValueProperty] == value)[0]);
|
|
323
340
|
}
|
|
324
341
|
}
|
|
325
342
|
/**
|
|
@@ -328,10 +345,10 @@ export class AbstractSelectFormField extends AbstractMatFormField {
|
|
|
328
345
|
*/
|
|
329
346
|
handleItemChange(value) {
|
|
330
347
|
if (this.multiple) {
|
|
331
|
-
this.onItemChange.emit(this.options.filter((x) => (value || []).includes(x[this.
|
|
348
|
+
this.onItemChange.emit(this.options.filter((x) => (value || []).includes(x[this.optionValueProperty])));
|
|
332
349
|
}
|
|
333
350
|
else {
|
|
334
|
-
this.onItemChange.emit(this.options.filter((x) => x[this.
|
|
351
|
+
this.onItemChange.emit(this.options.filter((x) => x[this.optionValueProperty] == value)[0]);
|
|
335
352
|
}
|
|
336
353
|
}
|
|
337
354
|
/**
|
|
@@ -344,7 +361,7 @@ export class AbstractSelectFormField extends AbstractMatFormField {
|
|
|
344
361
|
this.filteredOptions = this.options.filter((x) => this.searchField(x)?.toLowerCase().search(searchText.toLowerCase()) > -1);
|
|
345
362
|
}
|
|
346
363
|
else {
|
|
347
|
-
this.filteredOptions = this.options.filter((x) => x[this.
|
|
364
|
+
this.filteredOptions = this.options.filter((x) => x[this.optionTextProperty]?.toLowerCase().search(searchText.toLowerCase()) > -1);
|
|
348
365
|
}
|
|
349
366
|
}
|
|
350
367
|
/**
|
|
@@ -359,8 +376,16 @@ export class AbstractSelectFormField extends AbstractMatFormField {
|
|
|
359
376
|
enumChanged() {
|
|
360
377
|
this._enumChange.next([this._enumFilter]);
|
|
361
378
|
}
|
|
379
|
+
/**
|
|
380
|
+
* Log to console
|
|
381
|
+
* @param message
|
|
382
|
+
* @param optionalParams
|
|
383
|
+
*/
|
|
384
|
+
log(message, ...optionalParams) {
|
|
385
|
+
console.log(message, optionalParams);
|
|
386
|
+
}
|
|
362
387
|
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: AbstractSelectFormField, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
|
|
363
|
-
/** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.5", type: AbstractSelectFormField, inputs: { enum: "enum", textPrefix: "textPrefix",
|
|
388
|
+
/** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.5", type: AbstractSelectFormField, inputs: { enum: "enum", textPrefix: "textPrefix", optionTextProperty: "optionTextProperty", optionValueProperty: "optionValueProperty", matIconKey: "matIconKey", svgIconKey: "svgIconKey", fontSet: "fontSet", prefix: "prefix", options: "options", filteredOptions: "filteredOptions", filterable: "filterable", cache: "cache", selectFirst: "selectFirst", sortBy: "sortBy", mapper: "mapper", defaultOption: "defaultOption", multiple: "multiple", sorted: "sorted", endpoint: "endpoint", params: "params", projection: "projection", loadData: "loadData", enumFilter: "enumFilter", disabled: "disabled", compareWith: "compareWith", searchField: "searchField" }, outputs: { onValueChange: "change", onItemChange: "itemChange", onSelected: "selected", onItemSelected: "itemSelected", onLaunch: "launch" }, usesInheritance: true, ngImport: i0 });
|
|
364
389
|
}
|
|
365
390
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: AbstractSelectFormField, decorators: [{
|
|
366
391
|
type: Directive
|
|
@@ -376,9 +401,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
|
|
|
376
401
|
type: Input
|
|
377
402
|
}], textPrefix: [{
|
|
378
403
|
type: Input
|
|
379
|
-
}],
|
|
404
|
+
}], optionTextProperty: [{
|
|
405
|
+
type: Input
|
|
406
|
+
}], optionValueProperty: [{
|
|
407
|
+
type: Input
|
|
408
|
+
}], matIconKey: [{
|
|
409
|
+
type: Input
|
|
410
|
+
}], svgIconKey: [{
|
|
380
411
|
type: Input
|
|
381
|
-
}],
|
|
412
|
+
}], fontSet: [{
|
|
382
413
|
type: Input
|
|
383
414
|
}], prefix: [{
|
|
384
415
|
type: Input
|
|
@@ -434,4 +465,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
|
|
|
434
465
|
}], searchField: [{
|
|
435
466
|
type: Input
|
|
436
467
|
}] } });
|
|
437
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3Qtc2VsZWN0LWZvcm0tZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3NyYy9saWIvZm9ybXMvaGVscGVycy9hYnN0cmFjdC1zZWxlY3QtZm9ybS1maWVsZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQVUsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEksT0FBTyxFQUFFLGtCQUFrQixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDOzs7OztBQUduRixNQUFNLE9BQWdCLHVCQUEyQixTQUFRLG9CQUF1QjtJQW9TcEU7SUFsU1g7O09BRUc7SUFDSyxlQUFlLEdBQTJCLElBQUksZUFBZSxDQUFNLEVBQUUsQ0FBQyxDQUFDO0lBRS9FOztPQUVHO0lBQ0ssV0FBVyxHQUEyQixJQUFJLGVBQWUsQ0FBTSxFQUFFLENBQUMs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SztnQkFPQyxlQUFlO3NCQURyQixLQUFLO2dCQU9DLFVBQVU7c0JBRGhCLEtBQUs7Z0JBT0MsS0FBSztzQkFEWCxLQUFLO2dCQU9DLFdBQVc7c0JBRGpCLEtBQUs7Z0JBT0MsTUFBTTtzQkFEWixLQUFLO2dCQU9DLE1BQU07c0JBRFosS0FBSztnQkFPSyxhQUFhO3NCQUR2QixLQUFLO2dCQVFLLFFBQVE7c0JBRGxCLEtBQUs7Z0JBUUssTUFBTTtzQkFEaEIsS0FBSztnQkFRSyxRQUFRO3NCQURsQixLQUFLO2dCQVFLLE1BQU07c0JBRGhCLEtBQUs7Z0JBdUJLLFVBQVU7c0JBRHBCLEtBQUs7Z0JBUUssUUFBUTtzQkFEbEIsS0FBSztnQkFRSyxVQUFVO3NCQURwQixLQUFLO2dCQVNLLFFBQVE7c0JBRGxCLEtBQUs7Z0JBK0JLLFdBQVc7c0JBRHJCLEtBQUs7Z0JBUUMsYUFBYTtzQkFEbkIsTUFBTTt1QkFBQyxRQUFRO2dCQU9ULFlBQVk7c0JBRGxCLE1BQU07dUJBQUMsWUFBWTtnQkFPYixVQUFVO3NCQURoQixNQUFNO3VCQUFDLFVBQVU7Z0JBT1gsY0FBYztzQkFEcEIsTUFBTTt1QkFBQyxjQUFjO2dCQU9mLFFBQVE7c0JBRGQsTUFBTTt1QkFBQyxRQUFRO2dCQU1QLFdBQVc7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb2N1c01vbml0b3IgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XHJcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEluamVjdG9yLCBJbnB1dCwgT25Jbml0LCBPcHRpb25hbCwgT3V0cHV0LCBTZWxmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cERpcmVjdGl2ZSwgTmdDb250cm9sLCBOZ0Zvcm0gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEVycm9yU3RhdGVNYXRjaGVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEVudW1TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29tbW9uL3NlcnZpY2VzL2VudW0uc2VydmljZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0TWF0Rm9ybUZpZWxkIH0gZnJvbSAnLi4vLi4vZm9ybXMvaGVscGVycy9hYnN0cmFjdC1tYXQtZm9ybS1maWVsZCc7XHJcblxyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0U2VsZWN0Rm9ybUZpZWxkPFQ+IGV4dGVuZHMgQWJzdHJhY3RNYXRGb3JtRmllbGQ8VD4gaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuXHQvKipcclxuXHQgKiBSZXByZXNlbnRzIGEgdmFsdWUgdGhhdCBjaGFuZ2VzIG92ZXIgdGltZS4gXHJcblx0ICovXHJcblx0cHJpdmF0ZSBfZW5kcG9pbnRDaGFuZ2U6IEJlaGF2aW9yU3ViamVjdDxhbnlbXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KDxhbnk+W10pO1xyXG5cclxuXHQvKipcclxuXHQgKiBSZXByZXNlbnRzIGEgdmFsdWUgdGhhdCBjaGFuZ2VzIG92ZXIgdGltZS4gXHJcblx0ICovXHJcblx0cHJpdmF0ZSBfZW51bUNoYW5nZTogQmVoYXZpb3JTdWJqZWN0PGFueVtdPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoPGFueT5bXSk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoZSBodHRwIHNlcnZpY2UgZnJvbSB0byBnZXQgdGhlIGRhdGFcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgX2h0dHA/OiBIdHRwQ2xpZW50O1xyXG5cclxuXHQvKipcclxuXHQgKiBEZWZhdWx0IHNlbGVjdCBvcHRpb25cclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgX2RlZmF1bHRPcHRpb246IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuXHQvKipcclxuXHQgKiBNdWx0aXBsZSBzZWxlY3Qgb3B0aW9uXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIF9tdWx0aXBsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHQvKipcclxuXHQgKiBTb3J0cyBvcHRpb25zXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIF9zb3J0ZWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuXHQvKipcclxuXHQgKiBfZW5kcG9pbnQ6IHN0cmluZ1xyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBfZW5kcG9pbnQ/OiBzdHJpbmcgfCBGdW5jdGlvbjtcclxuXHJcblx0LyoqXHJcblx0ICogX3BhcmFtczogYW55XHJcblx0ICovXHJcblx0cHJvdGVjdGVkIF9wYXJhbXM6IGFueSA9IHt9O1xyXG5cclxuXHQvKipcclxuXHQgKiBfcHJvamVjdGlvbjogYW55XHJcblx0ICovXHJcblx0cHJvdGVjdGVkIF9wcm9qZWN0aW9uPzogc3RyaW5nIHwgc3RyaW5nW107XHJcblxyXG5cdC8qKlxyXG5cdCAqIExvYWQgZGF0YVxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBfbG9hZERhdGE6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuXHQvKipcclxuXHQgKiBfZW51bUZpbHRlcjogRnVuY3Rpb25cclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgX2VudW1GaWx0ZXI/OiBGdW5jdGlvbjtcclxuXHJcblx0LyoqXHJcblx0ICogQSBmdW5jdGlvbiB0byBjb21wYXJlIHRoZSBvcHRpb24gdmFsdWVzIHdpdGggdGhlIHNlbGVjdGVkIHZhbHVlcy5cclxuXHQgKi9cclxuXHRwcml2YXRlIF9jb21wYXJlV2l0aCA9IChvMTogYW55LCBvMjogYW55KSA9PiBvMSA9PT0gbzI7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoZSBuYW1lIG9mIHRoZSBlbmRwb2ludFxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGVudW06IGFueTtcclxuXHJcblx0LyoqXHJcblx0ICogdGV4dFByZWZpeD86IGFueVxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIHRleHRQcmVmaXg6IHN0cmluZyA9ICcnO1xyXG5cclxuXHQvKipcclxuXHQgKiBUaGUga2V5XHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMga2V5OiBhbnkgPSAnaWQnO1xyXG5cclxuXHQvKipcclxuXHQgKiBUaGUgdGV4dFxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIHRleHQ6IGFueSA9ICduYW1lJztcclxuXHJcblx0LyoqXHJcblx0ICogVGhlIHByZWZpeFxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIHByZWZpeDogYW55ID0gJyc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIE9wdGlvbiBsaXN0XHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgb3B0aW9uczogYW55O1xyXG5cclxuXHQvKipcclxuXHQgKiBmaWx0ZXJlZCBvcHRpb24gbGlzdFxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGZpbHRlcmVkT3B0aW9uczogYW55O1xyXG5cclxuXHQvKipcclxuXHQgKiBmaWx0ZXJhYmxlP1xyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGZpbHRlcmFibGU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuXHQvKipcclxuXHQgKiBjYWNoZT9cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBjYWNoZTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIHNlbGVjdEZpcnN0P1xyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIHNlbGVjdEZpcnN0OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cdC8qKlxyXG5cdCAqIHNvcnRCeT9cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBzb3J0Qnk/OiBzdHJpbmc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIG1hcHBlcjogRnVuY3Rpb25cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBtYXBwZXI/OiAoeDogYW55W10pID0+IGFueTtcclxuXHJcblx0LyoqXHJcblx0ICogQHByb3BlcnR5XHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgZ2V0IGRlZmF1bHRPcHRpb24oKSB7IHJldHVybiB0aGlzLl9kZWZhdWx0T3B0aW9uOyB9XHJcblx0cHVibGljIHNldCBkZWZhdWx0T3B0aW9uKGRlZmF1bHRPcHRpb24pIHsgdGhpcy5fZGVmYXVsdE9wdGlvbiA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShkZWZhdWx0T3B0aW9uKTsgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpOyB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEBwcm9wZXJ0eVxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGdldCBtdWx0aXBsZSgpIHsgcmV0dXJuIHRoaXMuX211bHRpcGxlOyB9XHJcblx0cHVibGljIHNldCBtdWx0aXBsZShtdWx0aSkgeyB0aGlzLl9tdWx0aXBsZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShtdWx0aSk7IHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBAcHJvcGVydHlcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBnZXQgc29ydGVkKCkgeyByZXR1cm4gdGhpcy5fc29ydGVkOyB9XHJcblx0cHVibGljIHNldCBzb3J0ZWQoc29ydGVkKSB7IHRoaXMuX3NvcnRlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShzb3J0ZWQpOyB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7IH1cclxuXHJcblx0LyoqXHJcblx0ICogQHByb3BlcnR5XHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgZ2V0IGVuZHBvaW50KCk6IHN0cmluZyB8IEZ1bmN0aW9uIHwgdW5kZWZpbmVkIHsgcmV0dXJuIHRoaXMuX2VuZHBvaW50OyB9XHJcblx0cHVibGljIHNldCBlbmRwb2ludChlbmRwb2ludDogc3RyaW5nIHwgRnVuY3Rpb24pIHsgdGhpcy5fZW5kcG9pbnQgPSBlbmRwb2ludDsgdGhpcy5lbmRwb2ludENoYW5nZWQoKTsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBAcHJvcGVydHlcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBnZXQgcGFyYW1zKCkgeyByZXR1cm4gdGhpcy5fcGFyYW1zOyB9XHJcblx0cHVibGljIHNldCBwYXJhbXMocGFyYW1zOiBhbnkpIHtcclxuXHRcdGlmIChwYXJhbXMpIHtcclxuXHRcdFx0LyogUmVtb3ZlIGVtcHR5IHBhcmFtcyAqL1xyXG5cdFx0XHRPYmplY3Qua2V5cyhwYXJhbXMpLmZvckVhY2goKGtleSkgPT4ge1xyXG5cdFx0XHRcdGlmICgocGFyYW1zW2tleV0gPT0gbnVsbCB8fCBwYXJhbXNba2V5XSA9PSAnJyB8fCBwYXJhbXNba2V5XSA9PSAndW5kZWZpbmVkJykpIHtcclxuXHRcdFx0XHRcdGRlbGV0ZSBwYXJhbXNba2V5XTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cclxuXHRcdFx0LyogQ2hlY2sgaWYgdGhlIHBhcmFtcyBoYXMgY2hhbmdlZCAqL1xyXG5cdFx0XHRpZiAoSlNPTi5zdHJpbmdpZnkodGhpcy5fcGFyYW1zKSAhPT0gSlNPTi5zdHJpbmdpZnkocGFyYW1zKSkge1xyXG5cdFx0XHRcdHRoaXMuX3BhcmFtcyA9IHBhcmFtcztcclxuXHRcdFx0XHR0aGlzLmVuZHBvaW50Q2hhbmdlZCgpO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBAcHJvcGVydHlcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBnZXQgcHJvamVjdGlvbigpOiBzdHJpbmcgfCBzdHJpbmdbXSB7IHJldHVybiB0aGlzLl9wcm9qZWN0aW9uID8/ICcnOyB9XHJcblx0cHVibGljIHNldCBwcm9qZWN0aW9uKHByb2plY3Rpb246IHN0cmluZyB8IHN0cmluZ1tdIHwgdW5kZWZpbmVkKSB7IHRoaXMuX3Byb2plY3Rpb24gPSBwcm9qZWN0aW9uOyB0aGlzLmVuZHBvaW50Q2hhbmdlZCgpOyB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEBwcm9wZXJ0eVxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGdldCBsb2FkRGF0YSgpIHsgcmV0dXJuIHRoaXMuX2xvYWREYXRhOyB9XHJcblx0cHVibGljIHNldCBsb2FkRGF0YShsb2FkRGF0YSkgeyB0aGlzLl9sb2FkRGF0YSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShsb2FkRGF0YSk7IHRoaXMuZW5kcG9pbnRDaGFuZ2VkKCk7IH1cclxuXHJcblx0LyoqXHJcblx0ICogQHByb3BlcnR5XHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgZ2V0IGVudW1GaWx0ZXIoKTogRnVuY3Rpb24gfCB1bmRlZmluZWQgeyByZXR1cm4gdGhpcy5fZW51bUZpbHRlcjsgfVxyXG5cdHB1YmxpYyBzZXQgZW51bUZpbHRlcihlbnVtRmlsdGVyOiBGdW5jdGlvbikgeyB0aGlzLl9lbnVtRmlsdGVyID0gZW51bUZpbHRlcjsgdGhpcy5lbnVtQ2hhbmdlZCgpOyB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEdldHMgdGhlIGNvbnRyb2wgaXMgZGlzYWJsZWQuXHJcblx0ICogQHBhcmFtIGRpc2FibGVkXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgZ2V0IGRpc2FibGVkKCkgeyByZXR1cm4gdGhpcy5fcmVhZG9ubHkgfHwgc3VwZXIuZGlzYWJsZWQ7IH1cclxuXHRwdWJsaWMgc2V0IGRpc2FibGVkKGRpc2FibGVkOiBhbnkpIHtcclxuXHRcdHRoaXMuX2Rpc2FibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KGRpc2FibGVkKTtcclxuXHRcdGlmICh0aGlzLmZvY3VzZWQpIHtcclxuXHRcdFx0dGhpcy5mb2N1c2VkID0gZmFsc2U7XHJcblx0XHRcdHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEdldHMgY3VycmVudCB2YWx1ZVxyXG5cdCAqL1xyXG5cdHB1YmxpYyBnZXQgY3VycmVudFZhbHVlKCk6IGFueSB7XHJcblx0XHRpZiAodGhpcy5tdWx0aXBsZSkge1xyXG5cdFx0XHRpZiAodGhpcy5jb21wYXJlV2l0aCkge1xyXG5cdFx0XHRcdHJldHVybiB0aGlzLm9wdGlvbnM/LmZpbHRlcigoeDogYW55KSA9PiAoPGFueVtdPih0aGlzLl92YWx1ZSB8fCBbXSkpLnNvbWUoeSA9PiB0aGlzLmNvbXBhcmVXaXRoKHgsIHkpKSk7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdHJldHVybiB0aGlzLm9wdGlvbnM/LmZpbHRlcigoeDogYW55KSA9PiAoPGFueVtdPih0aGlzLl92YWx1ZSB8fCBbXSkpLmluY2x1ZGVzKHhbdGhpcy5rZXldKSk7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIHRoaXMub3B0aW9ucz8uZmlsdGVyKCh4OiBhbnkpID0+IHhbdGhpcy5rZXldID09IHRoaXMuX3ZhbHVlKVswXTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgZnVuY3Rpb24gdG8gY29tcGFyZSB0aGUgb3B0aW9uIHZhbHVlcyB3aXRoIHRoZSBzZWxlY3RlZCB2YWx1ZXMuIFRoZSBmaXJzdCBhcmd1bWVudFxyXG5cdCAqIGlzIGEgdmFsdWUgZnJvbSBhbiBvcHRpb24uIFRoZSBzZWNvbmQgaXMgYSB2YWx1ZSBmcm9tIHRoZSBzZWxlY3Rpb24uIEEgYm9vbGVhblxyXG5cdCAqIHNob3VsZCBiZSByZXR1cm5lZC5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBnZXQgY29tcGFyZVdpdGgoKTogKG8xOiBhbnksIG8yOiBhbnkpID0+IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fY29tcGFyZVdpdGg7IH1cclxuXHRwdWJsaWMgc2V0IGNvbXBhcmVXaXRoKGZuOiAobzE6IGFueSwgbzI6IGFueSkgPT4gYm9vbGVhbikgeyB0aGlzLl9jb21wYXJlV2l0aCA9IGZuOyB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIGNoYW5nZT86IGZ1bmN0aW9uXHJcblx0ICovXHJcblx0QE91dHB1dCgnY2hhbmdlJylcclxuXHRwdWJsaWMgb25WYWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcblx0LyoqXHJcblx0ICogaXRlbUNoYW5nZT86IGZ1bmN0aW9uXHJcblx0ICovXHJcblx0QE91dHB1dCgnaXRlbUNoYW5nZScpXHJcblx0cHVibGljIG9uSXRlbUNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcblx0LyoqXHJcblx0ICogc2VsZWN0ZWQ/OiBmdW5jdGlvblxyXG5cdCAqL1xyXG5cdEBPdXRwdXQoJ3NlbGVjdGVkJylcclxuXHRwdWJsaWMgb25TZWxlY3RlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcblx0LyoqXHJcblx0ICogaXRlbVNlbGVjdGVkPzogZnVuY3Rpb25cclxuXHQgKi9cclxuXHRAT3V0cHV0KCdpdGVtU2VsZWN0ZWQnKVxyXG5cdHB1YmxpYyBvbkl0ZW1TZWxlY3RlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcblx0LyoqXHJcblx0ICogbGF1bmNoPzogZnVuY3Rpb25cclxuXHQgKi9cclxuXHRAT3V0cHV0KCdsYXVuY2gnKVxyXG5cdHB1YmxpYyBvbkxhdW5jaDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcblx0LyoqXHJcblx0ICogc2VhcmNoRmllbGQ/OiBmdW5jdGlvblxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpIHNlYXJjaEZpZWxkPzogKHg6IGFueSkgPT4gc3RyaW5nO1xyXG5cclxuXHQvKipcclxuXHQgKiBDb25zdHJ1Y3RvclxyXG5cdCAqIEBwYXJhbSBjb250cm9sVHlwZSBcclxuXHQgKiBAcGFyYW0gaW5qZWN0b3IgXHJcblx0ICogQHBhcmFtIG5nQ29udHJvbCBcclxuXHQgKiBAcGFyYW0gcGFyZW50Rm9ybSBcclxuXHQgKiBAcGFyYW0gcGFyZW50Rm9ybUdyb3VwIFxyXG5cdCAqIEBwYXJhbSBkZWZhdWx0RXJyb3JTdGF0ZU1hdGNoZXIgXHJcblx0ICogQHBhcmFtIGZvY3VzTW9uaXRvciBcclxuXHQgKiBAcGFyYW0gZWxlbWVudFJlZiBcclxuXHQgKiBAcGFyYW0gY2hhbmdlRGV0ZWN0b3JSZWYgXHJcblx0ICovXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRjb250cm9sVHlwZTogc3RyaW5nLFxyXG5cdFx0cHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvcixcclxuXHRcdEBPcHRpb25hbCgpIEBTZWxmKCkgbmdDb250cm9sOiBOZ0NvbnRyb2wsXHJcblx0XHRAT3B0aW9uYWwoKSBwYXJlbnRGb3JtOiBOZ0Zvcm0sXHJcblx0XHRAT3B0aW9uYWwoKSBwYXJlbnRGb3JtR3JvdXA6IEZvcm1Hcm91cERpcmVjdGl2ZSxcclxuXHRcdGRlZmF1bHRFcnJvclN0YXRlTWF0Y2hlcjogRXJyb3JTdGF0ZU1hdGNoZXIsXHJcblx0XHRmb2N1c01vbml0b3I6IEZvY3VzTW9uaXRvcixcclxuXHRcdGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXHJcblx0XHRjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcclxuXHQpIHtcclxuXHRcdHN1cGVyKGNvbnRyb2xUeXBlLCBuZ0NvbnRyb2wsIHBhcmVudEZvcm0sIHBhcmVudEZvcm1Hcm91cCwgZGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyLCBmb2N1c01vbml0b3IsIGVsZW1lbnRSZWYsIGNoYW5nZURldGVjdG9yUmVmKTtcclxuXHRcdGlmICghdGhpcy5lbnVtKSB7XHJcblx0XHRcdHRoaXMuX2h0dHAgPSBpbmplY3Rvci5nZXQoSHR0cENsaWVudCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBMaWZlY3ljbGUgaG9vayB0aGF0IGlzIGNhbGxlZCBhZnRlciBhIGNvbXBvbmVudCdzIFxyXG5cdCAqIHZpZXcgaGFzIGJlZW4gZnVsbHkgaW5pdGlhbGl6ZWQuXHJcblx0ICovXHJcblx0bmdPbkluaXQoKTogdm9pZCB7XHJcblx0XHR0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IHRoaXMub3B0aW9ucztcclxuXHJcblx0XHRpZiAodGhpcy5lbnVtKSB7XHJcblx0XHRcdHRoaXMuZmlsdGVyYWJsZSA9IGZhbHNlO1xyXG5cdFx0XHR0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IHRoaXMub3B0aW9ucyA9IEVudW1TZXJ2aWNlLnRvQXJyYXkodGhpcy5lbnVtLCB0aGlzLnByZWZpeCk7XHJcblxyXG5cdFx0XHQvKiBBcHBseSBlbnVtIGZpbHRlcnMgKi9cclxuXHRcdFx0aWYgKHRoaXMuX2VudW1GaWx0ZXIgJiYgdGhpcy5vcHRpb25zKSB7XHJcblx0XHRcdFx0dGhpcy5maWx0ZXJlZE9wdGlvbnMgPSB0aGlzLm9wdGlvbnMgPSB0aGlzLm9wdGlvbnMuZmlsdGVyKHRoaXMuX2VudW1GaWx0ZXIpO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRpZiAoQXJyYXkuaXNBcnJheSh0aGlzLm9wdGlvbnMpKSB7XHJcblx0XHRcdFx0dGhpcy5oYW5kbGVJdGVtU2VsZWN0ZWQodGhpcy52YWx1ZSk7XHJcblx0XHRcdH1cclxuXHRcdH0gZWxzZSBpZiAoIXRoaXMub3B0aW9ucykge1xyXG5cdFx0XHR0aGlzLl9lbmRwb2ludENoYW5nZS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLnBpcGUoZGVib3VuY2VUaW1lKDEpKS5zdWJzY3JpYmUoXyA9PiB7XHJcblx0XHRcdFx0bGV0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKTtcclxuXHRcdFx0XHRpZiAodGhpcy5jYWNoZSkge1xyXG5cdFx0XHRcdFx0aGVhZGVycy5zZXQoJ0NsaWVudC1DYWNoZScsICdZZXMnKTtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdC8qIEluaXQgcGFyYW1zLCBpZiBudWxsICovXHJcblx0XHRcdFx0bGV0IHBhcmFtcyA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuX3BhcmFtcyB8fCB7fSk7XHJcblxyXG5cdFx0XHRcdC8qIEFkZCBwcm9qZWN0aW9uLCBpZiBhbnkgKi9cclxuXHRcdFx0XHRpZiAodGhpcy5wcm9qZWN0aW9uKSB7XHJcblx0XHRcdFx0XHRwYXJhbXMucHJvamVjdGlvbiA9IEFycmF5LmlzQXJyYXkodGhpcy5wcm9qZWN0aW9uKSA/IHRoaXMucHJvamVjdGlvbi5qb2luKCcsJykgOiB0aGlzLnByb2plY3Rpb247XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHQvKiBBZGQgc29ydGluZyAqL1xyXG5cdFx0XHRcdGlmICghdGhpcy5wYXJhbXMuc29ydEJ5ICYmICh0aGlzLnNvcnRCeSB8fCB0aGlzLnNvcnRlZCkpIHtcclxuXHRcdFx0XHRcdHBhcmFtcy5zb3J0QnkgPSB0aGlzLnNvcnRCeSB8fCB0aGlzLnRleHQ7XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHQvKiBHZXQgZW5kcG9pbnQgKi9cclxuXHRcdFx0XHRsZXQgZW5kcG9pbnQgPSB0eXBlb2YgdGhpcy5lbmRwb2ludCA9PT0gJ2Z1bmN0aW9uJyA/IHRoaXMuZW5kcG9pbnQodGhpcykgOiAoPHN0cmluZz50aGlzLmVuZHBvaW50KTtcclxuXHRcdFx0XHRpZiAodGhpcy5faHR0cCAmJiBlbmRwb2ludCAmJiB0aGlzLmxvYWREYXRhKSB7XHJcblx0XHRcdFx0XHR0aGlzLl9odHRwLmdldChlbmRwb2ludCwgeyBwYXJhbXM6IHBhcmFtcywgaGVhZGVyczogaGVhZGVycyB9KVxyXG5cdFx0XHRcdFx0XHQucGlwZShtYXAoKHg6IGFueSkgPT4gdGhpcy5tYXBwZXIgPyB0aGlzLm1hcHBlcih4KSA6IHgpKVxyXG5cdFx0XHRcdFx0XHQuc3Vic2NyaWJlKHggPT4ge1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMuZmlsdGVyZWRPcHRpb25zID0gdGhpcy5vcHRpb25zID0geDtcclxuXHJcblx0XHRcdFx0XHRcdFx0aWYgKHRoaXMuc2VsZWN0Rmlyc3QgJiYgIXRoaXMudmFsdWUgJiYgdGhpcy5vcHRpb25zPy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLnZhbHVlID0gdGhpcy5vcHRpb25zWzBdW3RoaXMua2V5XTtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0XHRcdGlmIChBcnJheS5pc0FycmF5KHRoaXMub3B0aW9ucykpIHtcclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuaGFuZGxlSXRlbVNlbGVjdGVkKHRoaXMudmFsdWUpO1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHRcdFx0c3VwZXIud3JpdGVWYWx1ZSh0aGlzLnZhbHVlISk7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBGcm9tIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZVxyXG5cdCAqIEBwYXJhbSB2YWx1ZSBcclxuXHQgKi9cclxuXHR3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcclxuXHRcdC8qIFdyaXRlIHRoZSB2YWx1ZSBhbmQgdHJpZ2dlciBzb21lIGV2ZW50cyAqL1xyXG5cdFx0c3VwZXIud3JpdGVWYWx1ZSh2YWx1ZSk7XHJcblx0XHR0aGlzLm9uU2VsZWN0ZWQuZW1pdCh2YWx1ZSk7XHJcblxyXG5cdFx0aWYgKEFycmF5LmlzQXJyYXkodGhpcy5vcHRpb25zKSkge1xyXG5cdFx0XHR0aGlzLmhhbmRsZUl0ZW1TZWxlY3RlZCh0aGlzLnZhbHVlKTtcclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIE1ldGhvZCBleGVjdXRlZCB3aGVuIGFuIG9wdGlvbiBjaGFuZ2VzXHJcblx0ICovXHJcblx0cHVibGljIGhhbmRsZUNoYW5nZSgkZXZlbnQ6IGFueSk6IHZvaWQge1xyXG5cdFx0dGhpcy5vblZhbHVlQ2hhbmdlLmVtaXQoJGV2ZW50KTtcclxuXHRcdHRoaXMuaGFuZGxlSXRlbUNoYW5nZSgkZXZlbnQudmFsdWUpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogSGFuZGxlcyBpdGVtIGNoYW5nZXNcclxuXHQgKiBAcGFyYW0gdmFsdWUgXHJcblx0ICovXHJcblx0cHVibGljIGhhbmRsZUl0ZW1TZWxlY3RlZCh2YWx1ZTogYW55KTogdm9pZCB7XHJcblx0XHRpZiAodGhpcy5tdWx0aXBsZSkge1xyXG5cdFx0XHR0aGlzLm9uSXRlbVNlbGVjdGVkLmVtaXQodGhpcy5vcHRpb25zLmZpbHRlcigoeDogYW55KSA9PiAodmFsdWUgfHwgW10pLmluY2x1ZGVzKHhbdGhpcy5rZXldKSkpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5vbkl0ZW1TZWxlY3RlZC5lbWl0KHRoaXMub3B0aW9ucy5maWx0ZXIoKHg6IGFueSkgPT4geFt0aGlzLmtleV0gPT0gdmFsdWUpWzBdKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEhhbmRsZXMgaXRlbSBjaGFuZ2VzXHJcblx0ICogQHBhcmFtIHZhbHVlIFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBoYW5kbGVJdGVtQ2hhbmdlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuXHRcdGlmICh0aGlzLm11bHRpcGxlKSB7XHJcblx0XHRcdHRoaXMub25JdGVtQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zLmZpbHRlcigoeDogYW55KSA9PiAodmFsdWUgfHwgW10pLmluY2x1ZGVzKHhbdGhpcy5rZXldKSkpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5vbkl0ZW1DaGFuZ2UuZW1pdCh0aGlzLm9wdGlvbnMuZmlsdGVyKCh4OiBhbnkpID0+IHhbdGhpcy5rZXldID09IHZhbHVlKVswXSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBIYW5kZWxzIGZpbHRlciBldmVudFxyXG5cdCAqIEBwYXJhbSAkZXZlbnQgXHJcblx0ICovXHJcblx0cHVibGljIGhhbmRsZUZpbHRlcigkZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcblx0XHRsZXQgc2VhcmNoVGV4dDogc3RyaW5nID0gKCRldmVudD8udGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpPy52YWx1ZSA/PyAnJztcclxuXHRcdGlmICh0aGlzLnNlYXJjaEZpZWxkKSB7XHJcblx0XHRcdHRoaXMuZmlsdGVyZWRPcHRpb25zID0gdGhpcy5vcHRpb25zLmZpbHRlcigoeDogYW55KSA9PiB0aGlzLnNlYXJjaEZpZWxkISh4KT8udG9Mb3dlckNhc2UoKS5zZWFyY2goc2VhcmNoVGV4dC50b0xvd2VyQ2FzZSgpKSA+IC0xKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMuZmlsdGVyZWRPcHRpb25zID0gdGhpcy5vcHRpb25zLmZpbHRlcigoeDogYW55KSA9PiB4W3RoaXMudGV4dF0/LnRvTG93ZXJDYXNlKCkuc2VhcmNoKHNlYXJjaFRleHQudG9Mb3dlckNhc2UoKSkgPiAtMSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBUcmlnZ2VyIGVuZHBvaW50IGNoYW5nZWRcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgZW5kcG9pbnRDaGFuZ2VkKCk6IHZvaWQge1xyXG5cdFx0dGhpcy5fZW5kcG9pbnRDaGFuZ2UubmV4dChbdGhpcy5lbmRwb2ludCwgdGhpcy5fcGFyYW1zLCB0aGlzLnByb2plY3Rpb24sIHRoaXMuX2xvYWREYXRhXSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBUcmlnZ2VyIGVudW0gY2hhbmdlZFxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBlbnVtQ2hhbmdlZCgpOiB2b2lkIHtcclxuXHRcdHRoaXMuX2VudW1DaGFuZ2UubmV4dChbdGhpcy5fZW51bUZpbHRlcl0pO1xyXG5cdH1cclxufSJdfQ==
|
|
468
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3Qtc2VsZWN0LWZvcm0tZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3NyYy9saWIvZm9ybXMvaGVscGVycy9hYnN0cmFjdC1zZWxlY3QtZm9ybS1maWVsZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQVUsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEksT0FBTyxFQUFFLGtCQUFrQixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFaEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDOzs7OztBQUVuRixNQUFNLE9BQWdCLHVCQUEyQixTQUFRLG9CQUF1QjtJQTRUcEU7SUExVFg7O09BRUc7SUFDSyxlQUFlLEdBQTJCLElBQUksZUFBZSxDQUFNLEVBQUUsQ0FBQyxDQUFDO0lBRS9FOztPQUVHO0lBQ0ssV0FBVyxHQUEyQixJQUFJLGVBQWUsQ0FBTSxFQUFFLENBQUMs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aW1wb3J0IHsgRm9jdXNNb25pdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xyXG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbmplY3RvciwgSW5wdXQsIE9uSW5pdCwgT3B0aW9uYWwsIE91dHB1dCwgU2VsZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXBEaXJlY3RpdmUsIE5nQ29udHJvbCwgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBFcnJvclN0YXRlTWF0Y2hlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBJY29uIH0gZnJvbSAnLi4vLi4vY29tbW9uL21vZGVscy9pY29uJztcclxuaW1wb3J0IHsgRW51bVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb21tb24vc2VydmljZXMvZW51bS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWJzdHJhY3RNYXRGb3JtRmllbGQgfSBmcm9tICcuLi8uLi9mb3Jtcy9oZWxwZXJzL2Fic3RyYWN0LW1hdC1mb3JtLWZpZWxkJztcclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFNlbGVjdEZvcm1GaWVsZDxUPiBleHRlbmRzIEFic3RyYWN0TWF0Rm9ybUZpZWxkPFQ+IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcblx0LyoqXHJcblx0ICogQSBCZWhhdmlvclN1YmplY3QgdGhhdCB0cmFja3MgY2hhbmdlcyB0byB0aGUgZW5kcG9pbnQgZGF0YS5cclxuXHQgKi9cclxuXHRwcml2YXRlIF9lbmRwb2ludENoYW5nZTogQmVoYXZpb3JTdWJqZWN0PGFueVtdPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoPGFueT5bXSk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgQmVoYXZpb3JTdWJqZWN0IHRoYXQgdHJhY2tzIGNoYW5nZXMgdG8gdGhlIGVudW0gZGF0YS5cclxuXHQgKi9cclxuXHRwcml2YXRlIF9lbnVtQ2hhbmdlOiBCZWhhdmlvclN1YmplY3Q8YW55W10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCg8YW55PltdKTtcclxuXHJcblx0LyoqXHJcblx0ICogVGhlIEhUVFAgY2xpZW50IHNlcnZpY2UgdXNlZCB0byBmZXRjaCBkYXRhIGZyb20gYW4gQVBJLlxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBfaHR0cD86IEh0dHBDbGllbnQ7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFdoZXRoZXIgdGhlIGRlZmF1bHQgb3B0aW9uIHNob3VsZCBiZSBzZWxlY3RlZCBieSBkZWZhdWx0LlxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBfZGVmYXVsdE9wdGlvbjogYm9vbGVhbiA9IHRydWU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFdoZXRoZXIgbXVsdGlwbGUgc2VsZWN0aW9uIGlzIGVuYWJsZWQuXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIF9tdWx0aXBsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHQvKipcclxuXHQgKiBXaGV0aGVyIHRoZSBvcHRpb25zIHNob3VsZCBiZSBzb3J0ZWQuXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIF9zb3J0ZWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuXHQvKipcclxuXHQgKiBUaGUgQVBJIGVuZHBvaW50IG9yIGEgZnVuY3Rpb24gcmV0dXJuaW5nIHRoZSBlbmRwb2ludCBVUkwuXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIF9lbmRwb2ludD86IHN0cmluZyB8IEZ1bmN0aW9uO1xyXG5cclxuXHQvKipcclxuXHQgKiBQYXJhbWV0ZXJzIHRvIGJlIHNlbnQgd2l0aCB0aGUgQVBJIHJlcXVlc3QuXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIF9wYXJhbXM6IGFueSA9IHt9O1xyXG5cclxuXHQvKipcclxuXHQgKiBQcm9qZWN0aW9uIGZpZWxkcyB0byBiZSBpbmNsdWRlZCBpbiB0aGUgQVBJIHJlcXVlc3QuXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIF9wcm9qZWN0aW9uPzogc3RyaW5nIHwgc3RyaW5nW107XHJcblxyXG5cdC8qKlxyXG5cdCAqIFdoZXRoZXIgdG8gbG9hZCBkYXRhIGF1dG9tYXRpY2FsbHkuXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIF9sb2FkRGF0YTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgZmlsdGVyIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIHRoZSBlbnVtIGRhdGEuXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIF9lbnVtRmlsdGVyPzogRnVuY3Rpb247XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgZnVuY3Rpb24gdG8gY29tcGFyZSBvcHRpb24gdmFsdWVzIHdpdGggdGhlIHNlbGVjdGVkIHZhbHVlcy5cclxuXHQgKi9cclxuXHRwcml2YXRlIF9jb21wYXJlV2l0aCA9IChvMTogYW55LCBvMjogYW55KSA9PiBvMSA9PT0gbzI7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoZSBlbnVtZXJhdGlvbiBkYXRhIG9yIGVuZHBvaW50IGZvciB0aGUgb3B0aW9ucy5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBlbnVtOiBhbnk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIE9wdGlvbmFsIHByZWZpeCB0ZXh0IHRvIGRpc3BsYXkuXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgdGV4dFByZWZpeDogc3RyaW5nID0gJyc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoZSBwcm9wZXJ0eSBuYW1lIGluIHRoZSBvcHRpb24gb2JqZWN0IGZvciB0aGUgdGV4dCB0byBkaXNwbGF5LlxyXG5cdCAqIFRoaXMgaXMgdXNlZCB0byBkZXRlcm1pbmUgd2hpY2ggcHJvcGVydHkgb2YgdGhlIG9wdGlvbiBvYmplY3QgdG8gc2hvdyBhcyB0aGUgb3B0aW9uJ3MgdGV4dC5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBvcHRpb25UZXh0UHJvcGVydHk6IHN0cmluZyA9ICduYW1lJztcclxuXHJcblx0LyoqXHJcblx0ICogVGhlIHByb3BlcnR5IG5hbWUgaW4gdGhlIG9wdGlvbiBvYmplY3QgZm9yIHRoZSB2YWx1ZSBvZiB0aGUgb3B0aW9ucy5cclxuXHQgKiBUaGlzIGlzIHVzZWQgdG8gaWRlbnRpZnkgdGhlIHVuaXF1ZSB2YWx1ZSBmb3IgZWFjaCBvcHRpb24uXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgb3B0aW9uVmFsdWVQcm9wZXJ0eTogc3RyaW5nID0gJ2lkJztcclxuXHJcblx0LyoqXHJcblx0ICogVGhlIGtleSBmb3IgdGhlIE1hdGVyaWFsIGljb24gdG8gZGlzcGxheS5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBtYXRJY29uS2V5Pzogc3RyaW5nO1xyXG5cclxuXHQvKipcclxuXHQgKiBUaGUga2V5IGZvciB0aGUgU1ZHIGljb24gdG8gZGlzcGxheS5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBzdmdJY29uS2V5Pzogc3RyaW5nO1xyXG5cclxuXHQvKipcclxuXHQgKiBGb250IHNldCBuYW1lIGZvciBmb250IGljb24uXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgZm9udFNldD86IHN0cmluZyA9ICdtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkJztcclxuXHJcblx0LyoqXHJcblx0ICogT3B0aW9uYWwgcHJlZml4IHRvIGRpc3BsYXkgYmVmb3JlIHRoZSBvcHRpb25zLlxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIHByZWZpeDogYW55ID0gJyc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoZSBsaXN0IG9mIGF2YWlsYWJsZSBvcHRpb25zLlxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIG9wdGlvbnM6IGFueTtcclxuXHJcblx0LyoqXHJcblx0ICogVGhlIGxpc3Qgb2YgZmlsdGVyZWQgb3B0aW9ucy5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBmaWx0ZXJlZE9wdGlvbnM6IGFueTtcclxuXHJcblx0LyoqXHJcblx0ICogV2hldGhlciB0aGUgb3B0aW9ucyBjYW4gYmUgZmlsdGVyZWQuXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgZmlsdGVyYWJsZTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFdoZXRoZXIgdG8gY2FjaGUgdGhlIG9wdGlvbnMuXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgY2FjaGU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuXHQvKipcclxuXHQgKiBXaGV0aGVyIHRvIHNlbGVjdCB0aGUgZmlyc3Qgb3B0aW9uIGJ5IGRlZmF1bHQuXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgc2VsZWN0Rmlyc3Q6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0LyoqXHJcblx0ICogVGhlIGZpZWxkIGJ5IHdoaWNoIHRvIHNvcnQgdGhlIG9wdGlvbnMuXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgc29ydEJ5Pzogc3RyaW5nO1xyXG5cclxuXHQvKipcclxuXHQgKiBBIGZ1bmN0aW9uIHRvIG1hcCB0aGUgb3B0aW9ucyBiZWZvcmUgZGlzcGxheWluZy5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBtYXBwZXI/OiAoeDogYW55W10pID0+IGFueTtcclxuXHJcblx0LyoqXHJcblx0ICogQSBmdW5jdGlvbiB0byByZXR1cm4gdGhlIGljb24gZm9yIGEgZ2l2ZW4gb3B0aW9uLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBvcHRpb25JY29uPzogKHg6IGFueSkgPT4gSWNvbjxULCBhbnk+O1xyXG5cclxuXHQvKipcclxuXHQgKiBXaGV0aGVyIHRoZSBkZWZhdWx0IG9wdGlvbiBzaG91bGQgYmUgc2VsZWN0ZWQuXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgZ2V0IGRlZmF1bHRPcHRpb24oKSB7IHJldHVybiB0aGlzLl9kZWZhdWx0T3B0aW9uOyB9XHJcblx0cHVibGljIHNldCBkZWZhdWx0T3B0aW9uKGRlZmF1bHRPcHRpb24pIHsgdGhpcy5fZGVmYXVsdE9wdGlvbiA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShkZWZhdWx0T3B0aW9uKTsgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpOyB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFdoZXRoZXIgbXVsdGlwbGUgc2VsZWN0aW9uIGlzIGVuYWJsZWQuXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgZ2V0IG11bHRpcGxlKCkgeyByZXR1cm4gdGhpcy5fbXVsdGlwbGU7IH1cclxuXHRwdWJsaWMgc2V0IG11bHRpcGxlKG11bHRpKSB7IHRoaXMuX211bHRpcGxlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KG11bHRpKTsgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpOyB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFdoZXRoZXIgdGhlIG9wdGlvbnMgc2hvdWxkIGJlIHNvcnRlZC5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBnZXQgc29ydGVkKCkgeyByZXR1cm4gdGhpcy5fc29ydGVkOyB9XHJcblx0cHVibGljIHNldCBzb3J0ZWQoc29ydGVkKSB7IHRoaXMuX3NvcnRlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShzb3J0ZWQpOyB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7IH1cclxuXHJcblx0LyoqXHJcblx0ICogVGhlIEFQSSBlbmRwb2ludCBvciBhIGZ1bmN0aW9uIHJldHVybmluZyB0aGUgZW5kcG9pbnQgVVJMLlxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGdldCBlbmRwb2ludCgpOiBzdHJpbmcgfCBGdW5jdGlvbiB8IHVuZGVmaW5lZCB7IHJldHVybiB0aGlzLl9lbmRwb2ludDsgfVxyXG5cdHB1YmxpYyBzZXQgZW5kcG9pbnQoZW5kcG9pbnQ6IHN0cmluZyB8IEZ1bmN0aW9uKSB7IHRoaXMuX2VuZHBvaW50ID0gZW5kcG9pbnQ7IHRoaXMuZW5kcG9pbnRDaGFuZ2VkKCk7IH1cclxuXHJcblx0LyoqXHJcblx0ICogUGFyYW1ldGVycyB0byBiZSBzZW50IHdpdGggdGhlIEFQSSByZXF1ZXN0LlxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGdldCBwYXJhbXMoKSB7IHJldHVybiB0aGlzLl9wYXJhbXM7IH1cclxuXHRwdWJsaWMgc2V0IHBhcmFtcyhwYXJhbXM6IGFueSkge1xyXG5cdFx0aWYgKHBhcmFtcykge1xyXG5cdFx0XHQvLyBSZW1vdmUgZW1wdHkgcGFyYW1ldGVyc1xyXG5cdFx0XHRPYmplY3Qua2V5cyhwYXJhbXMpLmZvckVhY2goKGtleSkgPT4ge1xyXG5cdFx0XHRcdGlmIChwYXJhbXNba2V5XSA9PSBudWxsIHx8IHBhcmFtc1trZXldID09ICcnIHx8IHBhcmFtc1trZXldID09ICd1bmRlZmluZWQnKSB7XHJcblx0XHRcdFx0XHRkZWxldGUgcGFyYW1zW2tleV07XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHJcblx0XHRcdC8vIFVwZGF0ZSBwYXJhbWV0ZXJzIGlmIHRoZXkgaGF2ZSBjaGFuZ2VkXHJcblx0XHRcdGlmIChKU09OLnN0cmluZ2lmeSh0aGlzLl9wYXJhbXMpICE9PSBKU09OLnN0cmluZ2lmeShwYXJhbXMpKSB7XHJcblx0XHRcdFx0dGhpcy5fcGFyYW1zID0gcGFyYW1zO1xyXG5cdFx0XHRcdHRoaXMuZW5kcG9pbnRDaGFuZ2VkKCk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFByb2plY3Rpb24gZmllbGRzIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBBUEkgcmVxdWVzdC5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBnZXQgcHJvamVjdGlvbigpOiBzdHJpbmcgfCBzdHJpbmdbXSB7IHJldHVybiB0aGlzLl9wcm9qZWN0aW9uID8/ICcnOyB9XHJcblx0cHVibGljIHNldCBwcm9qZWN0aW9uKHByb2plY3Rpb246IHN0cmluZyB8IHN0cmluZ1tdIHwgdW5kZWZpbmVkKSB7IHRoaXMuX3Byb2plY3Rpb24gPSBwcm9qZWN0aW9uOyB0aGlzLmVuZHBvaW50Q2hhbmdlZCgpOyB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFdoZXRoZXIgdG8gbG9hZCBkYXRhIGF1dG9tYXRpY2FsbHkuXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgZ2V0IGxvYWREYXRhKCkgeyByZXR1cm4gdGhpcy5fbG9hZERhdGE7IH1cclxuXHRwdWJsaWMgc2V0IGxvYWREYXRhKGxvYWREYXRhKSB7IHRoaXMuX2xvYWREYXRhID0gY29lcmNlQm9vbGVhblByb3BlcnR5KGxvYWREYXRhKTsgdGhpcy5lbmRwb2ludENoYW5nZWQoKTsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBBIGZpbHRlciBmdW5jdGlvbiB0byBhcHBseSB0byB0aGUgZW51bSBkYXRhLlxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGdldCBlbnVtRmlsdGVyKCk6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkIHsgcmV0dXJuIHRoaXMuX2VudW1GaWx0ZXI7IH1cclxuXHRwdWJsaWMgc2V0IGVudW1GaWx0ZXIoZW51bUZpbHRlcjogRnVuY3Rpb24pIHsgdGhpcy5fZW51bUZpbHRlciA9IGVudW1GaWx0ZXI7IHRoaXMuZW51bUNoYW5nZWQoKTsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBXaGV0aGVyIHRoZSBjb250cm9sIGlzIGRpc2FibGVkLlxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGdldCBkaXNhYmxlZCgpIHsgcmV0dXJuIHRoaXMuX3JlYWRvbmx5IHx8IHN1cGVyLmRpc2FibGVkOyB9XHJcblx0cHVibGljIHNldCBkaXNhYmxlZChkaXNhYmxlZDogYW55KSB7XHJcblx0XHR0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShkaXNhYmxlZCk7XHJcblx0XHRpZiAodGhpcy5mb2N1c2VkKSB7XHJcblx0XHRcdHRoaXMuZm9jdXNlZCA9IGZhbHNlO1xyXG5cdFx0XHR0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBHZXRzIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgdmFsdWUocykuXHJcblx0ICovXHJcblx0cHVibGljIGdldCBjdXJyZW50VmFsdWUoKTogYW55IHtcclxuXHRcdGlmICh0aGlzLm11bHRpcGxlKSB7XHJcblx0XHRcdGlmICh0aGlzLmNvbXBhcmVXaXRoKSB7XHJcblx0XHRcdFx0cmV0dXJuIHRoaXMub3B0aW9ucz8uZmlsdGVyKCh4OiBhbnkpID0+ICg8YW55W10+KHRoaXMuX3ZhbHVlIHx8IFtdKSkuc29tZSh5ID0+IHRoaXMuY29tcGFyZVdpdGgoeCwgeSkpKTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0cmV0dXJuIHRoaXMub3B0aW9ucz8uZmlsdGVyKCh4OiBhbnkpID0+ICg8YW55W10+KHRoaXMuX3ZhbHVlIHx8IFtdKSkuaW5jbHVkZXMoeFt0aGlzLm9wdGlvblZhbHVlUHJvcGVydHldKSk7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIHRoaXMub3B0aW9ucz8uZmlsdGVyKCh4OiBhbnkpID0+IHhbdGhpcy5vcHRpb25WYWx1ZVByb3BlcnR5XSA9PSB0aGlzLl92YWx1ZSlbMF07XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBBIGZ1bmN0aW9uIHRvIGNvbXBhcmUgdGhlIG9wdGlvbiB2YWx1ZXMgd2l0aCB0aGUgc2VsZWN0ZWQgdmFsdWVzLiBUaGUgZmlyc3QgYXJndW1lbnRcclxuXHQgKiBpcyBhIHZhbHVlIGZyb20gYW4gb3B0aW9uLiBUaGUgc2Vjb25kIGlzIGEgdmFsdWUgZnJvbSB0aGUgc2VsZWN0aW9uLiBBIGJvb2xlYW5cclxuXHQgKiBzaG91bGQgYmUgcmV0dXJuZWQuXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgZ2V0IGNvbXBhcmVXaXRoKCk6IChvMTogYW55LCBvMjogYW55KSA9PiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX2NvbXBhcmVXaXRoOyB9XHJcblx0cHVibGljIHNldCBjb21wYXJlV2l0aChmbjogKG8xOiBhbnksIG8yOiBhbnkpID0+IGJvb2xlYW4pIHsgdGhpcy5fY29tcGFyZVdpdGggPSBmbjsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBjaGFuZ2U/OiBmdW5jdGlvblxyXG5cdCAqL1xyXG5cdEBPdXRwdXQoJ2NoYW5nZScpXHJcblx0cHVibGljIG9uVmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIGl0ZW1DaGFuZ2U/OiBmdW5jdGlvblxyXG5cdCAqL1xyXG5cdEBPdXRwdXQoJ2l0ZW1DaGFuZ2UnKVxyXG5cdHB1YmxpYyBvbkl0ZW1DaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIHNlbGVjdGVkPzogZnVuY3Rpb25cclxuXHQgKi9cclxuXHRAT3V0cHV0KCdzZWxlY3RlZCcpXHJcblx0cHVibGljIG9uU2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIGl0ZW1TZWxlY3RlZD86IGZ1bmN0aW9uXHJcblx0ICovXHJcblx0QE91dHB1dCgnaXRlbVNlbGVjdGVkJylcclxuXHRwdWJsaWMgb25JdGVtU2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIGxhdW5jaD86IGZ1bmN0aW9uXHJcblx0ICovXHJcblx0QE91dHB1dCgnbGF1bmNoJylcclxuXHRwdWJsaWMgb25MYXVuY2g6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIHNlYXJjaEZpZWxkPzogZnVuY3Rpb25cclxuXHQgKi9cclxuXHRASW5wdXQoKSBzZWFyY2hGaWVsZD86ICh4OiBhbnkpID0+IHN0cmluZztcclxuXHJcblx0LyoqXHJcblx0ICogQ29uc3RydWN0b3JcclxuXHQgKiBAcGFyYW0gY29udHJvbFR5cGUgXHJcblx0ICogQHBhcmFtIGluamVjdG9yIFxyXG5cdCAqIEBwYXJhbSBuZ0NvbnRyb2wgXHJcblx0ICogQHBhcmFtIHBhcmVudEZvcm0gXHJcblx0ICogQHBhcmFtIHBhcmVudEZvcm1Hcm91cCBcclxuXHQgKiBAcGFyYW0gZGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyIFxyXG5cdCAqIEBwYXJhbSBmb2N1c01vbml0b3IgXHJcblx0ICogQHBhcmFtIGVsZW1lbnRSZWYgXHJcblx0ICogQHBhcmFtIGNoYW5nZURldGVjdG9yUmVmIFxyXG5cdCAqL1xyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0Y29udHJvbFR5cGU6IHN0cmluZyxcclxuXHRcdHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IsXHJcblx0XHRAT3B0aW9uYWwoKSBAU2VsZigpIG5nQ29udHJvbDogTmdDb250cm9sLFxyXG5cdFx0QE9wdGlvbmFsKCkgcGFyZW50Rm9ybTogTmdGb3JtLFxyXG5cdFx0QE9wdGlvbmFsKCkgcGFyZW50Rm9ybUdyb3VwOiBGb3JtR3JvdXBEaXJlY3RpdmUsXHJcblx0XHRkZWZhdWx0RXJyb3JTdGF0ZU1hdGNoZXI6IEVycm9yU3RhdGVNYXRjaGVyLFxyXG5cdFx0Zm9jdXNNb25pdG9yOiBGb2N1c01vbml0b3IsXHJcblx0XHRlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG5cdFx0Y2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmXHJcblx0KSB7XHJcblx0XHRzdXBlcihjb250cm9sVHlwZSwgbmdDb250cm9sLCBwYXJlbnRGb3JtLCBwYXJlbnRGb3JtR3JvdXAsIGRlZmF1bHRFcnJvclN0YXRlTWF0Y2hlciwgZm9jdXNNb25pdG9yLCBlbGVtZW50UmVmLCBjaGFuZ2VEZXRlY3RvclJlZik7XHJcblx0XHRpZiAoIXRoaXMuZW51bSkge1xyXG5cdFx0XHR0aGlzLl9odHRwID0gaW5qZWN0b3IuZ2V0KEh0dHBDbGllbnQpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogTGlmZWN5Y2xlIGhvb2sgdGhhdCBpcyBjYWxsZWQgYWZ0ZXIgYSBjb21wb25lbnQncyBcclxuXHQgKiB2aWV3IGhhcyBiZWVuIGZ1bGx5IGluaXRpYWxpemVkLlxyXG5cdCAqL1xyXG5cdG5nT25Jbml0KCk6IHZvaWQge1xyXG5cdFx0dGhpcy5maWx0ZXJlZE9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XHJcblxyXG5cdFx0aWYgKHRoaXMuZW51bSkge1xyXG5cdFx0XHR0aGlzLmZpbHRlcmFibGUgPSBmYWxzZTtcclxuXHRcdFx0dGhpcy5maWx0ZXJlZE9wdGlvbnMgPSB0aGlzLm9wdGlvbnMgPSBFbnVtU2VydmljZS50b0FycmF5KHRoaXMuZW51bSwgdGhpcy5wcmVmaXgpO1xyXG5cclxuXHRcdFx0LyogQXBwbHkgZW51bSBmaWx0ZXJzICovXHJcblx0XHRcdGlmICh0aGlzLl9lbnVtRmlsdGVyICYmIHRoaXMub3B0aW9ucykge1xyXG5cdFx0XHRcdHRoaXMuZmlsdGVyZWRPcHRpb25zID0gdGhpcy5vcHRpb25zID0gdGhpcy5vcHRpb25zLmZpbHRlcih0aGlzLl9lbnVtRmlsdGVyKTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0aWYgKEFycmF5LmlzQXJyYXkodGhpcy5vcHRpb25zKSkge1xyXG5cdFx0XHRcdHRoaXMuaGFuZGxlSXRlbVNlbGVjdGVkKHRoaXMudmFsdWUpO1xyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2UgaWYgKCF0aGlzLm9wdGlvbnMpIHtcclxuXHRcdFx0dGhpcy5fZW5kcG9pbnRDaGFuZ2UucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKS5waXBlKGRlYm91bmNlVGltZSgxKSkuc3Vic2NyaWJlKF8gPT4ge1xyXG5cdFx0XHRcdGxldCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCk7XHJcblx0XHRcdFx0aWYgKHRoaXMuY2FjaGUpIHtcclxuXHRcdFx0XHRcdGhlYWRlcnMuc2V0KCdDbGllbnQtQ2FjaGUnLCAnWWVzJyk7XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHQvKiBJbml0IHBhcmFtcywgaWYgbnVsbCAqL1xyXG5cdFx0XHRcdGxldCBwYXJhbXMgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLl9wYXJhbXMgfHwge30pO1xyXG5cclxuXHRcdFx0XHQvKiBBZGQgcHJvamVjdGlvbiwgaWYgYW55ICovXHJcblx0XHRcdFx0aWYgKHRoaXMucHJvamVjdGlvbikge1xyXG5cdFx0XHRcdFx0cGFyYW1zLnByb2plY3Rpb24gPSBBcnJheS5pc0FycmF5KHRoaXMucHJvamVjdGlvbikgPyB0aGlzLnByb2plY3Rpb24uam9pbignLCcpIDogdGhpcy5wcm9qZWN0aW9uO1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0LyogQWRkIHNvcnRpbmcgKi9cclxuXHRcdFx0XHRpZiAoIXRoaXMucGFyYW1zLnNvcnRCeSAmJiAodGhpcy5zb3J0QnkgfHwgdGhpcy5zb3J0ZWQpKSB7XHJcblx0XHRcdFx0XHRwYXJhbXMuc29ydEJ5ID0gdGhpcy5zb3J0QnkgfHwgdGhpcy5vcHRpb25UZXh0UHJvcGVydHk7XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHQvKiBHZXQgZW5kcG9pbnQgKi9cclxuXHRcdFx0XHRsZXQgZW5kcG9pbnQgPSB0eXBlb2YgdGhpcy5lbmRwb2ludCA9PT0gJ2Z1bmN0aW9uJyA/IHRoaXMuZW5kcG9pbnQodGhpcykgOiAoPHN0cmluZz50aGlzLmVuZHBvaW50KTtcclxuXHRcdFx0XHRpZiAodGhpcy5faHR0cCAmJiBlbmRwb2ludCAmJiB0aGlzLmxvYWREYXRhKSB7XHJcblx0XHRcdFx0XHR0aGlzLl9odHRwLmdldChlbmRwb2ludCwgeyBwYXJhbXM6IHBhcmFtcywgaGVhZGVyczogaGVhZGVycyB9KVxyXG5cdFx0XHRcdFx0XHQucGlwZShtYXAoKHg6IGFueSkgPT4gdGhpcy5tYXBwZXIgPyB0aGlzLm1hcHBlcih4KSA6IHgpKVxyXG5cdFx0XHRcdFx0XHQuc3Vic2NyaWJlKHggPT4ge1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMuZmlsdGVyZWRPcHRpb25zID0gdGhpcy5vcHRpb25zID0geDtcclxuXHJcblx0XHRcdFx0XHRcdFx0aWYgKHRoaXMuc2VsZWN0Rmlyc3QgJiYgIXRoaXMudmFsdWUgJiYgdGhpcy5vcHRpb25zPy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLnZhbHVlID0gdGhpcy5vcHRpb25zWzBdW3RoaXMub3B0aW9uVmFsdWVQcm9wZXJ0eV07XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdFx0XHRpZiAoQXJyYXkuaXNBcnJheSh0aGlzLm9wdGlvbnMpKSB7XHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmhhbmRsZUl0ZW1TZWxlY3RlZCh0aGlzLnZhbHVlKTtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0XHRcdHN1cGVyLndyaXRlVmFsdWUodGhpcy52YWx1ZSEpO1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRnJvbSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2VcclxuXHQgKiBAcGFyYW0gdmFsdWUgXHJcblx0ICovXHJcblx0d3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XHJcblx0XHQvKiBXcml0ZSB0aGUgdmFsdWUgYW5kIHRyaWdnZXIgc29tZSBldmVudHMgKi9cclxuXHRcdHN1cGVyLndyaXRlVmFsdWUodmFsdWUpO1xyXG5cdFx0dGhpcy5vblNlbGVjdGVkLmVtaXQodmFsdWUpO1xyXG5cclxuXHRcdGlmIChBcnJheS5pc0FycmF5KHRoaXMub3B0aW9ucykpIHtcclxuXHRcdFx0dGhpcy5oYW5kbGVJdGVtU2VsZWN0ZWQodGhpcy52YWx1ZSk7XHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBNZXRob2QgZXhlY3V0ZWQgd2hlbiBhbiBvcHRpb24gY2hhbmdlc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBoYW5kbGVDaGFuZ2UoJGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuXHRcdHRoaXMub25WYWx1ZUNoYW5nZS5lbWl0KCRldmVudCk7XHJcblx0XHR0aGlzLmhhbmRsZUl0ZW1DaGFuZ2UoJGV2ZW50LnZhbHVlKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEhhbmRsZXMgaXRlbSBjaGFuZ2VzXHJcblx0ICogQHBhcmFtIHZhbHVlIFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBoYW5kbGVJdGVtU2VsZWN0ZWQodmFsdWU6IGFueSk6IHZvaWQge1xyXG5cdFx0aWYgKHRoaXMubXVsdGlwbGUpIHtcclxuXHRcdFx0dGhpcy5vbkl0ZW1TZWxlY3RlZC5lbWl0KHRoaXMub3B0aW9ucy5maWx0ZXIoKHg6IGFueSkgPT4gKHZhbHVlIHx8IFtdKS5pbmNsdWRlcyh4W3RoaXMub3B0aW9uVmFsdWVQcm9wZXJ0eV0pKSk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLm9uSXRlbVNlbGVjdGVkLmVtaXQodGhpcy5vcHRpb25zLmZpbHRlcigoeDogYW55KSA9PiB4W3RoaXMub3B0aW9uVmFsdWVQcm9wZXJ0eV0gPT0gdmFsdWUpWzBdKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEhhbmRsZXMgaXRlbSBjaGFuZ2VzXHJcblx0ICogQHBhcmFtIHZhbHVlIFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBoYW5kbGVJdGVtQ2hhbmdlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuXHRcdGlmICh0aGlzLm11bHRpcGxlKSB7XHJcblx0XHRcdHRoaXMub25JdGVtQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zLmZpbHRlcigoeDogYW55KSA9PiAodmFsdWUgfHwgW10pLmluY2x1ZGVzKHhbdGhpcy5vcHRpb25WYWx1ZVByb3BlcnR5XSkpKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMub25JdGVtQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zLmZpbHRlcigoeDogYW55KSA9PiB4W3RoaXMub3B0aW9uVmFsdWVQcm9wZXJ0eV0gPT0gdmFsdWUpWzBdKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEhhbmRlbHMgZmlsdGVyIGV2ZW50XHJcblx0ICogQHBhcmFtICRldmVudCBcclxuXHQgKi9cclxuXHRwdWJsaWMgaGFuZGxlRmlsdGVyKCRldmVudDogRXZlbnQpOiB2b2lkIHtcclxuXHRcdGxldCBzZWFyY2hUZXh0OiBzdHJpbmcgPSAoJGV2ZW50Py50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCk/LnZhbHVlID8/ICcnO1xyXG5cdFx0aWYgKHRoaXMuc2VhcmNoRmllbGQpIHtcclxuXHRcdFx0dGhpcy5maWx0ZXJlZE9wdGlvbnMgPSB0aGlzLm9wdGlvbnMuZmlsdGVyKCh4OiBhbnkpID0+IHRoaXMuc2VhcmNoRmllbGQhKHgpPy50b0xvd2VyQ2FzZSgpLnNlYXJjaChzZWFyY2hUZXh0LnRvTG93ZXJDYXNlKCkpID4gLTEpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5maWx0ZXJlZE9wdGlvbnMgPSB0aGlzLm9wdGlvbnMuZmlsdGVyKCh4OiBhbnkpID0+IHhbdGhpcy5vcHRpb25UZXh0UHJvcGVydHldPy50b0xvd2VyQ2FzZSgpLnNlYXJjaChzZWFyY2hUZXh0LnRvTG93ZXJDYXNlKCkpID4gLTEpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogVHJpZ2dlciBlbmRwb2ludCBjaGFuZ2VkXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGVuZHBvaW50Q2hhbmdlZCgpOiB2b2lkIHtcclxuXHRcdHRoaXMuX2VuZHBvaW50Q2hhbmdlLm5leHQoW3RoaXMuZW5kcG9pbnQsIHRoaXMuX3BhcmFtcywgdGhpcy5wcm9qZWN0aW9uLCB0aGlzLl9sb2FkRGF0YV0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogVHJpZ2dlciBlbnVtIGNoYW5nZWRcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgZW51bUNoYW5nZWQoKTogdm9pZCB7XHJcblx0XHR0aGlzLl9lbnVtQ2hhbmdlLm5leHQoW3RoaXMuX2VudW1GaWx0ZXJdKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIExvZyB0byBjb25zb2xlXHJcblx0ICogQHBhcmFtIG1lc3NhZ2UgXHJcblx0ICogQHBhcmFtIG9wdGlvbmFsUGFyYW1zIFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBsb2cobWVzc2FnZTogYW55LCAuLi5vcHRpb25hbFBhcmFtczogYW55W10pIHtcclxuXHRcdGNvbnNvbGUubG9nKG1lc3NhZ2UsIG9wdGlvbmFsUGFyYW1zKTtcclxuXHR9XHJcbn0iXX0=
|
|
@@ -245,15 +245,30 @@ export class FormFieldDefinition {
|
|
|
245
245
|
*/
|
|
246
246
|
optionTemplate;
|
|
247
247
|
/**
|
|
248
|
-
*
|
|
249
|
-
*
|
|
248
|
+
* The property name in the option object for the text to display.
|
|
249
|
+
* This is used to determine which property of the option object to show as the option's text.
|
|
250
250
|
*/
|
|
251
|
-
|
|
251
|
+
optionTextProperty = 'name';
|
|
252
252
|
/**
|
|
253
|
-
*
|
|
254
|
-
*
|
|
253
|
+
* The property name in the option object for the value of the options.
|
|
254
|
+
* This is used to identify the unique value for each option.
|
|
255
|
+
*/
|
|
256
|
+
optionValueProperty = 'id';
|
|
257
|
+
/**
|
|
258
|
+
* The property name in the option object for the Material icon.
|
|
259
|
+
* This can be used to display a Material icon in the options list.
|
|
260
|
+
*/
|
|
261
|
+
optionMatIconProperty;
|
|
262
|
+
/**
|
|
263
|
+
* The property name in the option object for the SVG icon.
|
|
264
|
+
* This can be used to display an SVG icon in the options list.
|
|
265
|
+
*/
|
|
266
|
+
optionSvgIconProperty;
|
|
267
|
+
/**
|
|
268
|
+
* The font set to be used for the icons in the options.
|
|
269
|
+
* This specifies a custom font set for the icons displayed in the options list.
|
|
255
270
|
*/
|
|
256
|
-
|
|
271
|
+
optionIconFontSet = 'material-symbols-outlined';
|
|
257
272
|
/**
|
|
258
273
|
* Parameters for data retrieval.
|
|
259
274
|
* @property
|
|
@@ -343,4 +358,4 @@ export class FormFieldDefinition {
|
|
|
343
358
|
Object.assign(this, init);
|
|
344
359
|
}
|
|
345
360
|
}
|
|
346
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1kZWZpbml0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3NyYy9saWIvZm9ybXMvbW9kZWxzL2Zvcm0tZmllbGQtZGVmaW5pdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxNQUFNLE9BQU8sbUJBQW1CO0lBQzVCOzs7T0FHRztJQUNJLG9CQUFvQixHQUFXLEVBQUUsQ0FBQztJQUV6Qzs7O09BR0c7SUFDSSxvQkFBb0IsQ0FBK0Y7SUFFMUg7OztPQUdHO0lBQ0ksZ0JBQWdCLEdBQVcsTUFBTSxDQUFDO0lBRXpDOzs7T0FHRztJQUNJLE1BQU0sQ0FBK0Y7SUFFNUc7OztPQUdHO0lBQ0ksWUFBWSxDQUErRjtJQUVsSDs7O09BR0c7SUFDSSxRQUFRLEdBQVcsTUFBTSxDQUFDO0lBRWpDOzs7T0FHRztJQUNJLFNBQVMsQ0FBYTtJQUU3Qjs7O09BR0c7SUFDSSxLQUFLLENBQWdGO0lBRTVGOzs7T0FHRztJQUNJLFdBQVcsR0FBOEMsQ0FBQyxFQUFPLEVBQUUsRUFBTyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDO0lBRWhHOzs7T0FHRztJQUNJLFFBQVEsQ0FBVTtJQUV6Qjs7O09BR0c7SUFDSSxXQUFXLEdBQVksS0FBSyxDQUFDO0lBRXBDOzs7T0FHRztJQUNJLFVBQVUsR0FBc0IsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQztJQUUzRDs7O09BR0c7SUFDSSxlQUFlLENBQTBIO0lBRWhKOzs7T0FHRztJQUNJLGdCQUFnQixDQUFpSDtJQUV4STs7O09BR0c7SUFDSSxRQUFRLENBQTJGO0lBRTFHOzs7T0FHRztJQUNJLFVBQVUsQ0FBaUY7SUFFbEc7OztPQUdHO0lBQ0ksUUFBUSxDQUFPO0lBRXRCOzs7T0FHRztJQUNJLGNBQWMsR0FBcUYsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO0lBRXJIOzs7T0FHRztJQUNJLFNBQVMsQ0FBWTtJQUU1Qjs7O09BR0c7SUFDSSxjQUFjLENBQVU7SUFFL0I7OztPQUdHO0lBQ0ksUUFBUSxDQUFVO0lBRXpCOzs7T0FHRztJQUNJLElBQUksQ0FBVTtJQUVyQjs7O09BR0c7SUFDSSxXQUFXLENBQVc7SUFFN0I7OztPQUdHO0lBQ0ksV0FBVyxHQUFXLFNBQVMsQ0FBQSxvQkFBb0IsQ0FBQztJQUUzRDs7O09BR0c7SUFDSSxTQUFTLENBQVU7SUFFMUI7OztPQUdHO0lBQ0ksTUFBTSxDQUFXO0lBRXhCOzs7T0FHRztJQUNJLElBQUksQ0FBZ0Y7SUFFM0Y7OztPQUdHO0lBQ0ksSUFBSSxDQUFVO0lBRXJCOzs7T0FHRztJQUNJLEtBQUssQ0FBVTtJQUV0Qjs7O09BR0c7SUFDSSxTQUFTLEdBQVcsTUFBTSxDQUFDO0lBRWxDOzs7T0FHRztJQUNJLFlBQVksQ0FBVztJQUU5Qjs7O09BR0c7SUFDSSxVQUFVLENBQStGO0lBRWhIOzs7T0FHRztJQUNJLFVBQVUsQ0FBK0Y7SUFFaEg7OztPQUdHO0lBQ0ksS0FBSyxDQUE4RjtJQUUxRzs7O09BR0c7SUFDSSxNQUFNLENBQXFCO0lBRWxDOzs7T0FHRztJQUNJLEdBQUcsQ0FBaUI7SUFFM0I7OztPQUdHO0lBQ0ksU0FBUyxDQUFVO0lBRTFCOzs7T0FHRztJQUNJLFNBQVMsQ0FBVTtJQUUxQjs7O09BR0c7SUFDSSxRQUFRLENBQVU7SUFFekI7OztPQUdHO0lBQ0ksR0FBRyxDQUFpQjtJQUUzQjs7O09BR0c7SUFDSSxTQUFTLENBQVU7SUFFMUI7OztPQUdHO0lBQ0ksU0FBUyxDQUFXO0lBRTNCOzs7T0FHRztJQUNJLFFBQVEsR0FBWSxLQUFLLENBQUM7SUFFakM7OztPQUdHO0lBQ0ksV0FBVyxDQUFXO0lBRTdCOzs7T0FHRztJQUNJLFdBQVcsR0FBWSxLQUFLLENBQUM7SUFFcEM7OztPQUdHO0lBQ0ksSUFBSSxDQUFVO0lBRXJCOzs7T0FHRztJQUNJLE9BQU8sQ0FBd0k7SUFFdEo7OztPQUdHO0lBQ0ksYUFBYSxHQUFhLElBQUksQ0FBQztJQUV0Qzs7O09BR0c7SUFDSSxjQUFjLENBQStGO0lBRXBIOzs7T0FHRztJQUNJLFVBQVUsR0FBVyxNQUFNLENBQUM7SUFFbkM7OztPQUdHO0lBQ0ksV0FBVyxHQUFXLElBQUksQ0FBQztJQUVsQzs7O09BR0c7SUFDSSxNQUFNLENBQXVGO0lBRXBHOzs7T0FHRztJQUNJLE9BQU8sQ0FBbUI7SUFFakM7OztPQUdHO0lBQ0ksVUFBVSxHQUFzQixFQUFFLENBQUM7SUFFMUM7OztPQUdHO0lBQ0ksUUFBUSxDQUFvRjtJQUVuRzs7O09BR0c7SUFDSSxRQUFRLENBQWlHO0lBRWhIOzs7T0FHRztJQUNJLEdBQUcsR0FBVyxDQUFDLENBQUM7SUFFdkI7OztPQUdHO0lBQ0ksSUFBSSxDQUFVO0lBRXJCOzs7T0FHRztJQUNJLFdBQVcsR0FBVyxRQUFRLENBQUM7SUFFdEM7OztPQUdHO0lBQ0ksTUFBTSxDQUFnRjtJQUU3Rjs7O09BR0c7SUFDSSxhQUFhLEdBQWtFLEVBQUUsQ0FBQztJQUV6Rjs7O09BR0c7SUFDSSxlQUFlLENBQVU7SUFFaEM7OztPQUdHO0lBQ0ksYUFBYSxDQUErRjtJQUVuSDs7O09BR0c7SUFDSSxXQUFXLEdBQVcsTUFBTSxDQUFDO0lBRXBDOzs7T0FHRztJQUNJLGVBQWUsQ0FBNkc7SUFFbkk7OztPQUdHO0lBQ0ksSUFBSSxDQUE0RztJQUV2SDs7O09BR0c7SUFDSSxPQUFPLEdBQVksSUFBSSxDQUFDO0lBRS9COzs7O09BSUc7SUFDSCxZQUFtQixJQUE0QztRQUMzRCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUeXBlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IERhdGVGaWx0ZXJGbiwgTWF0RGF0ZXBpY2tlciB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyXCI7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBJR2VuZXJpY0Zvcm1CYXNlQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2Jhc2UvaW50ZXJmYWNlcy9pZ2VuZXJpYy1mb3JtLWJhc2VcIjtcclxuaW1wb3J0IHsgU3VmZml4QnV0dG9uIH0gZnJvbSBcIi4uLy4uL2NvbW1vbi9tb2RlbHMvc3VmZml4LWJ1dHRvblwiO1xyXG5pbXBvcnQgeyBGb3JtRmllbGRUeXBlIH0gZnJvbSBcIi4uL2VudW1zL2Zvcm0tZmllbGQtdHlwZVwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIEZvcm1GaWVsZERlZmluaXRpb248VEVudGl0eSA9IGFueSwgVFByb3BlcnR5ID0gYW55PiB7XHJcbiAgICAvKipcclxuICAgICAqIENTUyBjbGFzcyBmb3IgYXV0b2NvbXBsZXRlIGZ1bmN0aW9uYWxpdHkuXHJcbiAgICAgKiBAcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgcHVibGljIGF1dG9jb21wbGV0ZUNzc0NsYXNzOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRlbXBsYXRlIGZvciBhdXRvY29tcGxldGUgZnVuY3Rpb25hbGl0eS5cclxuICAgICAqIEBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYXV0b2NvbXBsZXRlVGVtcGxhdGU/OiAoeDogVFByb3BlcnR5LCB5PzogVEVudGl0eSwgZj86IEZvcm1Hcm91cCwgY3R4PzogSUdlbmVyaWNGb3JtQmFzZUNvbXBvbmVudDxURW50aXR5PikgPT4gYW55O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGV4dCB0byBkaXNwbGF5IGluIGF1dG9jb21wbGV0ZS5cclxuICAgICAqIEBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYXV0b2NvbXBsZXRlVGV4dDogc3RyaW5nID0gJ25hbWUnO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FsbGJhY2sgZnVuY3Rpb24gaW52b2tlZCBvbiBjaGFuZ2UuXHJcbiAgICAgKiBAcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgcHVibGljIGNoYW5nZT86ICh4OiBUUHJvcGVydHksIHk/OiBURW50aXR5LCBmPzogRm9ybUdyb3VwLCBjdHg/OiBJR2VuZXJpY0Zvcm1CYXNlQ29tcG9uZW50PFRFbnRpdHk+KSA9PiBhbnk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUZW1wbGF0ZSBmb3IgY2hpcCBmdW5jdGlvbmFsaXR5LlxyXG4gICAgICogQHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjaGlwVGVtcGxhdGU/OiAoeDogVFByb3BlcnR5LCB5PzogVEVudGl0eSwgZj86IEZvcm1Hcm91cCwgY3R4PzogSUdlbmVyaWNGb3JtQmFzZUNvbXBvbmVudDxURW50aXR5PikgPT4gYW55O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGV4dCB0byBkaXNwbGF5IGluIGNoaXAuXHJcbiAgICAgKiBAcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgcHVibGljIGNoaXBUZXh0OiBzdHJpbmcgPSAnbmFtZSc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUeXBlIG9mIGNsYXNzIHRvIGJlIGluc3RhbnRpYXRlZC5cclxuICAgICAqIEBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgY2xhc3NUeXBlPzogVHlwZTxhbnk+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FsbGJhY2sgZnVuY3Rpb24gaW52b2tlZCBvbiBjbGVhcmluZy5cclxuICAgICAqIEBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgY2xlYXI/OiAoeDogVEVudGl0eSwgZj86IEZvcm1Hcm91cCwgY3R4PzogSUdlbmVyaWNGb3JtQmFzZUNvbXBvbmVudDxURW50aXR5PikgPT4gYW55O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRnVuY3Rpb24gdG8gY29tcGFyZSB0d28gdmFsdWVzLlxyXG4gICAgICogQHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjb21wYXJlV2l0aDogKG8xOiBUUHJvcGVydHksIG8yOiBUUHJvcGVydHkpID0+IGJvb2xlYW4gPSAobzE6IGFueSwgbzI6IGFueSkgPT4gbzEgPT09IG8yO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ1NTIGNsYXNzIGZvciBzdHlsaW5nLlxyXG4gICAgICogQHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjc3NDbGFzcz86IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEluZGljYXRlcyBpZiB0aGUgdmFsdWUgaXMgY3VzdG9tLlxyXG4gICAgICogQHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjdXN0b21WYWx1ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRnVuY3Rpb24gdG8gZmlsdGVyIGRhdGVzLlxyXG4gICAgICogQHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBkYXRlRmlsdGVyOiBEYXRlRmlsdGVyRm48YW55PiA9IChkYXRlOiBhbnkpID0+IHRydWU7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBc3luY2hyb25vdXMgZnVuY3Rpb24gdG8gZmlsdGVyIGRhdGVzLlxyXG4gICAgICogQHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBkYXRlRmlsdGVyQXN5bmM/OiAoZDogRGF0ZSB8IGFueSwgeT86IFRFbnRpdHksIGY/OiBGb3JtR3JvdXAsIGN0eD86IElHZW5lcmljRm9ybUJhc2VDb21wb25lbnQ8VEVudGl0eT4pID0+IE9ic2VydmFibGU8RGF0ZUZpbHRlckZuPGFueT4+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FsbGJhY2sgZnVuY3Rpb24gZm9yIHdoZW4gdGhlIGRhdGUgcGlja2VyIGlzIG9wZW5lZC5cclxuICAgICAqIEBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZGF0ZVBpY2tlck9wZW5lZD86IChkYXRlUGlja2VyOiBNYXREYXRlcGlja2VyPGFueT4sIHk/OiBURW50aXR5LCBmPzogRm9ybUdyb3VwLCBjdHg/OiBJR2VuZXJpY0Zvcm1CYXNlQ29tcG9uZW50PFRFbnRpdHk+KSA9PiBhbnk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFbmRwb2ludCBmb3IgZGF0YSByZXRyaWV2YWwuXHJcbiAgICAgKiBAcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgcHVibGljIGVuZHBvaW50PzogKCh4OiBURW50aXR5LCBmPzogRm9ybUdyb3VwLCBjdHg/OiBJR2VuZXJpY0Zvcm1CYXNlQ29tcG9uZW50PFRFbnRpdHk+KSA9PiBhbnkpIHwgc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRnVuY3Rpb24gdG8gZmlsdGVyIGVudW1zLlxyXG4gICAgICogQHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBlbnVtRmlsdGVyPzogKHk/OiBURW50aXR5LCBmPzogRm9ybUdyb3VwLCBjdHg/OiBJR2VuZXJpY0Zvcm1CYXNlQ29tcG9uZW50PFRFbnRpdHk+KSA9PiBhbnk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUeXBlIG9mIGVudW0uXHJcbiAgICAgKiBAcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgcHVibGljIGVudW1UeXBlPzogYW55O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGlmIGRhdGEgc2hvdWxkIGJlIGZldGNoZWQuXHJcbiAgICAgKiBAcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgcHVibGljIGZldGNoQ29uZGl0aW9uOiAoeDogVEVudGl0eSwgZj86IEZvcm1Hcm91cCwgY3R4PzogSUdlbmVyaWNGb3JtQmFzZUNvbXBvbmVudDxURW50aXR5PikgPT4gYm9vbGVhbiA9ICgpID0+IHRydWU7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBcnJheSBvZiBmaWVsZCBzZXRzLlxyXG4gICAgICogQHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBmaWVsZFNldHM/OiBzdHJpbmdbXTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEFsbG93ZWQgZmlsZSBleHRlbnNpb25zLlxyXG4gICAgICogQHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBmaWxlRXh0ZW5zaW9ucz86IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEZpbGUgcGF0aC5cclxuICAgICAqIEBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZmlsZVBhdGg/OiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGbGV4IGxheW91dCBwcm9wZXJ0eS5cclxuICAgICAqIEBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZmxleD86IG51bWJlcjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEluZGljYXRlcyB3aGV0aGVyIHNlbGVjdGlvbiBpcyBmb3JjZWQuXHJcbiAgICAgKiBAcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgcHVibGljIGZvcmNlU2VsZWN0PzogYm9vbGVhbjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEdyb3VwIGhlYWRlci5cclxuICAgICAqIEBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ3JvdXBIZWFkZXI6IHN0cmluZyA9ICRsb2NhbGl6ZWA6QEBkZXRhaWxzOkRldGFpbHNgO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogR3JvdXAgbmFtZS5cclxuICAgICAqIEBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ3JvdXBOYW1lPzogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGNvbHVtbiBpcyBoaWRkZW4uXHJcbiAgICAgKiBAcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgcHVibGljIGhpZGRlbj86IGJvb2xlYW47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDYWxsYmFjayBmdW5jdGlvbiB0byBoaWRlIHRoZSBmaWVsZC5cclxuICAgICAqIEBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaGlkZT86ICh4OiBURW50aXR5LCBmPzogRm9ybUdyb3VwLCBjdHg/OiBJR2VuZXJpY0Zvcm1CYXNlQ29tcG9uZW50PFRFbnRpdHk+KSA9PiBhbnk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBIaW50IHRleHQgZm9yIHRoZSBmaWVsZC5cclxuICAgICAqIEBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaGludD86IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEluZGV4IG9mIHRoZSBmaWVsZC5cclxuICAgICAqIEBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaW5kZXg/OiBudW1iZXI7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUeXBlIG9mIGlucHV0IChlLmcuLCB0ZXh0LCBudW1iZXIpLlxyXG4gICAgICogQHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBpbnB1dFR5cGU6IHN0cmluZyA9ICd0ZXh0JztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEluZGljYXRlcyBpZiB0aGUgZmlsZSBpcyBwdWJsaWMuXHJcbiAgICAgKiBAcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgcHVibGljIGlzUHVibGljRmlsZT86IGJvb2xlYW47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDYWxsYmFjayBmdW5jdGlvbiBpbnZva2VkIG9uIGl0ZW0gY2hhbmdlLlxyXG4gICAgICogQHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBpdGVtQ2hhbmdlPzogKHg6IFRQcm9wZXJ0eSwgeT86IFRFbnRpdHksIGY/OiBGb3JtR3JvdXAsIGN0eD86IElHZW5lcmljRm9ybUJhc2VDb21wb25lbnQ8VEVudGl0eT4pID0+IGFueTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENhbGxiYWNrIGZ1bmN0aW9uIGludm9rZWQgb24gaXRlbSBzZWxlY3Rpb24uXHJcbiAgICAgKiBAcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgcHVibGljIGl0ZW1TZWxlY3Q/OiAoeDogVFByb3BlcnR5LCB5PzogVEVudGl0eSwgZj86IEZvcm1Hcm91cCwgY3R4PzogSUdlbmVyaWNGb3JtQmFzZUNvbXBvbmVudDxURW50aXR5PikgPT4gYW55O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTGFiZWwgZm9yIHRoZSBmaWVsZC5cclxuICAgICAqIEBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbGFiZWw/OiAoKHg6IFRFbnRpdHksIGY/OiBGb3JtR3JvdXAsIGN0eD86IElHZW5lcmljRm9ybUJhc2VDb21wb25lbnQ8VEVudGl0eT4pID0+IHN0cmluZykgfCBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGdW5jdGlvbiB0byBtYXAgdmFsdWVzLlxyXG4gICAgICogQHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBtYXBwZXI/OiAoeDogYW55W10pID0+IGFueTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIE1heGltdW0gdmFsdWUuXHJcbiAgICAgKiBAcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgcHVibGljIG1heD86IG51bWJlciB8IERhdGU7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNYXhpbXVtIGhlaWdodC5cclxuICAgICAqIEBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbWF4SGVpZ2h0Pzogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWF4aW11bSBsZW5ndGguXHJcbiAgICAgKiBAcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgcHVibGljIG1heExlbmd0aD86IG51bWJlcjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIE1heGltdW0gd2lkdGguXHJcbiAgICAgKiBAcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgcHVibGljIG1heFdpZHRoPzogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWluaW11bSB2YWx1ZS5cclxuICAgICAqIEBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbWluPzogbnVtYmVyIHwgRGF0ZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIE1pbmltdW0gbGVuZ3RoLlxyXG4gICAgICogQHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBtaW5MZW5ndGg/OiBudW1iZXI7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2F0ZXMgaWYgdGhlIGZpZWxkIHN1cHBvcnRzIG11bHRpbGluZSBpbnB1dC5cclxuICAgICAqIEBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbXVsdGlsaW5lPzogYm9vbGVhbjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEluZGljYXRlcyBpZiBtdWx0aXBsZSBzZWxlY3Rpb25zIGFyZSBhbGxvd2VkLlxyXG4gICAgICogQHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBtdWx0aXBsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRmxhZyBpbmRpY2F0aW5nIGlmIG9ubHkgbnVtYmVycyBhcmUgYWxsb3dlZCBpbiB0aGUgaW5wdXQgZmllbGQuXHJcbiAgICAgKiBAcHJvcGVydHkge2Jvb2xlYW59IG51bWJlcnNPbmx5IC0gRmxhZyBpbmRpY2F0aW5nIGlmIG9ubHkgbnVtYmVycyBhcmUgYWxsb3dlZCBpbiB0aGUgaW5wdXQgZmllbGQuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBudW1iZXJzT25seT86IGJvb2xlYW47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgZmlyc3Qgb3B0aW9uIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IHNlbGVjdGVkLlxyXG4gICAgICogQHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzZWxlY3RGaXJzdDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTmFtZSBvZiB0aGUgZmllbGQuXHJcbiAgICAgKiBAcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgcHVibGljIG5hbWU/OiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBPcHRpb25zIGZvciBzZWxlY3Rpb24uXHJcbiAgICAgKiBAcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgcHVibGljIG9wdGlvbnM/OiAoKHg6IFRFbnRpdHksIGY/OiBGb3JtR3JvdXAsIGN0eD86IElHZW5lcmljRm9ybUJhc2VDb21wb25lbnQ8VEVudGl0eT4pID0+IHsgaWQ6IGFueSwgbmFtZTogc3RyaW5nIH1bXSkgfCB7IGlkOiBhbnksIG5hbWU6IHN0cmluZyB9W107XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGbGFnIHRvIGluZGljYXRlIHdoZXRoZXIgYSBkZWZhdWx0IG9wdGlvbiBzaG91bGQgYmUgaW5jbHVkZWQuXHJcbiAgICAgKiBAcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgcHVibGljIGRlZmF1bHRPcHRpb24/OiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRlbXBsYXRlIGZvciBvcHRpb25zLlxyXG4gICAgICogQHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBvcHRpb25UZW1wbGF0ZT86ICh4OiBUUHJvcGVydHksIHk/OiBURW50aXR5LCBmPzogRm9ybUdyb3VwLCBjdHg/OiBJR2VuZXJpY0Zvcm1CYXNlQ29tcG9uZW50PFRFbnRpdHk+KSA9PiBhbnk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUZXh0IHRvIGRpc3BsYXkgaW4gb3B0aW9ucy5cclxuICAgICAqIEBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgb3B0aW9uVGV4dDogc3RyaW5nID0gJ25hbWUnO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsdWUgb2Ygb3B0aW9ucy5cclxuICAgICAqIEBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgb3B0aW9uVmFsdWU6IHN0cmluZyA9ICdpZCc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQYXJhbWV0ZXJzIGZvciBkYXRhIHJldHJpZXZhbC5cclxuICAgICAqIEBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcGFyYW1zPzogKCh4OiBURW50aXR5LCBmPzogRm9ybUdyb3VwLCBjdHg/OiBJR2VuZXJpY0Zvcm1CYXNlQ29tcG9uZW50PFRFbnRpdHk+KSA9PiBhbnkpIHwge307XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZWd1bGFyIGV4cHJlc3Npb24gcGF0dGVybiBmb3IgaW5wdXQgdmFsaWRhdGlvbi5cclxuICAgICAqIEBwcm9wZXJ0eSB7UmVnRXhwfSBwYXR0ZXJuIC0gUmVndWxhciBleHByZXNzaW9uIHBhdHRlcm4gZm9yIGlucHV0IHZhbGlkYXRpb24uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBwYXR0ZXJuPzogUmVnRXhwIHwgc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUHJvamVjdGlvbiBmb3IgZGF0YSByZXRyaWV2YWwuXHJcbiAgICAgKiBAcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgcHVibGljIHByb2plY3Rpb246IHN0cmluZyB8IHN0cmluZ1tdID0gJyc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDYWxsYmFjayBmdW5jdGlvbiB0byBkZXRlcm1pbmUgaWYgdGhlIGZpZWxkIGlzIHJlYWRvbmx5LlxyXG4gICAgICogQHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyByZWFkb25seT86ICh4OiBURW50aXR5LCBmPzogRm9ybUdyb3VwLCBjdHg/OiBJR2VuZXJpY0Zvcm1CYXNlQ29tcG9uZW50PFRFbnRpdHk+KSA9PiBib29sZWFuO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FsbGJhY2sgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGlmIHRoZSBmaWVsZCBpcyByZXF1aXJlZC5cclxuICAgICAqIEBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcmVxdWlyZWQ/OiAoKHg/OiBURW50aXR5LCBmPzogRm9ybUdyb3VwLCBjdHg/OiBJR2VuZXJpY0Zvcm1CYXNlQ29tcG9uZW50PFRFbnRpdHk+KSA9PiBib29sZWFuIHwgYm9vbGVhbik7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgcm93IG51bWJlciBpbmRpY2F0aW5nIHRoZSBwb3NpdGlvbiB3aGVyZSB0aGUgZmllbGQgc2hvdWxkIGJlIGRpc3BsYXllZC5cclxuICAgICAqIEBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcm93OiBudW1iZXIgPSAxO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIG51bWJlciBvZiByb3dzIGZvciBtdWx0aS1saW5lIGlucHV0IGZpZWxkcyAoZS5nLiwgdGV4dCBhcmVhKS5cclxuICAgICAqIEBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcm93cz86IG51bWJlcjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEZpZWxkIHVzZWQgZm9yIHNlYXJjaGluZy5cclxuICAgICAqIEBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2VhcmNoRmllbGQ6IHN0cmluZyA9ICdzZWFyY2gnO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FsbGJhY2sgZnVuY3Rpb24gaW52b2tlZCBvbiBzZWxlY3Rpb24uXHJcbiAgICAgKiBAcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgcHVibGljIHNlbGVjdD86ICh4OiBURW50aXR5LCBmPzogRm9ybUdyb3VwLCBjdHg/OiBJR2VuZXJpY0Zvcm1CYXNlQ29tcG9uZW50PFRFbnRpdHk+KSA9PiBhbnk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBcnJheSBvZiBzdWZmaXggYnV0dG9ucy5cclxuICAgICAqIEBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3VmZml4QnV0dG9uczogU3VmZml4QnV0dG9uPFRQcm9wZXJ0eSwgSUdlbmVyaWNGb3JtQmFzZUNvbXBvbmVudDxURW50aXR5Pj5bXSA9IFtdO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ1NTIGNsYXNzIGZvciB0cmlnZ2Vycy5cclxuICAgICAqIEBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgdHJpZ2dlckNzc0NsYXNzPzogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FsbGJhY2sgZnVuY3Rpb24gdG8gbWFwIHRyaWdnZXIgdmFsdWVzLlxyXG4gICAgICogQHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB0cmlnZ2VyTWFwcGVyPzogKHg6IFRQcm9wZXJ0eSwgeT86IFRFbnRpdHksIGY/OiBGb3JtR3JvdXAsIGN0eD86IElHZW5lcmljRm9ybUJhc2VDb21wb25lbnQ8VEVudGl0eT4pID0+IGFueTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIE1vZGUgb2YgdGhlIHRyaWdnZXIgKGUuZy4sIGNoaXApLlxyXG4gICAgICogQHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB0cmlnZ2VyTW9kZTogJ2NoaXAnID0gJ2NoaXAnO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGVtcGxhdGUgZm9yIHRoZSB0cmlnZ2VyLlxyXG4gICAgICogQHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB0cmlnZ2VyVGVtcGxhdGU/OiAoeDogVFByb3BlcnR5W10gfCBUUHJvcGVydHksIHk/OiBURW50aXR5LCBmPzogRm9ybUdyb3VwLCBjdHg/OiBJR2VuZXJpY0Zvcm1CYXNlQ29tcG9uZW50PFRFbnRpdHk+KSA9PiBhbnk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGdW5jdGlvbiB0byBkZXRlcm1pbmUgdGhlIHR5cGUgb2YgdGhlIGZpZWxkLlxyXG4gICAgICogQHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB0eXBlPzogKCh4OiBURW50aXR5LCBmPzogRm9ybUdyb3VwLCBjdHg/OiBJR2VuZXJpY0Zvcm1CYXNlQ29tcG9uZW50PFRFbnRpdHk+KSA9PiBGb3JtRmllbGRUeXBlKSB8IEZvcm1GaWVsZFR5cGU7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgZmllbGQgaXMgd3JhcHBlZC5cclxuICAgICAqIEBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgd3JhcHBlZDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb25zdHJ1Y3RvciBmb3IgdGhlIEZvcm1GaWVsZERlZmluaXRpb24gY2xhc3MuXHJcbiAgICAgKiBAY29uc3RydWN0b3JcclxuICAgICAqIEBwYXJhbSBpbml0IC0gUGFydGlhbCBpbml0aWFsaXphdGlvbiBkYXRhIGZvciB0aGUgRm9ybUZpZWxkRGVmaW5pdGlvbi5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKGluaXQ/OiBQYXJ0aWFsPEZvcm1GaWVsZERlZmluaXRpb248VEVudGl0eT4+KSB7XHJcbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBpbml0KTtcclxuICAgIH1cclxufSJdfQ==
|
|
361
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1kZWZpbml0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3NyYy9saWIvZm9ybXMvbW9kZWxzL2Zvcm0tZmllbGQtZGVmaW5pdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxNQUFNLE9BQU8sbUJBQW1CO0lBQzVCOzs7T0FHRztJQUNJLG9CQUFvQixHQUFXLEVBQUUsQ0FBQztJQUV6Qzs7O09BR0c7SUFDSSxvQkFBb0IsQ0FBK0Y7SUFFMUg7OztPQUdHO0lBQ0ksZ0JBQWdCLEdBQVcsTUFBTSxDQUFDO0lBRXpDOzs7T0FHRztJQUNJLE1BQU0sQ0FBK0Y7SUFFNUc7OztPQUdHO0lBQ0ksWUFBWSxDQUErRjtJQUVsSDs7O09BR0c7SUFDSSxRQUFRLEdBQVcsTUFBTSxDQUFDO0lBRWpDOzs7T0FHRztJQUNJLFNBQVMsQ0FBYTtJQUU3Qjs7O09BR0c7SUFDSSxLQUFLLENBQWdGO0lBRTVGOzs7T0FHRztJQUNJLFdBQVcsR0FBOEMsQ0FBQyxFQUFPLEVBQUUsRUFBTyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDO0lBRWhHOzs7T0FHRztJQUNJLFFBQVEsQ0FBVTtJQUV6Qjs7O09BR0c7SUFDSSxXQUFXLEdBQVksS0FBSyxDQUFDO0lBRXBDOzs7T0FHRztJQUNJLFVBQVUsR0FBc0IsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQztJQUUzRDs7O09BR0c7SUFDSSxlQUFlLENBQTBIO0lBRWhKOzs7T0FHRztJQUNJLGdCQUFnQixDQUFpSDtJQUV4STs7O09BR0c7SUFDSSxRQUFRLENBQTJGO0lBRTFHOzs7T0FHRztJQUNJLFVBQVUsQ0FBaUY7SUFFbEc7OztPQUdHO0lBQ0ksUUFBUSxDQUFPO0lBRXRCOzs7T0FHRztJQUNJLGNBQWMsR0FBcUYsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO0lBRXJIOzs7T0FHRztJQUNJLFNBQVMsQ0FBWTtJQUU1Qjs7O09BR0c7SUFDSSxjQUFjLENBQVU7SUFFL0I7OztPQUdHO0lBQ0ksUUFBUSxDQUFVO0lBRXpCOzs7T0FHRztJQUNJLElBQUksQ0FBVTtJQUVyQjs7O09BR0c7SUFDSSxXQUFXLENBQVc7SUFFN0I7OztPQUdHO0lBQ0ksV0FBVyxHQUFXLFNBQVMsQ0FBQSxvQkFBb0IsQ0FBQztJQUUzRDs7O09BR0c7SUFDSSxTQUFTLENBQVU7SUFFMUI7OztPQUdHO0lBQ0ksTUFBTSxDQUFXO0lBRXhCOzs7T0FHRztJQUNJLElBQUksQ0FBZ0Y7SUFFM0Y7OztPQUdHO0lBQ0ksSUFBSSxDQUFVO0lBRXJCOzs7T0FHRztJQUNJLEtBQUssQ0FBVTtJQUV0Qjs7O09BR0c7SUFDSSxTQUFTLEdBQVcsTUFBTSxDQUFDO0lBRWxDOzs7T0FHRztJQUNJLFlBQVksQ0FBVztJQUU5Qjs7O09BR0c7SUFDSSxVQUFVLENBQStGO0lBRWhIOzs7T0FHRztJQUNJLFVBQVUsQ0FBK0Y7SUFFaEg7OztPQUdHO0lBQ0ksS0FBSyxDQUE4RjtJQUUxRzs7O09BR0c7SUFDSSxNQUFNLENBQXFCO0lBRWxDOzs7T0FHRztJQUNJLEdBQUcsQ0FBaUI7SUFFM0I7OztPQUdHO0lBQ0ksU0FBUyxDQUFVO0lBRTFCOzs7T0FHRztJQUNJLFNBQVMsQ0FBVTtJQUUxQjs7O09BR0c7SUFDSSxRQUFRLENBQVU7SUFFekI7OztPQUdHO0lBQ0ksR0FBRyxDQUFpQjtJQUUzQjs7O09BR0c7SUFDSSxTQUFTLENBQVU7SUFFMUI7OztPQUdHO0lBQ0ksU0FBUyxDQUFXO0lBRTNCOzs7T0FHRztJQUNJLFFBQVEsR0FBWSxLQUFLLENBQUM7SUFFakM7OztPQUdHO0lBQ0ksV0FBVyxDQUFXO0lBRTdCOzs7T0FHRztJQUNJLFdBQVcsR0FBWSxLQUFLLENBQUM7SUFFcEM7OztPQUdHO0lBQ0ksSUFBSSxDQUFVO0lBRXJCOzs7T0FHRztJQUNJLE9BQU8sQ0FBd0k7SUFFdEo7OztPQUdHO0lBQ0ksYUFBYSxHQUFhLElBQUksQ0FBQztJQUV0Qzs7O09BR0c7SUFDSSxjQUFjLENBQStGO0lBRXBIOzs7T0FHRztJQUNJLGtCQUFrQixHQUFXLE1BQU0sQ0FBQztJQUUzQzs7O09BR0c7SUFDSSxtQkFBbUIsR0FBVyxJQUFJLENBQUM7SUFFMUM7OztPQUdHO0lBQ0kscUJBQXFCLENBQVU7SUFFdEM7OztPQUdHO0lBQ0kscUJBQXFCLENBQVU7SUFFdEM7OztPQUdHO0lBQ0ksaUJBQWlCLEdBQVksMkJBQTJCLENBQUM7SUFFaEU7OztPQUdHO0lBQ0ksTUFBTSxDQUF1RjtJQUVwRzs7O09BR0c7SUFDSSxPQUFPLENBQW1CO0lBRWpDOzs7T0FHRztJQUNJLFVBQVUsR0FBc0IsRUFBRSxDQUFDO0lBRTFDOzs7T0FHRztJQUNJLFFBQVEsQ0FBb0Y7SUFFbkc7OztPQUdHO0lBQ0ksUUFBUSxDQUFpRztJQUVoSDs7O09BR0c7SUFDSSxHQUFHLEdBQVcsQ0FBQyxDQUFDO0lBRXZCOzs7T0FHRztJQUNJLElBQUksQ0FBVTtJQUVyQjs7O09BR0c7SUFDSSxXQUFXLEdBQVcsUUFBUSxDQUFDO0lBRXRDOzs7T0FHRztJQUNJLE1BQU0sQ0FBZ0Y7SUFFN0Y7OztPQUdHO0lBQ0ksYUFBYSxHQUFrRSxFQUFFLENBQUM7SUFFekY7OztPQUdHO0lBQ0ksZUFBZSxDQUFVO0lBRWhDOzs7T0FHRztJQUNJLGFBQWEsQ0FBK0Y7SUFFbkg7OztPQUdHO0lBQ0ksV0FBVyxHQUFXLE1BQU0sQ0FBQztJQUVwQzs7O09BR0c7SUFDSSxlQUFlLENBQTZHO0lBRW5JOzs7T0FHRztJQUNJLElBQUksQ0FBNEc7SUFFdkg7OztPQUdHO0lBQ0ksT0FBTyxHQUFZLElBQUksQ0FBQztJQUUvQjs7OztPQUlHO0lBQ0gsWUFBbUIsSUFBNEM7UUFDM0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHlwZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBEYXRlRmlsdGVyRm4sIE1hdERhdGVwaWNrZXIgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlclwiO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgSUdlbmVyaWNGb3JtQmFzZUNvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9iYXNlL2ludGVyZmFjZXMvaWdlbmVyaWMtZm9ybS1iYXNlXCI7XHJcbmltcG9ydCB7IFN1ZmZpeEJ1dHRvbiB9IGZyb20gXCIuLi8uLi9jb21tb24vbW9kZWxzL3N1ZmZpeC1idXR0b25cIjtcclxuaW1wb3J0IHsgRm9ybUZpZWxkVHlwZSB9IGZyb20gXCIuLi9lbnVtcy9mb3JtLWZpZWxkLXR5cGVcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBGb3JtRmllbGREZWZpbml0aW9uPFRFbnRpdHkgPSBhbnksIFRQcm9wZXJ0eSA9IGFueT4ge1xyXG4gICAgLyoqXHJcbiAgICAgKiBDU1MgY2xhc3MgZm9yIGF1dG9jb21wbGV0ZSBmdW5jdGlvbmFsaXR5LlxyXG4gICAgICogQHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhdXRvY29tcGxldGVDc3NDbGFzczogc3RyaW5nID0gJyc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUZW1wbGF0ZSBmb3IgYXV0b2NvbXBsZXRlIGZ1bmN0aW9uYWxpdHkuXHJcbiAgICAgKiBAcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgcHVibGljIGF1dG9jb21wbGV0ZVRlbXBsYXRlPzogKHg6IFRQcm9wZXJ0eSwgeT86IFRFbnRpdHksIGY/OiBGb3JtR3JvdXAsIGN0eD86IElHZW5lcmljRm9ybUJhc2VDb21wb25lbnQ8VEVudGl0eT4pID0+IGFueTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRleHQgdG8gZGlzcGxheSBpbiBhdXRvY29tcGxldGUuXHJcbiAgICAgKiBAcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgcHVibGljIGF1dG9jb21wbGV0ZVRleHQ6IHN0cmluZyA9ICduYW1lJztcclxuXHJcbiAgICAvKipcclxuICAgICAqIENhbGxiYWNrIGZ1bmN0aW9uIGludm9rZWQgb24gY2hhbmdlLlxyXG4gICAgICogQHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjaGFuZ2U/OiAoeDogVFByb3BlcnR5LCB5PzogVEVudGl0eSwgZj86IEZvcm1Hcm91cCwgY3R4PzogSUdlbmVyaWNGb3JtQmFzZUNvbXBvbmVudDxURW50aXR5PikgPT4gYW55O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGVtcGxhdGUgZm9yIGNoaXAgZnVuY3Rpb25hbGl0eS5cclxuICAgICAqIEBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgY2hpcFRlbXBsYXRlPzogKHg6IFRQcm9wZXJ0eSwgeT86IFRFbnRpdHksIGY/OiBGb3JtR3JvdXAsIGN0eD86IElHZW5lcmljRm9ybUJhc2VDb21wb25lbnQ8VEVudGl0eT4pID0+IGFueTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRleHQgdG8gZGlzcGxheSBpbiBjaGlwLlxyXG4gICAgICogQHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjaGlwVGV4dDogc3RyaW5nID0gJ25hbWUnO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVHlwZSBvZiBjbGFzcyB0byBiZSBpbnN0YW50aWF0ZWQuXHJcbiAgICAgKiBAcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgcHVibGljIGNsYXNzVHlwZT86IFR5cGU8YW55PjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENhbGxiYWNrIGZ1bmN0aW9uIGludm9rZWQgb24gY2xlYXJpbmcuXHJcbiAgICAgKiBAcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgcHVibGljIGNsZWFyPzogKHg6IFRFbnRpdHksIGY/OiBGb3JtR3JvdXAsIGN0eD86IElHZW5lcmljRm9ybUJhc2VDb21wb25lbnQ8VEVudGl0eT4pID0+IGFueTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEZ1bmN0aW9uIHRvIGNvbXBhcmUgdHdvIHZhbHVlcy5cclxuICAgICAqIEBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgY29tcGFyZVdpdGg6IChvMTogVFByb3BlcnR5LCBvMjogVFByb3BlcnR5KSA9PiBib29sZWFuID0gKG8xOiBhbnksIG8yOiBhbnkpID0+IG8xID09PSBvMjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENTUyBjbGFzcyBmb3Igc3R5bGluZy5cclxuICAgICAqIEBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgY3NzQ2xhc3M/OiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2F0ZXMgaWYgdGhlIHZhbHVlIGlzIGN1c3RvbS5cclxuICAgICAqIEBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgY3VzdG9tVmFsdWU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEZ1bmN0aW9uIHRvIGZpbHRlciBkYXRlcy5cclxuICAgICAqIEBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZGF0ZUZpbHRlcjogRGF0ZUZpbHRlckZuPGFueT4gPSAoZGF0ZTogYW55KSA9PiB0cnVlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQXN5bmNocm9ub3VzIGZ1bmN0aW9uIHRvIGZpbHRlciBkYXRlcy5cclxuICAgICAqIEBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZGF0ZUZpbHRlckFzeW5jPzogKGQ6IERhdGUgfCBhbnksIHk/OiBURW50aXR5LCBmPzogRm9ybUdyb3VwLCBjdHg/OiBJR2VuZXJpY0Zvcm1CYXNlQ29tcG9uZW50PFRFbnRpdHk+KSA9PiBPYnNlcnZhYmxlPERhdGVGaWx0ZXJGbjxhbnk+PjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENhbGxiYWNrIGZ1bmN0aW9uIGZvciB3aGVuIHRoZSBkYXRlIHBpY2tlciBpcyBvcGVuZWQuXHJcbiAgICAgKiBAcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgcHVibGljIGRhdGVQaWNrZXJPcGVuZWQ/OiAoZGF0ZVBpY2tlcjogTWF0RGF0ZXBpY2tlcjxhbnk+LCB5PzogVEVudGl0eSwgZj86IEZvcm1Hcm91cCwgY3R4PzogSUdlbmVyaWNGb3JtQmFzZUNvbXBvbmVudDxURW50aXR5PikgPT4gYW55O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRW5kcG9pbnQgZm9yIGRhdGEgcmV0cmlldmFsLlxyXG4gICAgICogQHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBlbmRwb2ludD86ICgoeDogVEVudGl0eSwgZj86IEZvcm1Hcm91cCwgY3R4PzogSUdlbmVyaWNGb3JtQmFzZUNvbXBvbmVudDxURW50aXR5PikgPT4gYW55KSB8IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEZ1bmN0aW9uIHRvIGZpbHRlciBlbnVtcy5cclxuICAgICAqIEBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZW51bUZpbHRlcj86ICh5PzogVEVudGl0eSwgZj86IEZvcm1Hcm91cCwgY3R4PzogSUdlbmVyaWNGb3JtQmFzZUNvbXBvbmVudDxURW50aXR5PikgPT4gYW55O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVHlwZSBvZiBlbnVtLlxyXG4gICAgICogQHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBlbnVtVHlwZT86IGFueTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEZ1bmN0aW9uIHRvIGRldGVybWluZSBpZiBkYXRhIHNob3VsZCBiZSBmZXRjaGVkLlxyXG4gICAgICogQHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBmZXRjaENvbmRpdGlvbjogKHg6IFRFbnRpdHksIGY/OiBGb3JtR3JvdXAsIGN0eD86IElHZW5lcmljRm9ybUJhc2VDb21wb25lbnQ8VEVudGl0eT4pID0+IGJvb2xlYW4gPSAoKSA9PiB0cnVlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQXJyYXkgb2YgZmllbGQgc2V0cy5cclxuICAgICAqIEBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZmllbGRTZXRzPzogc3RyaW5nW107XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBbGxvd2VkIGZpbGUgZXh0ZW5zaW9ucy5cclxuICAgICAqIEBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZmlsZUV4dGVuc2lvbnM/OiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGaWxlIHBhdGguXHJcbiAgICAgKiBAcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgcHVibGljIGZpbGVQYXRoPzogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRmxleCBsYXlvdXQgcHJvcGVydHkuXHJcbiAgICAgKiBAcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgcHVibGljIGZsZXg/OiBudW1iZXI7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2F0ZXMgd2hldGhlciBzZWxlY3Rpb24gaXMgZm9yY2VkLlxyXG4gICAgICogQHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBmb3JjZVNlbGVjdD86IGJvb2xlYW47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHcm91cCBoZWFkZXIuXHJcbiAgICAgKiBAcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdyb3VwSGVhZGVyOiBzdHJpbmcgPSAkbG9jYWxpemVgOkBAZGV0YWlsczpEZXRhaWxzYDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEdyb3VwIG5hbWUuXHJcbiAgICAgKiBAcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdyb3VwTmFtZT86IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBjb2x1bW4gaXMgaGlkZGVuLlxyXG4gICAgICogQHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBoaWRkZW4/OiBib29sZWFuO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FsbGJhY2sgZnVuY3Rpb24gdG8gaGlkZSB0aGUgZmllbGQuXHJcbiAgICAgKiBAcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgcHVibGljIGhpZGU/OiAoeDogVEVudGl0eSwgZj86IEZvcm1Hcm91cCwgY3R4PzogSUdlbmVyaWNGb3JtQmFzZUNvbXBvbmVudDxURW50aXR5PikgPT4gYW55O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSGludCB0ZXh0IGZvciB0aGUgZmllbGQuXHJcbiAgICAgKiBAcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgcHVibGljIGhpbnQ/OiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRleCBvZiB0aGUgZmllbGQuXHJcbiAgICAgKiBAcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgcHVibGljIGluZGV4PzogbnVtYmVyO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVHlwZSBvZiBpbnB1dCAoZS5nLiwgdGV4dCwgbnVtYmVyKS5cclxuICAgICAqIEBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaW5wdXRUeXBlOiBzdHJpbmcgPSAndGV4dCc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2F0ZXMgaWYgdGhlIGZpbGUgaXMgcHVibGljLlxyXG4gICAgICogQHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBpc1B1YmxpY0ZpbGU/OiBib29sZWFuO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FsbGJhY2sgZnVuY3Rpb24gaW52b2tlZCBvbiBpdGVtIGNoYW5nZS5cclxuICAgICAqIEBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaXRlbUNoYW5nZT86ICh4OiBUUHJvcGVydHksIHk/OiBURW50aXR5LCBmPzogRm9ybUdyb3VwLCBjdHg/OiBJR2VuZXJpY0Zvcm1CYXNlQ29tcG9uZW50PFRFbnRpdHk+KSA9PiBhbnk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDYWxsYmFjayBmdW5jdGlvbiBpbnZva2VkIG9uIGl0ZW0gc2VsZWN0aW9uLlxyXG4gICAgICogQHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBpdGVtU2VsZWN0PzogKHg6IFRQcm9wZXJ0eSwgeT86IFRFbnRpdHksIGY/OiBGb3JtR3JvdXAsIGN0eD86IElHZW5lcmljRm9ybUJhc2VDb21wb25lbnQ8VEVudGl0eT4pID0+IGFueTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIExhYmVsIGZvciB0aGUgZmllbGQuXHJcbiAgICAgKiBAcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgcHVibGljIGxhYmVsPzogKCh4OiBURW50aXR5LCBmPzogRm9ybUdyb3VwLCBjdHg/OiBJR2VuZXJpY0Zvcm1CYXNlQ29tcG9uZW50PFRFbnRpdHk+KSA9PiBzdHJpbmcpIHwgc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRnVuY3Rpb24gdG8gbWFwIHZhbHVlcy5cclxuICAgICAqIEBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbWFwcGVyPzogKHg6IGFueVtdKSA9PiBhbnk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNYXhpbXVtIHZhbHVlLlxyXG4gICAgICogQHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBtYXg/OiBudW1iZXIgfCBEYXRlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWF4aW11bSBoZWlnaHQuXHJcbiAgICAgKiBAcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgcHVibGljIG1heEhlaWdodD86IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIE1heGltdW0gbGVuZ3RoLlxyXG4gICAgICogQHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBtYXhMZW5ndGg/OiBudW1iZXI7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNYXhpbXVtIHdpZHRoLlxyXG4gICAgICogQHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBtYXhXaWR0aD86IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIE1pbmltdW0gdmFsdWUuXHJcbiAgICAgKiBAcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgcHVibGljIG1pbj86IG51bWJlciB8IERhdGU7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNaW5pbXVtIGxlbmd0aC5cclxuICAgICAqIEBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbWluTGVuZ3RoPzogbnVtYmVyO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5kaWNhdGVzIGlmIHRoZSBmaWVsZCBzdXBwb3J0cyBtdWx0aWxpbmUgaW5wdXQuXHJcbiAgICAgKiBAcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgcHVibGljIG11bHRpbGluZT86IGJvb2xlYW47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2F0ZXMgaWYgbXVsdGlwbGUgc2VsZWN0aW9ucyBhcmUgYWxsb3dlZC5cclxuICAgICAqIEBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbXVsdGlwbGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEZsYWcgaW5kaWNhdGluZyBpZiBvbmx5IG51bWJlcnMgYXJlIGFsbG93ZWQgaW4gdGhlIGlucHV0IGZpZWxkLlxyXG4gICAgICogQHByb3BlcnR5IHtib29sZWFufSBudW1iZXJzT25seSAtIEZsYWcgaW5kaWNhdGluZyBpZiBvbmx5IG51bWJlcnMgYXJlIGFsbG93ZWQgaW4gdGhlIGlucHV0IGZpZWxkLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbnVtYmVyc09ubHk/OiBib29sZWFuO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGZpcnN0IG9wdGlvbiBzaG91bGQgYmUgYXV0b21hdGljYWxseSBzZWxlY3RlZC5cclxuICAgICAqIEBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2VsZWN0Rmlyc3Q6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIE5hbWUgb2YgdGhlIGZpZWxkLlxyXG4gICAgICogQHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBuYW1lPzogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogT3B0aW9ucyBmb3Igc2VsZWN0aW9uLlxyXG4gICAgICogQHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBvcHRpb25zPzogKCh4OiBURW50aXR5LCBmPzogRm9ybUdyb3VwLCBjdHg/OiBJR2VuZXJpY0Zvcm1CYXNlQ29tcG9uZW50PFRFbnRpdHk+KSA9PiB7IGlkOiBhbnksIG5hbWU6IHN0cmluZyB9W10pIHwgeyBpZDogYW55LCBuYW1lOiBzdHJpbmcgfVtdO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRmxhZyB0byBpbmRpY2F0ZSB3aGV0aGVyIGEgZGVmYXVsdCBvcHRpb24gc2hvdWxkIGJlIGluY2x1ZGVkLlxyXG4gICAgICogQHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBkZWZhdWx0T3B0aW9uPzogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUZW1wbGF0ZSBmb3Igb3B0aW9ucy5cclxuICAgICAqIEBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgb3B0aW9uVGVtcGxhdGU/OiAoeDogVFByb3BlcnR5LCB5PzogVEVudGl0eSwgZj86IEZvcm1Hcm91cCwgY3R4PzogSUdlbmVyaWNGb3JtQmFzZUNvbXBvbmVudDxURW50aXR5PikgPT4gYW55O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIHByb3BlcnR5IG5hbWUgaW4gdGhlIG9wdGlvbiBvYmplY3QgZm9yIHRoZSB0ZXh0IHRvIGRpc3BsYXkuXHJcbiAgICAgKiBUaGlzIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHdoaWNoIHByb3BlcnR5IG9mIHRoZSBvcHRpb24gb2JqZWN0IHRvIHNob3cgYXMgdGhlIG9wdGlvbidzIHRleHQuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBvcHRpb25UZXh0UHJvcGVydHk6IHN0cmluZyA9ICduYW1lJztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBwcm9wZXJ0eSBuYW1lIGluIHRoZSBvcHRpb24gb2JqZWN0IGZvciB0aGUgdmFsdWUgb2YgdGhlIG9wdGlvbnMuXHJcbiAgICAgKiBUaGlzIGlzIHVzZWQgdG8gaWRlbnRpZnkgdGhlIHVuaXF1ZSB2YWx1ZSBmb3IgZWFjaCBvcHRpb24uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBvcHRpb25WYWx1ZVByb3BlcnR5OiBzdHJpbmcgPSAnaWQnO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIHByb3BlcnR5IG5hbWUgaW4gdGhlIG9wdGlvbiBvYmplY3QgZm9yIHRoZSBNYXRlcmlhbCBpY29uLlxyXG4gICAgICogVGhpcyBjYW4gYmUgdXNlZCB0byBkaXNwbGF5IGEgTWF0ZXJpYWwgaWNvbiBpbiB0aGUgb3B0aW9ucyBsaXN0LlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgb3B0aW9uTWF0SWNvblByb3BlcnR5Pzogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIHByb3BlcnR5IG5hbWUgaW4gdGhlIG9wdGlvbiBvYmplY3QgZm9yIHRoZSBTVkcgaWNvbi5cclxuICAgICAqIFRoaXMgY2FuIGJlIHVzZWQgdG8gZGlzcGxheSBhbiBTVkcgaWNvbiBpbiB0aGUgb3B0aW9ucyBsaXN0LlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgb3B0aW9uU3ZnSWNvblByb3BlcnR5Pzogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIGZvbnQgc2V0IHRvIGJlIHVzZWQgZm9yIHRoZSBpY29ucyBpbiB0aGUgb3B0aW9ucy5cclxuICAgICAqIFRoaXMgc3BlY2lmaWVzIGEgY3VzdG9tIGZvbnQgc2V0IGZvciB0aGUgaWNvbnMgZGlzcGxheWVkIGluIHRoZSBvcHRpb25zIGxpc3QuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBvcHRpb25JY29uRm9udFNldD86IHN0cmluZyA9ICdtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkJztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFBhcmFtZXRlcnMgZm9yIGRhdGEgcmV0cmlldmFsLlxyXG4gICAgICogQHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBwYXJhbXM/OiAoKHg6IFRFbnRpdHksIGY/OiBGb3JtR3JvdXAsIGN0eD86IElHZW5lcmljRm9ybUJhc2VDb21wb25lbnQ8VEVudGl0eT4pID0+IGFueSkgfCB7fTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlZ3VsYXIgZXhwcmVzc2lvbiBwYXR0ZXJuIGZvciBpbnB1dCB2YWxpZGF0aW9uLlxyXG4gICAgICogQHByb3BlcnR5IHtSZWdFeHB9IHBhdHRlcm4gLSBSZWd1bGFyIGV4cHJlc3Npb24gcGF0dGVybiBmb3IgaW5wdXQgdmFsaWRhdGlvbi5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHBhdHRlcm4/OiBSZWdFeHAgfCBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcm9qZWN0aW9uIGZvciBkYXRhIHJldHJpZXZhbC5cclxuICAgICAqIEBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcHJvamVjdGlvbjogc3RyaW5nIHwgc3RyaW5nW10gPSAnJztcclxuXHJcbiAgICAvKipcclxuICAgICAqIENhbGxiYWNrIGZ1bmN0aW9uIHRvIGRldGVybWluZSBpZiB0aGUgZmllbGQgaXMgcmVhZG9ubHkuXHJcbiAgICAgKiBAcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgcHVibGljIHJlYWRvbmx5PzogKHg6IFRFbnRpdHksIGY/OiBGb3JtR3JvdXAsIGN0eD86IElHZW5lcmljRm9ybUJhc2VDb21wb25lbnQ8VEVudGl0eT4pID0+IGJvb2xlYW47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDYWxsYmFjayBmdW5jdGlvbiB0byBkZXRlcm1pbmUgaWYgdGhlIGZpZWxkIGlzIHJlcXVpcmVkLlxyXG4gICAgICogQHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyByZXF1aXJlZD86ICgoeD86IFRFbnRpdHksIGY/OiBGb3JtR3JvdXAsIGN0eD86IElHZW5lcmljRm9ybUJhc2VDb21wb25lbnQ8VEVudGl0eT4pID0+IGJvb2xlYW4gfCBib29sZWFuKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSByb3cgbnVtYmVyIGluZGljYXRpbmcgdGhlIHBvc2l0aW9uIHdoZXJlIHRoZSBmaWVsZCBzaG91bGQgYmUgZGlzcGxheWVkLlxyXG4gICAgICogQHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyByb3c6IG51bWJlciA9IDE7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgbnVtYmVyIG9mIHJvd3MgZm9yIG11bHRpLWxpbmUgaW5wdXQgZmllbGRzIChlLmcuLCB0ZXh0IGFyZWEpLlxyXG4gICAgICogQHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyByb3dzPzogbnVtYmVyO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRmllbGQgdXNlZCBmb3Igc2VhcmNoaW5nLlxyXG4gICAgICogQHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzZWFyY2hGaWVsZDogc3RyaW5nID0gJ3NlYXJjaCc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDYWxsYmFjayBmdW5jdGlvbiBpbnZva2VkIG9uIHNlbGVjdGlvbi5cclxuICAgICAqIEBwcm9wZXJ0eVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2VsZWN0PzogKHg6IFRFbnRpdHksIGY/OiBGb3JtR3JvdXAsIGN0eD86IElHZW5lcmljRm9ybUJhc2VDb21wb25lbnQ8VEVudGl0eT4pID0+IGFueTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEFycmF5IG9mIHN1ZmZpeCBidXR0b25zLlxyXG4gICAgICogQHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdWZmaXhCdXR0b25zOiBTdWZmaXhCdXR0b248VFByb3BlcnR5LCBJR2VuZXJpY0Zvcm1CYXNlQ29tcG9uZW50PFRFbnRpdHk+PltdID0gW107XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDU1MgY2xhc3MgZm9yIHRyaWdnZXJzLlxyXG4gICAgICogQHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB0cmlnZ2VyQ3NzQ2xhc3M/OiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDYWxsYmFjayBmdW5jdGlvbiB0byBtYXAgdHJpZ2dlciB2YWx1ZXMuXHJcbiAgICAgKiBAcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgcHVibGljIHRyaWdnZXJNYXBwZXI/OiAoeDogVFByb3BlcnR5LCB5PzogVEVudGl0eSwgZj86IEZvcm1Hcm91cCwgY3R4PzogSUdlbmVyaWNGb3JtQmFzZUNvbXBvbmVudDxURW50aXR5PikgPT4gYW55O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTW9kZSBvZiB0aGUgdHJpZ2dlciAoZS5nLiwgY2hpcCkuXHJcbiAgICAgKiBAcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgcHVibGljIHRyaWdnZXJNb2RlOiAnY2hpcCcgPSAnY2hpcCc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUZW1wbGF0ZSBmb3IgdGhlIHRyaWdnZXIuXHJcbiAgICAgKiBAcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgcHVibGljIHRyaWdnZXJUZW1wbGF0ZT86ICh4OiBUUHJvcGVydHlbXSB8IFRQcm9wZXJ0eSwgeT86IFRFbnRpdHksIGY/OiBGb3JtR3JvdXAsIGN0eD86IElHZW5lcmljRm9ybUJhc2VDb21wb25lbnQ8VEVudGl0eT4pID0+IGFueTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEZ1bmN0aW9uIHRvIGRldGVybWluZSB0aGUgdHlwZSBvZiB0aGUgZmllbGQuXHJcbiAgICAgKiBAcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgcHVibGljIHR5cGU/OiAoKHg6IFRFbnRpdHksIGY/OiBGb3JtR3JvdXAsIGN0eD86IElHZW5lcmljRm9ybUJhc2VDb21wb25lbnQ8VEVudGl0eT4pID0+IEZvcm1GaWVsZFR5cGUpIHwgRm9ybUZpZWxkVHlwZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBmaWVsZCBpcyB3cmFwcGVkLlxyXG4gICAgICogQHByb3BlcnR5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB3cmFwcGVkOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENvbnN0cnVjdG9yIGZvciB0aGUgRm9ybUZpZWxkRGVmaW5pdGlvbiBjbGFzcy5cclxuICAgICAqIEBjb25zdHJ1Y3RvclxyXG4gICAgICogQHBhcmFtIGluaXQgLSBQYXJ0aWFsIGluaXRpYWxpemF0aW9uIGRhdGEgZm9yIHRoZSBGb3JtRmllbGREZWZpbml0aW9uLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgY29uc3RydWN0b3IoaW5pdD86IFBhcnRpYWw8Rm9ybUZpZWxkRGVmaW5pdGlvbjxURW50aXR5Pj4pIHtcclxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGluaXQpO1xyXG4gICAgfVxyXG59Il19
|