@wemake4u/form-player-se 1.0.46 → 1.0.48
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/THIRD_PARTY_LICENSES.txt +6 -0
- package/esm2022/lib/builtIn/function.json +16 -0
- package/esm2022/lib/components/actionsCellRenderer/actionsCellRenderer.component.mjs +18 -14
- package/esm2022/lib/components/badge/badge.component.mjs +16 -0
- package/esm2022/lib/components/hostCellRenderer/hostCellRenderer.component.mjs +10 -8
- package/esm2022/lib/controls/factory.mjs +7 -1
- package/esm2022/lib/controls/navigator.mjs +4 -0
- package/esm2022/lib/controls/treerlist.mjs +4 -0
- package/esm2022/lib/dialog/dialog.component.mjs +10 -8
- package/esm2022/lib/directives/collapse.directive.mjs +3 -3
- package/esm2022/lib/directives/date.directive.mjs +139 -44
- package/esm2022/lib/directives/dialog.directive.mjs +7 -1
- package/esm2022/lib/directives/dropdown.directive.mjs +13 -8
- package/esm2022/lib/directives/filepicker.directive.mjs +34 -0
- package/esm2022/lib/directives/navigator.directive.mjs +76 -0
- package/esm2022/lib/directives/repeat.directive.mjs +8 -7
- package/esm2022/lib/directives/tab.badge.directive.mjs +95 -0
- package/esm2022/lib/directives/tabitem.directive.mjs +7 -4
- package/esm2022/lib/directives/treelist.directive.mjs +98 -0
- package/esm2022/lib/dynamic-fields/dynamic-fields.component.mjs +130 -111
- package/esm2022/lib/dynamic-form/dynamic-form.component.mjs +11 -8
- package/esm2022/lib/pipes/times.mjs +14 -0
- package/esm2022/lib/services/builder.service.mjs +43 -89
- package/esm2022/lib/services/compute.service.mjs +7 -7
- package/esm2022/lib/services/dialog.service.mjs +35 -4
- package/esm2022/lib/services/disable.service.mjs +29 -10
- package/esm2022/lib/services/event.service.mjs +14 -12
- package/esm2022/lib/services/form.service.mjs +32 -46
- package/esm2022/lib/services/function.service.mjs +19 -8
- package/esm2022/lib/services/grid.service.mjs +20 -14
- package/esm2022/lib/services/lifetime.service.mjs +36 -0
- package/esm2022/lib/services/programmability.service.mjs +22 -17
- package/esm2022/lib/services/status.service.mjs +88 -25
- package/esm2022/lib/services/validation.service.mjs +7 -7
- package/esm2022/lib/utils/FormArrayEx.mjs +63 -0
- package/esm2022/lib/utils/flatten.mjs +44 -0
- package/esm2022/lib/utils/window.mjs +3 -2
- package/fesm2022/wemake4u-form-player-se.mjs +1124 -438
- package/fesm2022/wemake4u-form-player-se.mjs.map +1 -1
- package/lib/components/badge/badge.component.d.ts +13 -0
- package/lib/controls/navigator.d.ts +3 -0
- package/lib/controls/treerlist.d.ts +3 -0
- package/lib/dialog/dialog.component.d.ts +2 -2
- package/lib/directives/collapse.directive.d.ts +3 -2
- package/lib/directives/date.directive.d.ts +15 -4
- package/lib/directives/dropdown.directive.d.ts +2 -2
- package/lib/directives/filepicker.directive.d.ts +11 -0
- package/lib/directives/navigator.directive.d.ts +22 -0
- package/lib/directives/tab.badge.directive.d.ts +28 -0
- package/lib/directives/tabitem.directive.d.ts +2 -1
- package/lib/directives/treelist.directive.d.ts +23 -0
- package/lib/dynamic-fields/dynamic-fields.component.d.ts +24 -10
- package/lib/dynamic-form/dynamic-form.component.d.ts +1 -1
- package/lib/pipes/times.d.ts +7 -0
- package/lib/services/builder.service.d.ts +6 -10
- package/lib/services/compute.service.d.ts +2 -1
- package/lib/services/dialog.service.d.ts +10 -3
- package/lib/services/disable.service.d.ts +5 -1
- package/lib/services/event.service.d.ts +1 -1
- package/lib/services/form.service.d.ts +5 -2
- package/lib/services/function.service.d.ts +3 -1
- package/lib/services/grid.service.d.ts +1 -1
- package/lib/services/lifetime.service.d.ts +12 -0
- package/lib/services/programmability.service.d.ts +4 -1
- package/lib/services/status.service.d.ts +18 -4
- package/lib/services/validation.service.d.ts +2 -1
- package/lib/utils/FormArrayEx.d.ts +26 -0
- package/lib/utils/flatten.d.ts +13 -0
- package/package.json +3 -2
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Pipe } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class TimesPipe {
|
|
4
|
+
transform(value) {
|
|
5
|
+
return Array.from({ length: value }, (_, i) => i);
|
|
6
|
+
}
|
|
7
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TimesPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
8
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: TimesPipe, isStandalone: true, name: "times" });
|
|
9
|
+
}
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TimesPipe, decorators: [{
|
|
11
|
+
type: Pipe,
|
|
12
|
+
args: [{ name: 'times', standalone: true }]
|
|
13
|
+
}] });
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2lyaW8vc3JjL2xpYi9waXBlcy90aW1lcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7QUFHcEQsTUFBTSxPQUFPLFNBQVM7SUFDcEIsU0FBUyxDQUFDLEtBQWE7UUFDckIsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEQsQ0FBQzt3R0FIVSxTQUFTO3NHQUFULFNBQVM7OzRGQUFULFNBQVM7a0JBRHJCLElBQUk7bUJBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbiBcclxuQFBpcGUoeyBuYW1lOiAndGltZXMnLCBzdGFuZGFsb25lOiB0cnVlIH0pXHJcbmV4cG9ydCBjbGFzcyBUaW1lc1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuICB0cmFuc2Zvcm0odmFsdWU6IG51bWJlcik6IG51bWJlcltdIHtcclxuICAgIHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoOiB2YWx1ZSB9LCAoXywgaSkgPT4gaSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
|
-
import {
|
|
2
|
+
import { FormControl, FormGroup } from '@angular/forms';
|
|
3
3
|
import { FormGroupEx } from '../utils/FormGroupEx';
|
|
4
|
+
import { FormArrayEx } from '../utils/FormArrayEx';
|
|
5
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
4
6
|
import * as i0 from "@angular/core";
|
|
5
7
|
import * as i1 from "./validation.service";
|
|
6
8
|
import * as i2 from "./disable.service";
|
|
@@ -8,6 +10,7 @@ import * as i3 from "./compute.service";
|
|
|
8
10
|
import * as i4 from "./status.service";
|
|
9
11
|
import * as i5 from "./event.service";
|
|
10
12
|
import * as i6 from "./metadata.service";
|
|
13
|
+
import * as i7 from "./lifetime.service";
|
|
11
14
|
export class FormBuilderService {
|
|
12
15
|
validationService;
|
|
13
16
|
disableService;
|
|
@@ -15,13 +18,17 @@ export class FormBuilderService {
|
|
|
15
18
|
statusService;
|
|
16
19
|
eventService;
|
|
17
20
|
metadata;
|
|
18
|
-
|
|
21
|
+
lifetime;
|
|
22
|
+
destroyRef;
|
|
23
|
+
constructor(validationService, disableService, computeService, statusService, eventService, metadata, lifetime, destroyRef) {
|
|
19
24
|
this.validationService = validationService;
|
|
20
25
|
this.disableService = disableService;
|
|
21
26
|
this.computeService = computeService;
|
|
22
27
|
this.statusService = statusService;
|
|
23
28
|
this.eventService = eventService;
|
|
24
29
|
this.metadata = metadata;
|
|
30
|
+
this.lifetime = lifetime;
|
|
31
|
+
this.destroyRef = destroyRef;
|
|
25
32
|
}
|
|
26
33
|
buildForm(formGroup, forms, groupMode = "default") {
|
|
27
34
|
const validationCollection = this.validationService.createCollection();
|
|
@@ -29,7 +36,7 @@ export class FormBuilderService {
|
|
|
29
36
|
const eventCollection = this.eventService.createCollection();
|
|
30
37
|
const computeCollection = this.computeService.createCollection();
|
|
31
38
|
forms.forEach((form) => {
|
|
32
|
-
const statusCollection = this.statusService.createCollection();
|
|
39
|
+
const statusCollection = this.statusService.createCollection(form);
|
|
33
40
|
const currentGroup = this.applyPath(formGroup, form.path, groupMode);
|
|
34
41
|
if (this.hasPath(form.path)) {
|
|
35
42
|
this.disableService.addToCollection(disableCollection, currentGroup, formGroup, form);
|
|
@@ -37,7 +44,7 @@ export class FormBuilderService {
|
|
|
37
44
|
form.rows?.forEach((row) => {
|
|
38
45
|
this.addControls(currentGroup, row.components, groupMode, disableCollection, computeCollection, validationCollection, statusCollection, eventCollection);
|
|
39
46
|
});
|
|
40
|
-
this.statusService.setupCollection(
|
|
47
|
+
this.statusService.setupCollection(statusCollection);
|
|
41
48
|
});
|
|
42
49
|
this.disableService.setupCollection(disableCollection);
|
|
43
50
|
this.computeService.setupCollection(computeCollection);
|
|
@@ -123,7 +130,7 @@ export class FormBuilderService {
|
|
|
123
130
|
const itemComponent = this.getArrayItem(component);
|
|
124
131
|
if (itemComponent.key) {
|
|
125
132
|
const currentGroup = this.applyPath(formGroup, itemComponent.path, groupMode);
|
|
126
|
-
const formArray = this.createFormArray(currentGroup, itemComponent, groupMode);
|
|
133
|
+
const formArray = this.createFormArray(currentGroup, itemComponent, groupMode, statusCollection);
|
|
127
134
|
this.validationService.addToCollection(validationCollection, formArray, currentGroup, component);
|
|
128
135
|
this.statusService.addToCollection(statusCollection, formArray, component);
|
|
129
136
|
this.eventService.addToCollection(eventCollection, formArray, currentGroup, component);
|
|
@@ -199,91 +206,47 @@ export class FormBuilderService {
|
|
|
199
206
|
return { key: null, path: null, rows: [] };
|
|
200
207
|
}
|
|
201
208
|
}
|
|
202
|
-
createFormArray(formGroup, itemComponent, groupMode) {
|
|
209
|
+
createFormArray(formGroup, itemComponent, groupMode, statusCollection) {
|
|
203
210
|
const formComponent = this;
|
|
204
|
-
const
|
|
205
|
-
|
|
211
|
+
const lifetime = this.lifetime;
|
|
212
|
+
const setupItem = function (formGroup) {
|
|
213
|
+
const statusItemCollection = statusCollection.createCollection(formGroup);
|
|
206
214
|
const validationCollection = formComponent.validationService.createCollection();
|
|
207
215
|
const eventCollection = formComponent.eventService.createCollection();
|
|
208
216
|
const disableCollection = formComponent.disableService.createCollection();
|
|
209
217
|
const computeCollection = formComponent.computeService.createCollection();
|
|
210
218
|
itemComponent.rows?.forEach((row) => {
|
|
211
|
-
formComponent.addControls(formGroup, row.components, groupMode, disableCollection, computeCollection, validationCollection,
|
|
219
|
+
formComponent.addControls(formGroup, row.components, groupMode, disableCollection, computeCollection, validationCollection, statusItemCollection, eventCollection);
|
|
212
220
|
});
|
|
213
|
-
|
|
214
|
-
formComponent.disableService.setupCollection(disableCollection);
|
|
215
|
-
formComponent.computeService.setupCollection(computeCollection);
|
|
216
|
-
formComponent.validationService.setupCollection(validationCollection);
|
|
217
|
-
formComponent.eventService.setupCollection(eventCollection);
|
|
221
|
+
const destroyRef = lifetime.resolve(formGroup);
|
|
222
|
+
formComponent.disableService.setupCollection(disableCollection, destroyRef);
|
|
223
|
+
formComponent.computeService.setupCollection(computeCollection, destroyRef);
|
|
224
|
+
formComponent.validationService.setupCollection(validationCollection, destroyRef);
|
|
225
|
+
formComponent.eventService.setupCollection(eventCollection, destroyRef);
|
|
226
|
+
formComponent.statusService.setupCollection(statusItemCollection, destroyRef);
|
|
218
227
|
};
|
|
219
|
-
const
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
this.push(newGroup);
|
|
223
|
-
prepareItem(newGroup);
|
|
224
|
-
return newGroup;
|
|
225
|
-
};
|
|
226
|
-
const addItem = function () {
|
|
227
|
-
if (hasFactory(this)) {
|
|
228
|
-
const newGroup = this.createItem(true);
|
|
229
|
-
return newGroup;
|
|
230
|
-
}
|
|
231
|
-
else {
|
|
232
|
-
throw new Error('Cannot add item: the FormArray does not implement FormArrayWithFactory.');
|
|
233
|
-
}
|
|
234
|
-
};
|
|
235
|
-
const overrideArray = (array) => {
|
|
236
|
-
const createItem = array.createItem.bind(array);
|
|
237
|
-
array.createItem = function (addToArray) {
|
|
238
|
-
const formGroup = createItem(addToArray);
|
|
239
|
-
prepareItem(formGroup);
|
|
240
|
-
return formGroup;
|
|
241
|
-
};
|
|
228
|
+
const cleanupItem = function (formGroup) {
|
|
229
|
+
statusCollection.removeCollection(formGroup);
|
|
230
|
+
lifetime.destroy(formGroup);
|
|
242
231
|
};
|
|
243
232
|
const existing = formGroup.get(itemComponent.key);
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
}
|
|
248
|
-
const formArray = new FormArray([]);
|
|
249
|
-
formGroup.addControl(itemComponent.key, formArray);
|
|
250
|
-
const resizeFormArray = this.resizeFormArray;
|
|
251
|
-
const createNewArray = function () {
|
|
252
|
-
const newArray = new FormArray([]);
|
|
253
|
-
return prepareArray(newArray);
|
|
254
|
-
};
|
|
255
|
-
const prepareArray = (array) => {
|
|
256
|
-
const dynamicArray = array;
|
|
257
|
-
dynamicArray.addItem = addItem;
|
|
258
|
-
dynamicArray.createItem = createItem;
|
|
259
|
-
dynamicArray.resize = resize;
|
|
260
|
-
dynamicArray.createNewArray = createNewArray;
|
|
261
|
-
return dynamicArray;
|
|
262
|
-
};
|
|
263
|
-
const resize = function (size) {
|
|
264
|
-
if (hasFactory(this)) {
|
|
265
|
-
const newArray = resizeFormArray(this, size);
|
|
266
|
-
prepareArray(newArray);
|
|
267
|
-
formGroup.setControl(itemComponent.key, newArray);
|
|
268
|
-
}
|
|
269
|
-
};
|
|
270
|
-
// used externally: addItem, resize
|
|
271
|
-
return prepareArray(formArray);
|
|
272
|
-
}
|
|
273
|
-
resizeFormArray(formArray, size) {
|
|
274
|
-
if (formArray.length < size) {
|
|
275
|
-
const newArray = new FormArray(formArray.controls);
|
|
276
|
-
while (formArray.length < size) {
|
|
277
|
-
formArray.addItem();
|
|
278
|
-
}
|
|
279
|
-
return newArray;
|
|
280
|
-
}
|
|
281
|
-
else if (formArray.length > size) {
|
|
282
|
-
return new FormArray(formArray.controls.slice(0, size));
|
|
233
|
+
let formArray = null;
|
|
234
|
+
if (existing instanceof FormArrayEx) {
|
|
235
|
+
formArray = existing;
|
|
283
236
|
}
|
|
284
237
|
else {
|
|
285
|
-
|
|
238
|
+
formArray = new FormArrayEx([]);
|
|
239
|
+
formGroup.addControl(itemComponent.key, formArray);
|
|
286
240
|
}
|
|
241
|
+
formArray.controlsChanges
|
|
242
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
243
|
+
.subscribe(e => {
|
|
244
|
+
if (e?.type == "add")
|
|
245
|
+
setupItem(e.control);
|
|
246
|
+
else if (e?.type == "remove")
|
|
247
|
+
cleanupItem(e.control);
|
|
248
|
+
});
|
|
249
|
+
return formArray;
|
|
287
250
|
}
|
|
288
251
|
getContainers(component) {
|
|
289
252
|
if (component.type === 'group') {
|
|
@@ -339,19 +302,10 @@ export class FormBuilderService {
|
|
|
339
302
|
return null;
|
|
340
303
|
}
|
|
341
304
|
}
|
|
342
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormBuilderService, deps: [{ token: i1.ValidationService }, { token: i2.DisableService }, { token: i3.ComputeService }, { token: i4.StatusService }, { token: i5.EventService }, { token: i6.MetadataService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
305
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormBuilderService, deps: [{ token: i1.ValidationService }, { token: i2.DisableService }, { token: i3.ComputeService }, { token: i4.StatusService }, { token: i5.EventService }, { token: i6.MetadataService }, { token: i7.LifetimeService }, { token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
343
306
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormBuilderService });
|
|
344
307
|
}
|
|
345
308
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormBuilderService, decorators: [{
|
|
346
309
|
type: Injectable
|
|
347
|
-
}], ctorParameters: () => [{ type: i1.ValidationService }, { type: i2.DisableService }, { type: i3.ComputeService }, { type: i4.StatusService }, { type: i5.EventService }, { type: i6.MetadataService }] });
|
|
348
|
-
export function hasFactory(array) {
|
|
349
|
-
if (!array)
|
|
350
|
-
return false;
|
|
351
|
-
const current = array;
|
|
352
|
-
return typeof current.createItem === 'function'
|
|
353
|
-
&& typeof current.addItem === 'function'
|
|
354
|
-
&& typeof current.resize === 'function'
|
|
355
|
-
&& typeof current.createNewArray === 'function';
|
|
356
|
-
}
|
|
357
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvc2VydmljZXMvYnVpbGRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFtQixTQUFTLEVBQUUsV0FBVyxFQUFzQixTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQU94RyxPQUFPLEVBQUUsV0FBVyxFQUFpQixNQUFNLHNCQUFzQixDQUFDOzs7Ozs7OztBQUdsRSxNQUFNLE9BQU8sa0JBQWtCO0lBR25CO0lBQ0U7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQU5aLFlBQ1UsaUJBQW9DLEVBQ2xDLGNBQThCLEVBQzlCLGNBQThCLEVBQzlCLGFBQTRCLEVBQzVCLFlBQTBCLEVBQzFCLFFBQXlCO1FBTDNCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDbEMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixhQUFRLEdBQVIsUUFBUSxDQUFpQjtJQUNyQyxDQUFDO0lBRUQsU0FBUyxDQUFDLFNBQW9CLEVBQUUsS0FBaUIsRUFBRSxZQUEyQixTQUFTO1FBQ3JGLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDdkUsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDakUsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzdELE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FB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QUFDO1lBQzFDLEtBQUssUUFBUTtnQkFDWCxPQUFPLFNBQVMsQ0FBQyxZQUFzQixDQUFDO1lBQzFDLEtBQUssVUFBVTtnQkFDYixPQUFPLENBQUMsU0FBUyxDQUFDLFlBQVksSUFBSSxLQUFLLENBQVksQ0FBQztZQUN0RDtnQkFDRSxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO0lBQ0gsQ0FBQztJQUVPLFdBQVcsQ0FBQyxTQUFjO1FBQ2hDLElBQUksU0FBUyxDQUFDLFFBQVEsS0FBSyxRQUFRLElBQUksU0FBUyxDQUFDLFFBQVEsS0FBSyxNQUFNO1lBQ2xFLE9BQU8sU0FBUyxDQUFDLFFBQVEsQ0FBQztRQUU1QixRQUFRLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN2QixLQUFLLFFBQVEsQ0FBQztZQUNkLEtBQUssVUFBVSxDQUFDO1lBQ2hCLEtBQUssV0FBVztnQkFDZCxPQUFPLE1BQU0sQ0FBQztZQUNoQjtnQkFDRSxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO0lBQ0gsQ0FBQzt3R0E5WFUsa0JBQWtCOzRHQUFsQixrQkFBa0I7OzRGQUFsQixrQkFBa0I7a0JBRDlCLFVBQVU7O0FBa1lYLE1BQU0sVUFBVSxVQUFVLENBQUMsS0FBZ0I7SUFDekMsSUFBSSxDQUFDLEtBQUs7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUN6QixNQUFNLE9BQU8sR0FBRyxLQUFZLENBQUM7SUFDN0IsT0FBTyxPQUFPLE9BQU8sQ0FBQyxVQUFVLEtBQUssVUFBVTtXQUMxQyxPQUFPLE9BQU8sQ0FBQyxPQUFPLEtBQUssVUFBVTtXQUNyQyxPQUFPLE9BQU8sQ0FBQyxNQUFNLEtBQUssVUFBVTtXQUNwQyxPQUFPLE9BQU8sQ0FBQyxjQUFjLEtBQUssVUFBVSxDQUFBO0FBQ25ELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUFycmF5LCBGb3JtQ29udHJvbCwgRm9ybUNvbnRyb2xPcHRpb25zLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFZhbGlkYXRpb25Db2xsZWN0aW9uLCBWYWxpZGF0aW9uU2VydmljZSB9IGZyb20gJy4vdmFsaWRhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGlzYWJsZUNvbGxlY3Rpb24sIERpc2FibGVTZXJ2aWNlIH0gZnJvbSAnLi9kaXNhYmxlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb21wdXRlQ29sbGVjdGlvbiwgQ29tcHV0ZVNlcnZpY2UgfSBmcm9tICcuL2NvbXB1dGUuc2VydmljZSc7XHJcbmltcG9ydCB7IFN0YXR1c0NvbGxlY3Rpb24sIFN0YXR1c1NlcnZpY2UgfSBmcm9tICcuL3N0YXR1cy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRXZlbnRDb2xsZWN0aW9uLCBFdmVudFNlcnZpY2UgfSBmcm9tICcuL2V2ZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNZXRhZGF0YVNlcnZpY2UgfSBmcm9tICcuL21ldGFkYXRhLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXBFeCwgRm9ybUdyb3VwTW9kZSB9IGZyb20gJy4uL3V0aWxzL0Zvcm1Hcm91cEV4JztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEZvcm1CdWlsZGVyU2VydmljZSAge1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgdmFsaWRhdGlvblNlcnZpY2U6IFZhbGlkYXRpb25TZXJ2aWNlXHJcbiAgICAsIHByaXZhdGUgZGlzYWJsZVNlcnZpY2U6IERpc2FibGVTZXJ2aWNlXHJcbiAgICAsIHByaXZhdGUgY29tcHV0ZVNlcnZpY2U6IENvbXB1dGVTZXJ2aWNlXHJcbiAgICAsIHByaXZhdGUgc3RhdHVzU2VydmljZTogU3RhdHVzU2VydmljZVxyXG4gICAgLCBwcml2YXRlIGV2ZW50U2VydmljZTogRXZlbnRTZXJ2aWNlXHJcbiAgICAsIHByaXZhdGUgbWV0YWRhdGE6IE1ldGFkYXRhU2VydmljZSkge1xyXG4gIH1cclxuXHJcbiAgYnVpbGRGb3JtKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBmb3JtczogQXJyYXk8YW55PiwgZ3JvdXBNb2RlOiBGb3JtR3JvdXBNb2RlID0gXCJkZWZhdWx0XCIpIHtcclxuICAgIGNvbnN0IHZhbGlkYXRpb25Db2xsZWN0aW9uID0gdGhpcy52YWxpZGF0aW9uU2VydmljZS5jcmVhdGVDb2xsZWN0aW9uKCk7XHJcbiAgICBjb25zdCBkaXNhYmxlQ29sbGVjdGlvbiA9IHRoaXMuZGlzYWJsZVNlcnZpY2UuY3JlYXRlQ29sbGVjdGlvbigpO1xyXG4gICAgY29uc3QgZXZlbnRDb2xsZWN0aW9uID0gdGhpcy5ldmVudFNlcnZpY2UuY3JlYXRlQ29sbGVjdGlvbigpO1xyXG4gICAgY29uc3QgY29tcHV0ZUNvbGxlY3Rpb24gPSB0aGlzLmNvbXB1dGVTZXJ2aWNlLmNyZWF0ZUNvbGxlY3Rpb24oKTtcclxuICAgIGZvcm1zLmZvckVhY2goKGZvcm06IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCBzdGF0dXNDb2xsZWN0aW9uID0gdGhpcy5zdGF0dXNTZXJ2aWNlLmNyZWF0ZUNvbGxlY3Rpb24oKTtcclxuICAgICAgY29uc3QgY3VycmVudEdyb3VwID0gdGhpcy5hcHBseVBhdGgoZm9ybUdyb3VwLCBmb3JtLnBhdGgsIGdyb3VwTW9kZSk7XHJcbiAgICAgIGlmICh0aGlzLmhhc1BhdGgoZm9ybS5wYXRoKSkge1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZVNlcnZpY2UuYWRkVG9Db2xsZWN0aW9uKGRpc2FibGVDb2xsZWN0aW9uLCBjdXJyZW50R3JvdXAsIGZvcm1Hcm91cCwgZm9ybSk7XHJcbiAgICAgIH1cclxuICAgICAgZm9ybS5yb3dzPy5mb3JFYWNoKChyb3c6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuYWRkQ29udHJvbHMoY3VycmVudEdyb3VwLCByb3cuY29tcG9uZW50cywgZ3JvdXBNb2RlXHJcbiAgICAgICAgICAsIGRpc2FibGVDb2xsZWN0aW9uXHJcbiAgICAgICAgICAsIGNvbXB1dGVDb2xsZWN0aW9uXHJcbiAgICAgICAgICAsIHZhbGlkYXRpb25Db2xsZWN0aW9uXHJcbiAgICAgICAgICAsIHN0YXR1c0NvbGxlY3Rpb25cclxuICAgICAgICAgICwgZXZlbnRDb2xsZWN0aW9uKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuc3RhdHVzU2VydmljZS5zZXR1cENvbGxlY3Rpb24oZm9ybSwgc3RhdHVzQ29sbGVjdGlvbik7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuZGlzYWJsZVNlcnZpY2Uuc2V0dXBDb2xsZWN0aW9uKGRpc2FibGVDb2xsZWN0aW9uKTtcclxuICAgIHRoaXMuY29tcHV0ZVNlcnZpY2Uuc2V0dXBDb2xsZWN0aW9uKGNvbXB1dGVDb2xsZWN0aW9uKTtcclxuICAgIHRoaXMudmFsaWRhdGlvblNlcnZpY2Uuc2V0dXBDb2xsZWN0aW9uKHZhbGlkYXRpb25Db2xsZWN0aW9uKTtcclxuICAgIHRoaXMuZXZlbnRTZXJ2aWNlLnNldHVwQ29sbGVjdGlvbihldmVudENvbGxlY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYXNQYXRoKHZhbHVlOiBzdHJpbmcgfCBudWxsKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiB2YWx1ZS50cmltKCkubGVuZ3RoID4gMDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXBwbHlQYXRoKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBwYXRoOiBzdHJpbmcsIGdyb3VwTW9kZTogRm9ybUdyb3VwTW9kZSkge1xyXG4gICAgaWYgKCF0aGlzLmhhc1BhdGgocGF0aCkpIHtcclxuICAgICAgcmV0dXJuIGZvcm1Hcm91cDtcclxuICAgIH1cclxuICAgIGxldCBjdXJyZW50R3JvdXA6IEZvcm1Hcm91cCA9IGZvcm1Hcm91cDtcclxuICAgIHRoaXMuc3BsaXRQYXRoKHBhdGgpLmZvckVhY2goKHNlZ21lbnQpID0+IHtcclxuICAgICAgY29uc3QgZXhpc3RHcm91cCA9IGN1cnJlbnRHcm91cC5nZXQoc2VnbWVudCk7XHJcbiAgICAgIGlmIChleGlzdEdyb3VwIGluc3RhbmNlb2YgRm9ybUdyb3VwKSB7XHJcbiAgICAgICAgY3VycmVudEdyb3VwID0gZXhpc3RHcm91cDtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoZXhpc3RHcm91cCkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGNyZWF0ZSBmb3JtIGdyb3VwIGJlY2F1c2UgYW4gZWxlbWVudCB3aXRoIHBhdGggJHtzZWdtZW50fSBhbHJlYWR5IGV4aXN0c2ApO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IHNlZ21lbnRHcm91cCA9IHRoaXMuY3JlYXRlRm9ybUdyb3VwKGdyb3VwTW9kZSk7XHJcbiAgICAgICAgY3VycmVudEdyb3VwLmFkZENvbnRyb2woc2VnbWVudCwgc2VnbWVudEdyb3VwKTtcclxuICAgICAgICBjdXJyZW50R3JvdXAgPSBzZWdtZW50R3JvdXA7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGN1cnJlbnRHcm91cDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3BsaXRQYXRoKHBhdGg6IHN0cmluZyk6IHN0cmluZ1tdIHtcclxuICAgIGlmICghcGF0aCkge1xyXG4gICAgICByZXR1cm4gW107XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcGF0aFxyXG4gICAgICAuc3BsaXQoJy4nKVxyXG4gICAgICAubWFwKHNlZ21lbnQgPT4gc2VnbWVudC50cmltKCkpXHJcbiAgICAgIC5maWx0ZXIoc2VnbWVudCA9PiBzZWdtZW50Lmxlbmd0aCA+IDApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVGb3JtR3JvdXAoZ3JvdXBNb2RlOiBGb3JtR3JvdXBNb2RlKTogRm9ybUdyb3VwIHtcclxuICAgIHJldHVybiAoZ3JvdXBNb2RlID09PSBcImRlZmF1bHRcIilcclxuICAgICAgPyBuZXcgRm9ybUdyb3VwKHt9KVxyXG4gICAgICA6IG5ldyBGb3JtR3JvdXBFeCh7fSwgZ3JvdXBNb2RlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRkQ29udHJvbHMoZm9ybUdyb3VwOiBGb3JtR3JvdXBcclxuICAgICwgY29tcG9uZW50czogQXJyYXk8YW55PlxyXG4gICAgLCBncm91cE1vZGU6IEZvcm1Hcm91cE1vZGVcclxuICAgICwgZGlzYWJsZUNvbGxlY3Rpb246IERpc2FibGVDb2xsZWN0aW9uXHJcbiAgICAsIGNvbXB1dGVDb2xsZWN0aW9uOiBDb21wdXRlQ29sbGVjdGlvblxyXG4gICAgLCB2YWxpZGF0aW9uQ29sbGVjdGlvbjogVmFsaWRhdGlvbkNvbGxlY3Rpb25cclxuICAgICwgc3RhdHVzQ29sbGVjdGlvbjogU3RhdHVzQ29sbGVjdGlvblxyXG4gICAgLCBldmVudENvbGxlY3Rpb246IEV2ZW50Q29sbGVjdGlvbikge1xyXG4gICAgbGV0IGZvcm1Db21wb25lbnQgPSB0aGlzO1xyXG5cclxuICAgIGNvbXBvbmVudHM/LmZvckVhY2goKGNvbXBvbmVudDogYW55KSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmlzRm9ybUNvbXBvbmVudChjb21wb25lbnQpKSB7XHJcbiAgICAgICAgY29uc3QgY3VycmVudEdyb3VwID0gdGhpcy5hcHBseVBhdGgoZm9ybUdyb3VwLCBjb21wb25lbnQucGF0aCwgZ3JvdXBNb2RlKTtcclxuICAgICAgICBpZiAoY3VycmVudEdyb3VwLmNvbnRhaW5zKGNvbXBvbmVudC5rZXkpKSB7XHJcbiAgICAgICAgICB0aGlzLnN0YXR1c1NlcnZpY2UuYWRkVG9Db2xsZWN0aW9uKHN0YXR1c0NvbGxlY3Rpb24sIGN1cnJlbnRHcm91cC5nZXQoY29tcG9uZW50LmtleSkgYXMgQWJzdHJhY3RDb250cm9sLCBjb21wb25lbnQpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGxldCBkZWZhdWx0VmFsdWUgPSB0aGlzLmdldERlZmF1bHRWYWx1ZShjb21wb25lbnQpO1xyXG4gICAgICAgICAgY29uc3Qgb3B0aW9uczogRm9ybUNvbnRyb2xPcHRpb25zID0ge1xyXG4gICAgICAgICAgICB1cGRhdGVPbjogdGhpcy5nZXRVcGRhdGVPbihjb21wb25lbnQpIHx8IFwiY2hhbmdlXCIsXHJcbiAgICAgICAgICAgIG5vbk51bGxhYmxlOiAoZGVmYXVsdFZhbHVlICE9PSBudWxsICYmIGRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkKVxyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woZGVmYXVsdFZhbHVlLCBvcHRpb25zKTtcclxuICAgICAgICAgIGN1cnJlbnRHcm91cC5hZGRDb250cm9sKGNvbXBvbmVudC5rZXksIGNvbnRyb2wpO1xyXG4gICAgICAgICAgdGhpcy52YWxpZGF0aW9uU2VydmljZS5hZGRUb0NvbGxlY3Rpb24odmFsaWRhdGlvbkNvbGxlY3Rpb24sIGNvbnRyb2wsIGN1cnJlbnRHcm91cCwgY29tcG9uZW50KTtcclxuICAgICAgICAgIHRoaXMuc3RhdHVzU2VydmljZS5hZGRUb0NvbGxlY3Rpb24oc3RhdHVzQ29sbGVjdGlvbiwgY29udHJvbCwgY29tcG9uZW50KTtcclxuICAgICAgICAgIHRoaXMuZGlzYWJsZVNlcnZpY2UuYWRkVG9Db2xsZWN0aW9uKGRpc2FibGVDb2xsZWN0aW9uLCBjb250cm9sLCBmb3JtR3JvdXAsIGNvbXBvbmVudCk7XHJcbiAgICAgICAgICB0aGlzLmNvbXB1dGVTZXJ2aWNlLmFkZFRvQ29sbGVjdGlvbihjb21wdXRlQ29sbGVjdGlvbiwgY29udHJvbCwgZm9ybUdyb3VwLCBjb21wb25lbnQpO1xyXG4gICAgICAgICAgdGhpcy5ldmVudFNlcnZpY2UuYWRkVG9Db2xsZWN0aW9uKGV2ZW50Q29sbGVjdGlvbiwgY29udHJvbCwgY3VycmVudEdyb3VwLCBjb21wb25lbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLmlzQ29udGFpbmVyQ29tcG9uZW50KGNvbXBvbmVudCkpIHtcclxuICAgICAgICBjb25zdCBjb250YWluZXJzID0gdGhpcy5nZXRDb250YWluZXJzKGNvbXBvbmVudCk7XHJcbiAgICAgICAgY29udGFpbmVycz8uZm9yRWFjaCgoY29udGFpbmVyKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBjdXJyZW50R3JvdXAgPSB0aGlzLmFwcGx5UGF0aChmb3JtR3JvdXAsIGNvbnRhaW5lci5wYXRoLCBncm91cE1vZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuaGFzUGF0aChjb250YWluZXIucGF0aCkpIHtcclxuICAgICAgICAgICAgdGhpcy5kaXNhYmxlU2VydmljZS5hZGRUb0NvbGxlY3Rpb24oZGlzYWJsZUNvbGxlY3Rpb24sIGN1cnJlbnRHcm91cCwgZm9ybUdyb3VwLCBjb250YWluZXIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29udGFpbmVyLnJvd3M/LmZvckVhY2goKHJvdzogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGZvcm1Db21wb25lbnQuYWRkQ29udHJvbHMoY3VycmVudEdyb3VwLCByb3cuY29tcG9uZW50cywgZ3JvdXBNb2RlXHJcbiAgICAgICAgICAgICAgLCBkaXNhYmxlQ29sbGVjdGlvblxyXG4gICAgICAgICAgICAgICwgY29tcHV0ZUNvbGxlY3Rpb25cclxuICAgICAgICAgICAgICAsIHZhbGlkYXRpb25Db2xsZWN0aW9uXHJcbiAgICAgICAgICAgICAgLCBzdGF0dXNDb2xsZWN0aW9uXHJcbiAgICAgICAgICAgICAgLCBldmVudENvbGxlY3Rpb24pO1xyXG4gICAgICAgICAgfSk7ICAgICAgICAgIFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMuaXNBcnJheUNvbXBvbmVudChjb21wb25lbnQpKSB7XHJcbiAgICAgICAgY29uc3QgaXRlbUNvbXBvbmVudCA9IHRoaXMuZ2V0QXJyYXlJdGVtKGNvbXBvbmVudCk7XHJcbiAgICAgICAgaWYgKGl0ZW1Db21wb25lbnQua2V5KSB7XHJcbiAgICAgICAgICBjb25zdCBjdXJyZW50R3JvdXAgPSB0aGlzLmFwcGx5UGF0aChmb3JtR3JvdXAsIGl0ZW1Db21wb25lbnQucGF0aCwgZ3JvdXBNb2RlKTtcclxuICAgICAgICAgIGNvbnN0IGZvcm1BcnJheSA9IHRoaXMuY3JlYXRlRm9ybUFycmF5KGN1cnJlbnRHcm91cCwgaXRlbUNvbXBvbmVudCwgZ3JvdXBNb2RlKTtcclxuICAgICAgICAgIHRoaXMudmFsaWRhdGlvblNlcnZpY2UuYWRkVG9Db2xsZWN0aW9uKHZhbGlkYXRpb25Db2xsZWN0aW9uLCBmb3JtQXJyYXksIGN1cnJlbnRHcm91cCwgY29tcG9uZW50KTtcclxuICAgICAgICAgIHRoaXMuc3RhdHVzU2VydmljZS5hZGRUb0NvbGxlY3Rpb24oc3RhdHVzQ29sbGVjdGlvbiwgZm9ybUFycmF5LCBjb21wb25lbnQpO1xyXG4gICAgICAgICAgdGhpcy5ldmVudFNlcnZpY2UuYWRkVG9Db2xsZWN0aW9uKGV2ZW50Q29sbGVjdGlvbiwgZm9ybUFycmF5LCBjdXJyZW50R3JvdXAsIGNvbXBvbmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMuaXNDb21wb25lbnRXaXRoSW5wdXQoY29tcG9uZW50KSkge1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRHcm91cCA9IHRoaXMuYXBwbHlQYXRoKGZvcm1Hcm91cCwgY29tcG9uZW50LnBhdGgsIGdyb3VwTW9kZSk7XHJcbiAgICAgICAgaWYgKGN1cnJlbnRHcm91cC5jb250YWlucyhjb21wb25lbnQua2V5KSkge1xyXG4gICAgICAgICAgY29uc3QgY29udHJvbCA9IGN1cnJlbnRHcm91cC5nZXQoY29tcG9uZW50LmtleSkgYXMgQWJzdHJhY3RDb250cm9sO1xyXG4gICAgICAgICAgdGhpcy52YWxpZGF0aW9uU2VydmljZS5hZGRUb0NvbGxlY3Rpb24odmFsaWRhdGlvbkNvbGxlY3Rpb24sIGNvbnRyb2wsIGN1cnJlbnRHcm91cCwgY29tcG9uZW50KTtcclxuICAgICAgICAgIHRoaXMuc3RhdHVzU2VydmljZS5hZGRUb0NvbGxlY3Rpb24oc3RhdHVzQ29sbGVjdGlvbiwgY29udHJvbCwgY29tcG9uZW50KTtcclxuICAgICAgICAgIHRoaXMuZGlzYWJsZVNlcnZpY2UuYWRkVG9Db2xsZWN0aW9uKGRpc2FibGVDb2xsZWN0aW9uLCBjb250cm9sLCBjdXJyZW50R3JvdXAsIGNvbXBvbmVudCk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgY29uc3QgY29udHJvbCA9IG5ldyBGb3JtQ29udHJvbChudWxsKTtcclxuICAgICAgICAgIGN1cnJlbnRHcm91cC5hZGRDb250cm9sKGNvbXBvbmVudC5rZXksIGNvbnRyb2wpO1xyXG4gICAgICAgICAgdGhpcy52YWxpZGF0aW9uU2VydmljZS5hZGRUb0NvbGxlY3Rpb24odmFsaWRhdGlvbkNvbGxlY3Rpb24sIGNvbnRyb2wsIGN1cnJlbnRHcm91cCwgY29tcG9uZW50KTtcclxuICAgICAgICAgIHRoaXMuc3RhdHVzU2VydmljZS5hZGRUb0NvbGxlY3Rpb24oc3RhdHVzQ29sbGVjdGlvbiwgY29udHJvbCwgY29tcG9uZW50KTtcclxuICAgICAgICAgIHRoaXMuZGlzYWJsZVNlcnZpY2UuYWRkVG9Db2xsZWN0aW9uKGRpc2FibGVDb2xsZWN0aW9uLCBjb250cm9sLCBjdXJyZW50R3JvdXAsIGNvbXBvbmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNGb3JtQ29tcG9uZW50KGNvbXBvbmVudDogYW55KTogYm9vbGVhbiB7XHJcbiAgICBzd2l0Y2ggKGNvbXBvbmVudC50eXBlKSB7XHJcbiAgICAgIGNhc2UgXCJjaGVja2JveFwiOlxyXG4gICAgICBjYXNlIFwiY2hlY2tsaXN0XCI6XHJcbiAgICAgIGNhc2UgXCJkYXRldGltZVwiOlxyXG4gICAgICBjYXNlIFwiZmlsZXBpY2tlclwiOlxyXG4gICAgICBjYXNlIFwibnVtYmVyXCI6XHJcbiAgICAgIGNhc2UgXCJyYWRpb1wiOlxyXG4gICAgICBjYXNlIFwic2VsZWN0XCI6XHJcbiAgICAgIGNhc2UgXCJ0YWdsaXN0XCI6XHJcbiAgICAgIGNhc2UgXCJ0ZXh0YXJlYVwiOlxyXG4gICAgICBjYXNlIFwidGV4dGZpZWxkXCI6XHJcbiAgICAgIGNhc2UgXCJyYW5nZVwiOlxyXG4gICAgICBjYXNlIFwiZXhwcmVzc2lvblwiOlxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNDb250YWluZXJDb21wb25lbnQoY29tcG9uZW50OiBhbnkpOiBib29sZWFuIHtcclxuICAgIHN3aXRjaCAoY29tcG9uZW50LnR5cGUpIHtcclxuICAgICAgY2FzZSBcImdyb3VwXCI6XHJcbiAgICAgIGNhc2UgXCJ0YWJcIjpcclxuICAgICAgY2FzZSBcImFjY29yZGlvblwiOlxyXG4gICAgICBjYXNlIFwidGVtcGxhdGVob3N0XCI6XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0NvbXBvbmVudFdpdGhJbnB1dChjb21wb25lbnQ6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGNvbXBvbmVudC50eXBlID09PSBcImNvbXBvbmVudFwiXHJcbiAgICAgICYmIGNvbXBvbmVudC5pc0lucHV0ID09PSB0cnVlXHJcbiAgICAgICYmIGNvbXBvbmVudC5rZXk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzQXJyYXlDb21wb25lbnQoY29tcG9uZW50OiBhbnkpOiBib29sZWFuIHtcclxuICAgIHN3aXRjaCAoY29tcG9uZW50LnR5cGUpIHtcclxuICAgICAgY2FzZSBcImR5bmFtaWNsaXN0XCI6XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRBcnJheUl0ZW0oY29tcG9uZW50OiBhbnkpOiB7IGtleTogYW55OyBwYXRoOiBhbnk7IHJvd3M6IGFueSB9IHtcclxuICAgIGlmIChjb21wb25lbnQudHlwZSA9PT0gJ2R5bmFtaWNsaXN0Jykge1xyXG4gICAgICByZXR1cm4geyBrZXk6IGNvbXBvbmVudC5rZXksIHBhdGg6IGNvbXBvbmVudC5wYXRoLCByb3dzOiBjb21wb25lbnQucm93cyB9O1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiB7IGtleTogbnVsbCwgcGF0aDogbnVsbCwgcm93czogW10gfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlRm9ybUFycmF5KGZvcm1Hcm91cDogRm9ybUdyb3VwXHJcbiAgICAsIGl0ZW1Db21wb25lbnQ6IGFueVxyXG4gICAgLCBncm91cE1vZGU6IEZvcm1Hcm91cE1vZGUpOiBGb3JtQXJyYXlXaXRoRmFjdG9yeSB7XHJcbiAgICBjb25zdCBmb3JtQ29tcG9uZW50ID0gdGhpcztcclxuXHJcbiAgICBjb25zdCBwcmVwYXJlSXRlbSA9IGZ1bmN0aW9uIChmb3JtR3JvdXA6IEZvcm1Hcm91cCk6IHZvaWQge1xyXG4gICAgICBjb25zdCBzdGF0dXNDb2xsZWN0aW9uID0gZm9ybUNvbXBvbmVudC5zdGF0dXNTZXJ2aWNlLmNyZWF0ZUNvbGxlY3Rpb24oKTtcclxuICAgICAgY29uc3QgdmFsaWRhdGlvbkNvbGxlY3Rpb24gPSBmb3JtQ29tcG9uZW50LnZhbGlkYXRpb25TZXJ2aWNlLmNyZWF0ZUNvbGxlY3Rpb24oKTtcclxuICAgICAgY29uc3QgZXZlbnRDb2xsZWN0aW9uID0gZm9ybUNvbXBvbmVudC5ldmVudFNlcnZpY2UuY3JlYXRlQ29sbGVjdGlvbigpO1xyXG4gICAgICBjb25zdCBkaXNhYmxlQ29sbGVjdGlvbiA9IGZvcm1Db21wb25lbnQuZGlzYWJsZVNlcnZpY2UuY3JlYXRlQ29sbGVjdGlvbigpO1xyXG4gICAgICBjb25zdCBjb21wdXRlQ29sbGVjdGlvbiA9IGZvcm1Db21wb25lbnQuY29tcHV0ZVNlcnZpY2UuY3JlYXRlQ29sbGVjdGlvbigpO1xyXG4gICAgICBpdGVtQ29tcG9uZW50LnJvd3M/LmZvckVhY2goKHJvdzogYW55KSA9PiB7XHJcbiAgICAgICAgZm9ybUNvbXBvbmVudC5hZGRDb250cm9scyhmb3JtR3JvdXAsIHJvdy5jb21wb25lbnRzLCBncm91cE1vZGVcclxuICAgICAgICAgICwgZGlzYWJsZUNvbGxlY3Rpb25cclxuICAgICAgICAgICwgY29tcHV0ZUNvbGxlY3Rpb25cclxuICAgICAgICAgICwgdmFsaWRhdGlvbkNvbGxlY3Rpb25cclxuICAgICAgICAgICwgc3RhdHVzQ29sbGVjdGlvblxyXG4gICAgICAgICAgLCBldmVudENvbGxlY3Rpb24pO1xyXG4gICAgICB9KTtcclxuICAgICAgLy8gaWdub3JlIHN0YXR1c0NvbGxlY3Rpb25cclxuICAgICAgZm9ybUNvbXBvbmVudC5kaXNhYmxlU2VydmljZS5zZXR1cENvbGxlY3Rpb24oZGlzYWJsZUNvbGxlY3Rpb24pO1xyXG4gICAgICBmb3JtQ29tcG9uZW50LmNvbXB1dGVTZXJ2aWNlLnNldHVwQ29sbGVjdGlvbihjb21wdXRlQ29sbGVjdGlvbik7XHJcbiAgICAgIGZvcm1Db21wb25lbnQudmFsaWRhdGlvblNlcnZpY2Uuc2V0dXBDb2xsZWN0aW9uKHZhbGlkYXRpb25Db2xsZWN0aW9uKTtcclxuICAgICAgZm9ybUNvbXBvbmVudC5ldmVudFNlcnZpY2Uuc2V0dXBDb2xsZWN0aW9uKGV2ZW50Q29sbGVjdGlvbik7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY3JlYXRlSXRlbSA9IGZ1bmN0aW9uICh0aGlzOiBGb3JtQXJyYXksIGFkZFRvQXJyYXk6IGJvb2xlYW4gPSBmYWxzZSk6IEZvcm1Hcm91cCB7XHJcbiAgICAgIGNvbnN0IG5ld0dyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgICAgIGlmIChhZGRUb0FycmF5KSB0aGlzLnB1c2gobmV3R3JvdXApO1xyXG4gICAgICBwcmVwYXJlSXRlbShuZXdHcm91cCk7XHJcbiAgICAgIHJldHVybiBuZXdHcm91cDtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgYWRkSXRlbSA9IGZ1bmN0aW9uICh0aGlzOiBGb3JtQXJyYXkpOiBGb3JtR3JvdXAge1xyXG4gICAgICBpZiAoaGFzRmFjdG9yeSh0aGlzKSkge1xyXG4gICAgICAgIGNvbnN0IG5ld0dyb3VwID0gdGhpcy5jcmVhdGVJdGVtKHRydWUpO1xyXG4gICAgICAgIHJldHVybiBuZXdHcm91cDtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXHJcbiAgICAgICAgICAnQ2Fubm90IGFkZCBpdGVtOiB0aGUgRm9ybUFycmF5IGRvZXMgbm90IGltcGxlbWVudCBGb3JtQXJyYXlXaXRoRmFjdG9yeS4nXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBvdmVycmlkZUFycmF5ID0gKGFycmF5OiBGb3JtQXJyYXlXaXRoRmFjdG9yeSkgPT4ge1xyXG4gICAgICBjb25zdCBjcmVhdGVJdGVtID0gYXJyYXkuY3JlYXRlSXRlbS5iaW5kKGFycmF5KTtcclxuICAgICAgYXJyYXkuY3JlYXRlSXRlbSA9IGZ1bmN0aW9uICh0aGlzOiBGb3JtQXJyYXksIGFkZFRvQXJyYXk6IGJvb2xlYW4pOiBGb3JtR3JvdXAge1xyXG4gICAgICAgIGNvbnN0IGZvcm1Hcm91cCA9IGNyZWF0ZUl0ZW0oYWRkVG9BcnJheSk7XHJcbiAgICAgICAgcHJlcGFyZUl0ZW0oZm9ybUdyb3VwKTtcclxuICAgICAgICByZXR1cm4gZm9ybUdyb3VwO1xyXG4gICAgICB9OyAgICAgICAgXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZXhpc3RpbmcgPSBmb3JtR3JvdXAuZ2V0KGl0ZW1Db21wb25lbnQua2V5KTtcclxuXHJcbiAgICBpZiAoZXhpc3RpbmcgaW5zdGFuY2VvZiBGb3JtQXJyYXkgJiYgaGFzRmFjdG9yeShleGlzdGluZykpIHtcclxuICAgICAgb3ZlcnJpZGVBcnJheShleGlzdGluZyk7XHJcbiAgICAgIHJldHVybiBleGlzdGluZztcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBmb3JtQXJyYXkgPSBuZXcgRm9ybUFycmF5PEZvcm1Hcm91cD4oW10pO1xyXG5cclxuICAgIGZvcm1Hcm91cC5hZGRDb250cm9sKGl0ZW1Db21wb25lbnQua2V5LCBmb3JtQXJyYXkpO1xyXG5cclxuICAgIGNvbnN0IHJlc2l6ZUZvcm1BcnJheSA9IHRoaXMucmVzaXplRm9ybUFycmF5O1xyXG5cclxuICAgIGNvbnN0IGNyZWF0ZU5ld0FycmF5ID0gZnVuY3Rpb24gKCkgOiBGb3JtQXJyYXlXaXRoRmFjdG9yeSB7XHJcbiAgICAgIGNvbnN0IG5ld0FycmF5ID0gbmV3IEZvcm1BcnJheTxGb3JtR3JvdXA+KFtdKTtcclxuICAgICAgcmV0dXJuIHByZXBhcmVBcnJheShuZXdBcnJheSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcHJlcGFyZUFycmF5ID0gKGFycmF5OiBGb3JtQXJyYXkpOiBGb3JtQXJyYXlXaXRoRmFjdG9yeSA9PiB7XHJcbiAgICAgIGNvbnN0IGR5bmFtaWNBcnJheSA9IGFycmF5IGFzIEZvcm1BcnJheVdpdGhGYWN0b3J5O1xyXG4gICAgICBkeW5hbWljQXJyYXkuYWRkSXRlbSA9IGFkZEl0ZW07XHJcbiAgICAgIGR5bmFtaWNBcnJheS5jcmVhdGVJdGVtID0gY3JlYXRlSXRlbTtcclxuICAgICAgZHluYW1pY0FycmF5LnJlc2l6ZSA9IHJlc2l6ZTtcclxuICAgICAgZHluYW1pY0FycmF5LmNyZWF0ZU5ld0FycmF5ID0gY3JlYXRlTmV3QXJyYXk7XHJcbiAgICAgIHJldHVybiBkeW5hbWljQXJyYXk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcmVzaXplID0gZnVuY3Rpb24gKHRoaXM6IEZvcm1BcnJheSwgc2l6ZTogbnVtYmVyKSB7XHJcbiAgICAgIGlmIChoYXNGYWN0b3J5KHRoaXMpKSB7XHJcbiAgICAgICAgY29uc3QgbmV3QXJyYXkgPSByZXNpemVGb3JtQXJyYXkodGhpcywgc2l6ZSk7XHJcbiAgICAgICAgcHJlcGFyZUFycmF5KG5ld0FycmF5KTtcclxuICAgICAgICBmb3JtR3JvdXAuc2V0Q29udHJvbChpdGVtQ29tcG9uZW50LmtleSwgbmV3QXJyYXkpO1xyXG4gICAgICB9ICAgICAgXHJcbiAgICB9O1xyXG5cclxuICAgIC8vIHVzZWQgZXh0ZXJuYWxseTogYWRkSXRlbSwgcmVzaXplXHJcblxyXG4gICAgcmV0dXJuIHByZXBhcmVBcnJheShmb3JtQXJyYXkpOyAgICBcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVzaXplRm9ybUFycmF5KGZvcm1BcnJheTogRm9ybUFycmF5V2l0aEZhY3RvcnksIHNpemU6IG51bWJlcik6IEZvcm1BcnJheSB7XHJcbiAgICBpZiAoZm9ybUFycmF5Lmxlbmd0aCA8IHNpemUpIHtcclxuICAgICAgY29uc3QgbmV3QXJyYXkgPSBuZXcgRm9ybUFycmF5KGZvcm1BcnJheS5jb250cm9scyk7XHJcbiAgICAgIHdoaWxlIChmb3JtQXJyYXkubGVuZ3RoIDwgc2l6ZSkge1xyXG4gICAgICAgIGZvcm1BcnJheS5hZGRJdGVtKCk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIG5ld0FycmF5O1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZm9ybUFycmF5Lmxlbmd0aCA+IHNpemUpIHtcclxuICAgICAgcmV0dXJuIG5ldyBGb3JtQXJyYXkoZm9ybUFycmF5LmNvbnRyb2xzLnNsaWNlKDAsIHNpemUpKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm4gZm9ybUFycmF5O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRDb250YWluZXJzKGNvbXBvbmVudDogYW55KTogeyBwYXRoOiBhbnk7IHJvd3M6IGFueSwgZGlzYWJsZWQ6IGFueSB9W10ge1xyXG4gICAgaWYgKGNvbXBvbmVudC50eXBlID09PSAnZ3JvdXAnKSB7XHJcbiAgICAgIHJldHVybiBbe1xyXG4gICAgICAgIHBhdGg6IGNvbXBvbmVudC5wYXRoLFxyXG4gICAgICAgIHJvd3M6IGNvbXBvbmVudC5yb3dzLFxyXG4gICAgICAgIGRpc2FibGVkOiBjb21wb25lbnQuZGlzYWJsZWRcclxuICAgICAgfV07XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICgoY29tcG9uZW50LnR5cGUgPT09ICd0YWInIHx8IGNvbXBvbmVudC50eXBlID09PSAnYWNjb3JkaW9uJylcclxuICAgICAgJiYgQXJyYXkuaXNBcnJheShjb21wb25lbnQucGFuZWxzKSkge1xyXG4gICAgICByZXR1cm4gY29tcG9uZW50LnBhbmVscy5tYXAoKHBhbmVsOiBhbnkpID0+ICh7XHJcbiAgICAgICAgcGF0aDogcGFuZWwucGF0aCxcclxuICAgICAgICByb3dzOiB0aGlzLm1ldGFkYXRhLmdldEZvcm1CeU5hbWUocGFuZWwudGVtcGxhdGUpPy5yb3dzID8/IFtdLFxyXG4gICAgICAgIGRpc2FibGVkOiBwYW5lbC5kaXNhYmxlZFxyXG4gICAgICB9KSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChjb21wb25lbnQudHlwZSA9PT0gJ3RlbXBsYXRlaG9zdCcpIHtcclxuICAgICAgcmV0dXJuIFt7XHJcbiAgICAgICAgcGF0aDogY29tcG9uZW50LnBhdGgsXHJcbiAgICAgICAgcm93czogdGhpcy5tZXRhZGF0YS5nZXRGb3JtQnlOYW1lKGNvbXBvbmVudC50ZW1wbGF0ZSk/LnJvd3MgPz8gW10sXHJcbiAgICAgICAgZGlzYWJsZWQ6IGNvbXBvbmVudC5kaXNhYmxlZFxyXG4gICAgICB9XTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm4gW107XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldERlZmF1bHRWYWx1ZShjb21wb25lbnQ6IGFueSk6IGFueSB7XHJcbiAgICBzd2l0Y2ggKGNvbXBvbmVudC50eXBlKSB7XHJcbiAgICAgIGNhc2UgXCJ0ZXh0YXJlYVwiOlxyXG4gICAgICBjYXNlIFwidGV4dGZpZWxkXCI6XHJcbiAgICAgIGNhc2UgXCJyYWRpb1wiOlxyXG4gICAgICBjYXNlIFwic2VsZWN0XCI6XHJcbiAgICAgICAgcmV0dXJuIGNvbXBvbmVudC5kZWZhdWx0VmFsdWUgYXMgc3RyaW5nO1xyXG4gICAgICBjYXNlIFwibnVtYmVyXCI6XHJcbiAgICAgICAgcmV0dXJuIGNvbXBvbmVudC5kZWZhdWx0VmFsdWUgYXMgbnVtYmVyO1xyXG4gICAgICBjYXNlIFwiY2hlY2tib3hcIjpcclxuICAgICAgICByZXR1cm4gKGNvbXBvbmVudC5kZWZhdWx0VmFsdWUgPz8gZmFsc2UpIGFzIGJvb2xlYW47XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFVwZGF0ZU9uKGNvbXBvbmVudDogYW55KTogXCJjaGFuZ2VcIiB8IFwiYmx1clwiIHwgbnVsbCB7XHJcbiAgICBpZiAoY29tcG9uZW50LnVwZGF0ZU9uID09PSAnY2hhbmdlJyB8fCBjb21wb25lbnQudXBkYXRlT24gPT09ICdibHVyJylcclxuICAgICAgcmV0dXJuIGNvbXBvbmVudC51cGRhdGVPbjtcclxuXHJcbiAgICBzd2l0Y2ggKGNvbXBvbmVudC50eXBlKSB7XHJcbiAgICAgIGNhc2UgXCJudW1iZXJcIjpcclxuICAgICAgY2FzZSBcInRleHRhcmVhXCI6XHJcbiAgICAgIGNhc2UgXCJ0ZXh0ZmllbGRcIjpcclxuICAgICAgICByZXR1cm4gXCJibHVyXCI7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gaGFzRmFjdG9yeShhcnJheTogRm9ybUFycmF5KTogYXJyYXkgaXMgRm9ybUFycmF5V2l0aEZhY3Rvcnkge1xyXG4gIGlmICghYXJyYXkpIHJldHVybiBmYWxzZTtcclxuICBjb25zdCBjdXJyZW50ID0gYXJyYXkgYXMgYW55O1xyXG4gIHJldHVybiB0eXBlb2YgY3VycmVudC5jcmVhdGVJdGVtID09PSAnZnVuY3Rpb24nXHJcbiAgICAmJiB0eXBlb2YgY3VycmVudC5hZGRJdGVtID09PSAnZnVuY3Rpb24nXHJcbiAgICAmJiB0eXBlb2YgY3VycmVudC5yZXNpemUgPT09ICdmdW5jdGlvbidcclxuICAgICYmIHR5cGVvZiBjdXJyZW50LmNyZWF0ZU5ld0FycmF5ID09PSAnZnVuY3Rpb24nXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRm9ybUFycmF5V2l0aEZhY3RvcnkgZXh0ZW5kcyBGb3JtQXJyYXkge1xyXG4gIGNyZWF0ZUl0ZW0oYWRkVG9BcnJheTogYm9vbGVhbik6IEZvcm1Hcm91cDtcclxuICBhZGRJdGVtKCk6IEZvcm1Hcm91cDtcclxuICByZXNpemUoc2l6ZTogbnVtYmVyKTogdm9pZDtcclxuICBjcmVhdGVOZXdBcnJheSgpOiBGb3JtQXJyYXlXaXRoRmFjdG9yeVxyXG59XHJcbiJdfQ==
|
|
310
|
+
}], ctorParameters: () => [{ type: i1.ValidationService }, { type: i2.DisableService }, { type: i3.ComputeService }, { type: i4.StatusService }, { type: i5.EventService }, { type: i6.MetadataService }, { type: i7.LifetimeService }, { type: i0.DestroyRef }] });
|
|
311
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvc2VydmljZXMvYnVpbGRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkQsT0FBTyxFQUFtQixXQUFXLEVBQXNCLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBTzdGLE9BQU8sRUFBRSxXQUFXLEVBQWlCLE1BQU0sc0JBQXNCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7Ozs7QUFJaEUsTUFBTSxPQUFPLGtCQUFrQjtJQUduQjtJQUNFO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBUlosWUFDVSxpQkFBb0MsRUFDbEMsY0FBOEIsRUFDOUIsY0FBOEIsRUFDOUIsYUFBNEIsRUFDNUIsWUFBMEIsRUFDMUIsUUFBeUIsRUFDekIsUUFBb0MsRUFDcEMsVUFBc0I7UUFQeEIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNsQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBQ3pCLGFBQVEsR0FBUixRQUFRLENBQTRCO1FBQ3BDLGVBQVUsR0FBVixVQUFVLENBQVk7SUFDbEMsQ0FBQztJQUVELFNBQVMsQ0FBQyxTQUFvQixFQUFFLEtBQWlCLEVBQUUsWUFBMkIsU0FBUztRQUNyRixNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxnQkFBZ0IsRUFB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Q0FBQyxTQUFjO1FBQ2hDLElBQUksU0FBUyxDQUFDLFFBQVEsS0FBSyxRQUFRLElBQUksU0FBUyxDQUFDLFFBQVEsS0FBSyxNQUFNO1lBQ2xFLE9BQU8sU0FBUyxDQUFDLFFBQVEsQ0FBQztRQUU1QixRQUFRLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN2QixLQUFLLFFBQVEsQ0FBQztZQUNkLEtBQUssVUFBVSxDQUFDO1lBQ2hCLEtBQUssV0FBVztnQkFDZCxPQUFPLE1BQU0sQ0FBQztZQUNoQjtnQkFDRSxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO0lBQ0gsQ0FBQzt3R0EvVVUsa0JBQWtCOzRHQUFsQixrQkFBa0I7OzRGQUFsQixrQkFBa0I7a0JBRDlCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZXN0cm95UmVmLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUNvbnRyb2wsIEZvcm1Db250cm9sT3B0aW9ucywgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBWYWxpZGF0aW9uQ29sbGVjdGlvbiwgVmFsaWRhdGlvblNlcnZpY2UgfSBmcm9tICcuL3ZhbGlkYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IERpc2FibGVDb2xsZWN0aW9uLCBEaXNhYmxlU2VydmljZSB9IGZyb20gJy4vZGlzYWJsZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29tcHV0ZUNvbGxlY3Rpb24sIENvbXB1dGVTZXJ2aWNlIH0gZnJvbSAnLi9jb21wdXRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdGF0dXNDb2xsZWN0aW9uLCBTdGF0dXNTZXJ2aWNlIH0gZnJvbSAnLi9zdGF0dXMuc2VydmljZSc7XHJcbmltcG9ydCB7IEV2ZW50Q29sbGVjdGlvbiwgRXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi9ldmVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTWV0YWRhdGFTZXJ2aWNlIH0gZnJvbSAnLi9tZXRhZGF0YS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwRXgsIEZvcm1Hcm91cE1vZGUgfSBmcm9tICcuLi91dGlscy9Gb3JtR3JvdXBFeCc7XHJcbmltcG9ydCB7IEZvcm1BcnJheUV4IH0gZnJvbSAnLi4vdXRpbHMvRm9ybUFycmF5RXgnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XHJcbmltcG9ydCB7IExpZmV0aW1lU2VydmljZSB9IGZyb20gJy4vbGlmZXRpbWUuc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBGb3JtQnVpbGRlclNlcnZpY2UgIHtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHZhbGlkYXRpb25TZXJ2aWNlOiBWYWxpZGF0aW9uU2VydmljZVxyXG4gICAgLCBwcml2YXRlIGRpc2FibGVTZXJ2aWNlOiBEaXNhYmxlU2VydmljZVxyXG4gICAgLCBwcml2YXRlIGNvbXB1dGVTZXJ2aWNlOiBDb21wdXRlU2VydmljZVxyXG4gICAgLCBwcml2YXRlIHN0YXR1c1NlcnZpY2U6IFN0YXR1c1NlcnZpY2VcclxuICAgICwgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZVxyXG4gICAgLCBwcml2YXRlIG1ldGFkYXRhOiBNZXRhZGF0YVNlcnZpY2VcclxuICAgICwgcHJpdmF0ZSBsaWZldGltZTogTGlmZXRpbWVTZXJ2aWNlPEZvcm1Hcm91cD5cclxuICAgICwgcHJpdmF0ZSBkZXN0cm95UmVmOiBEZXN0cm95UmVmKSB7XHJcbiAgfVxyXG5cclxuICBidWlsZEZvcm0oZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGZvcm1zOiBBcnJheTxhbnk+LCBncm91cE1vZGU6IEZvcm1Hcm91cE1vZGUgPSBcImRlZmF1bHRcIikge1xyXG4gICAgY29uc3QgdmFsaWRhdGlvbkNvbGxlY3Rpb24gPSB0aGlzLnZhbGlkYXRpb25TZXJ2aWNlLmNyZWF0ZUNvbGxlY3Rpb24oKTtcclxuICAgIGNvbnN0IGRpc2FibGVDb2xsZWN0aW9uID0gdGhpcy5kaXNhYmxlU2VydmljZS5jcmVhdGVDb2xsZWN0aW9uKCk7XHJcbiAgICBjb25zdCBldmVudENvbGxlY3Rpb24gPSB0aGlzLmV2ZW50U2VydmljZS5jcmVhdGVDb2xsZWN0aW9uKCk7XHJcbiAgICBjb25zdCBjb21wdXRlQ29sbGVjdGlvbiA9IHRoaXMuY29tcHV0ZVNlcnZpY2UuY3JlYXRlQ29sbGVjdGlvbigpO1xyXG4gICAgZm9ybXMuZm9yRWFjaCgoZm9ybTogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHN0YXR1c0NvbGxlY3Rpb24gPSB0aGlzLnN0YXR1c1NlcnZpY2UuY3JlYXRlQ29sbGVjdGlvbihmb3JtKTtcclxuICAgICAgY29uc3QgY3VycmVudEdyb3VwID0gdGhpcy5hcHBseVBhdGgoZm9ybUdyb3VwLCBmb3JtLnBhdGgsIGdyb3VwTW9kZSk7XHJcbiAgICAgIGlmICh0aGlzLmhhc1BhdGgoZm9ybS5wYXRoKSkge1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZVNlcnZpY2UuYWRkVG9Db2xsZWN0aW9uKGRpc2FibGVDb2xsZWN0aW9uLCBjdXJyZW50R3JvdXAsIGZvcm1Hcm91cCwgZm9ybSk7XHJcbiAgICAgIH1cclxuICAgICAgZm9ybS5yb3dzPy5mb3JFYWNoKChyb3c6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuYWRkQ29udHJvbHMoY3VycmVudEdyb3VwLCByb3cuY29tcG9uZW50cywgZ3JvdXBNb2RlXHJcbiAgICAgICAgICAsIGRpc2FibGVDb2xsZWN0aW9uXHJcbiAgICAgICAgICAsIGNvbXB1dGVDb2xsZWN0aW9uXHJcbiAgICAgICAgICAsIHZhbGlkYXRpb25Db2xsZWN0aW9uXHJcbiAgICAgICAgICAsIHN0YXR1c0NvbGxlY3Rpb25cclxuICAgICAgICAgICwgZXZlbnRDb2xsZWN0aW9uKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuc3RhdHVzU2VydmljZS5zZXR1cENvbGxlY3Rpb24oc3RhdHVzQ29sbGVjdGlvbik7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuZGlzYWJsZVNlcnZpY2Uuc2V0dXBDb2xsZWN0aW9uKGRpc2FibGVDb2xsZWN0aW9uKTtcclxuICAgIHRoaXMuY29tcHV0ZVNlcnZpY2Uuc2V0dXBDb2xsZWN0aW9uKGNvbXB1dGVDb2xsZWN0aW9uKTtcclxuICAgIHRoaXMudmFsaWRhdGlvblNlcnZpY2Uuc2V0dXBDb2xsZWN0aW9uKHZhbGlkYXRpb25Db2xsZWN0aW9uKTtcclxuICAgIHRoaXMuZXZlbnRTZXJ2aWNlLnNldHVwQ29sbGVjdGlvbihldmVudENvbGxlY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYXNQYXRoKHZhbHVlOiBzdHJpbmcgfCBudWxsKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiB2YWx1ZS50cmltKCkubGVuZ3RoID4gMDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXBwbHlQYXRoKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBwYXRoOiBzdHJpbmcsIGdyb3VwTW9kZTogRm9ybUdyb3VwTW9kZSkge1xyXG4gICAgaWYgKCF0aGlzLmhhc1BhdGgocGF0aCkpIHtcclxuICAgICAgcmV0dXJuIGZvcm1Hcm91cDtcclxuICAgIH1cclxuICAgIGxldCBjdXJyZW50R3JvdXA6IEZvcm1Hcm91cCA9IGZvcm1Hcm91cDtcclxuICAgIHRoaXMuc3BsaXRQYXRoKHBhdGgpLmZvckVhY2goKHNlZ21lbnQpID0+IHtcclxuICAgICAgY29uc3QgZXhpc3RHcm91cCA9IGN1cnJlbnRHcm91cC5nZXQoc2VnbWVudCk7XHJcbiAgICAgIGlmIChleGlzdEdyb3VwIGluc3RhbmNlb2YgRm9ybUdyb3VwKSB7XHJcbiAgICAgICAgY3VycmVudEdyb3VwID0gZXhpc3RHcm91cDtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoZXhpc3RHcm91cCkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGNyZWF0ZSBmb3JtIGdyb3VwIGJlY2F1c2UgYW4gZWxlbWVudCB3aXRoIHBhdGggJHtzZWdtZW50fSBhbHJlYWR5IGV4aXN0c2ApO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IHNlZ21lbnRHcm91cCA9IHRoaXMuY3JlYXRlRm9ybUdyb3VwKGdyb3VwTW9kZSk7XHJcbiAgICAgICAgY3VycmVudEdyb3VwLmFkZENvbnRyb2woc2VnbWVudCwgc2VnbWVudEdyb3VwKTtcclxuICAgICAgICBjdXJyZW50R3JvdXAgPSBzZWdtZW50R3JvdXA7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGN1cnJlbnRHcm91cDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3BsaXRQYXRoKHBhdGg6IHN0cmluZyk6IHN0cmluZ1tdIHtcclxuICAgIGlmICghcGF0aCkge1xyXG4gICAgICByZXR1cm4gW107XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcGF0aFxyXG4gICAgICAuc3BsaXQoJy4nKVxyXG4gICAgICAubWFwKHNlZ21lbnQgPT4gc2VnbWVudC50cmltKCkpXHJcbiAgICAgIC5maWx0ZXIoc2VnbWVudCA9PiBzZWdtZW50Lmxlbmd0aCA+IDApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVGb3JtR3JvdXAoZ3JvdXBNb2RlOiBGb3JtR3JvdXBNb2RlKTogRm9ybUdyb3VwIHtcclxuICAgIHJldHVybiAoZ3JvdXBNb2RlID09PSBcImRlZmF1bHRcIilcclxuICAgICAgPyBuZXcgRm9ybUdyb3VwKHt9KVxyXG4gICAgICA6IG5ldyBGb3JtR3JvdXBFeCh7fSwgZ3JvdXBNb2RlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRkQ29udHJvbHMoZm9ybUdyb3VwOiBGb3JtR3JvdXBcclxuICAgICwgY29tcG9uZW50czogQXJyYXk8YW55PlxyXG4gICAgLCBncm91cE1vZGU6IEZvcm1Hcm91cE1vZGVcclxuICAgICwgZGlzYWJsZUNvbGxlY3Rpb246IERpc2FibGVDb2xsZWN0aW9uXHJcbiAgICAsIGNvbXB1dGVDb2xsZWN0aW9uOiBDb21wdXRlQ29sbGVjdGlvblxyXG4gICAgLCB2YWxpZGF0aW9uQ29sbGVjdGlvbjogVmFsaWRhdGlvbkNvbGxlY3Rpb25cclxuICAgICwgc3RhdHVzQ29sbGVjdGlvbjogU3RhdHVzQ29sbGVjdGlvblxyXG4gICAgLCBldmVudENvbGxlY3Rpb246IEV2ZW50Q29sbGVjdGlvbikge1xyXG4gICAgbGV0IGZvcm1Db21wb25lbnQgPSB0aGlzO1xyXG5cclxuICAgIGNvbXBvbmVudHM/LmZvckVhY2goKGNvbXBvbmVudDogYW55KSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmlzRm9ybUNvbXBvbmVudChjb21wb25lbnQpKSB7XHJcbiAgICAgICAgY29uc3QgY3VycmVudEdyb3VwID0gdGhpcy5hcHBseVBhdGgoZm9ybUdyb3VwLCBjb21wb25lbnQucGF0aCwgZ3JvdXBNb2RlKTtcclxuICAgICAgICBpZiAoY3VycmVudEdyb3VwLmNvbnRhaW5zKGNvbXBvbmVudC5rZXkpKSB7XHJcbiAgICAgICAgICB0aGlzLnN0YXR1c1NlcnZpY2UuYWRkVG9Db2xsZWN0aW9uKHN0YXR1c0NvbGxlY3Rpb24sIGN1cnJlbnRHcm91cC5nZXQoY29tcG9uZW50LmtleSkgYXMgQWJzdHJhY3RDb250cm9sLCBjb21wb25lbnQpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGxldCBkZWZhdWx0VmFsdWUgPSB0aGlzLmdldERlZmF1bHRWYWx1ZShjb21wb25lbnQpO1xyXG4gICAgICAgICAgY29uc3Qgb3B0aW9uczogRm9ybUNvbnRyb2xPcHRpb25zID0ge1xyXG4gICAgICAgICAgICB1cGRhdGVPbjogdGhpcy5nZXRVcGRhdGVPbihjb21wb25lbnQpIHx8IFwiY2hhbmdlXCIsXHJcbiAgICAgICAgICAgIG5vbk51bGxhYmxlOiAoZGVmYXVsdFZhbHVlICE9PSBudWxsICYmIGRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkKVxyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woZGVmYXVsdFZhbHVlLCBvcHRpb25zKTtcclxuICAgICAgICAgIGN1cnJlbnRHcm91cC5hZGRDb250cm9sKGNvbXBvbmVudC5rZXksIGNvbnRyb2wpO1xyXG4gICAgICAgICAgdGhpcy52YWxpZGF0aW9uU2VydmljZS5hZGRUb0NvbGxlY3Rpb24odmFsaWRhdGlvbkNvbGxlY3Rpb24sIGNvbnRyb2wsIGN1cnJlbnRHcm91cCwgY29tcG9uZW50KTtcclxuICAgICAgICAgIHRoaXMuc3RhdHVzU2VydmljZS5hZGRUb0NvbGxlY3Rpb24oc3RhdHVzQ29sbGVjdGlvbiwgY29udHJvbCwgY29tcG9uZW50KTtcclxuICAgICAgICAgIHRoaXMuZGlzYWJsZVNlcnZpY2UuYWRkVG9Db2xsZWN0aW9uKGRpc2FibGVDb2xsZWN0aW9uLCBjb250cm9sLCBmb3JtR3JvdXAsIGNvbXBvbmVudCk7XHJcbiAgICAgICAgICB0aGlzLmNvbXB1dGVTZXJ2aWNlLmFkZFRvQ29sbGVjdGlvbihjb21wdXRlQ29sbGVjdGlvbiwgY29udHJvbCwgZm9ybUdyb3VwLCBjb21wb25lbnQpO1xyXG4gICAgICAgICAgdGhpcy5ldmVudFNlcnZpY2UuYWRkVG9Db2xsZWN0aW9uKGV2ZW50Q29sbGVjdGlvbiwgY29udHJvbCwgY3VycmVudEdyb3VwLCBjb21wb25lbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLmlzQ29udGFpbmVyQ29tcG9uZW50KGNvbXBvbmVudCkpIHtcclxuICAgICAgICBjb25zdCBjb250YWluZXJzID0gdGhpcy5nZXRDb250YWluZXJzKGNvbXBvbmVudCk7XHJcbiAgICAgICAgY29udGFpbmVycz8uZm9yRWFjaCgoY29udGFpbmVyKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBjdXJyZW50R3JvdXAgPSB0aGlzLmFwcGx5UGF0aChmb3JtR3JvdXAsIGNvbnRhaW5lci5wYXRoLCBncm91cE1vZGUpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuaGFzUGF0aChjb250YWluZXIucGF0aCkpIHtcclxuICAgICAgICAgICAgdGhpcy5kaXNhYmxlU2VydmljZS5hZGRUb0NvbGxlY3Rpb24oZGlzYWJsZUNvbGxlY3Rpb24sIGN1cnJlbnRHcm91cCwgZm9ybUdyb3VwLCBjb250YWluZXIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29udGFpbmVyLnJvd3M/LmZvckVhY2goKHJvdzogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGZvcm1Db21wb25lbnQuYWRkQ29udHJvbHMoY3VycmVudEdyb3VwLCByb3cuY29tcG9uZW50cywgZ3JvdXBNb2RlXHJcbiAgICAgICAgICAgICAgLCBkaXNhYmxlQ29sbGVjdGlvblxyXG4gICAgICAgICAgICAgICwgY29tcHV0ZUNvbGxlY3Rpb25cclxuICAgICAgICAgICAgICAsIHZhbGlkYXRpb25Db2xsZWN0aW9uXHJcbiAgICAgICAgICAgICAgLCBzdGF0dXNDb2xsZWN0aW9uXHJcbiAgICAgICAgICAgICAgLCBldmVudENvbGxlY3Rpb24pO1xyXG4gICAgICAgICAgfSk7ICAgICAgICAgIFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMuaXNBcnJheUNvbXBvbmVudChjb21wb25lbnQpKSB7XHJcbiAgICAgICAgY29uc3QgaXRlbUNvbXBvbmVudCA9IHRoaXMuZ2V0QXJyYXlJdGVtKGNvbXBvbmVudCk7XHJcbiAgICAgICAgaWYgKGl0ZW1Db21wb25lbnQua2V5KSB7XHJcbiAgICAgICAgICBjb25zdCBjdXJyZW50R3JvdXAgPSB0aGlzLmFwcGx5UGF0aChmb3JtR3JvdXAsIGl0ZW1Db21wb25lbnQucGF0aCwgZ3JvdXBNb2RlKTtcclxuICAgICAgICAgIGNvbnN0IGZvcm1BcnJheSA9IHRoaXMuY3JlYXRlRm9ybUFycmF5KGN1cnJlbnRHcm91cCwgaXRlbUNvbXBvbmVudCwgZ3JvdXBNb2RlLCBzdGF0dXNDb2xsZWN0aW9uKTtcclxuICAgICAgICAgIHRoaXMudmFsaWRhdGlvblNlcnZpY2UuYWRkVG9Db2xsZWN0aW9uKHZhbGlkYXRpb25Db2xsZWN0aW9uLCBmb3JtQXJyYXksIGN1cnJlbnRHcm91cCwgY29tcG9uZW50KTtcclxuICAgICAgICAgIHRoaXMuc3RhdHVzU2VydmljZS5hZGRUb0NvbGxlY3Rpb24oc3RhdHVzQ29sbGVjdGlvbiwgZm9ybUFycmF5LCBjb21wb25lbnQpO1xyXG4gICAgICAgICAgdGhpcy5ldmVudFNlcnZpY2UuYWRkVG9Db2xsZWN0aW9uKGV2ZW50Q29sbGVjdGlvbiwgZm9ybUFycmF5LCBjdXJyZW50R3JvdXAsIGNvbXBvbmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMuaXNDb21wb25lbnRXaXRoSW5wdXQoY29tcG9uZW50KSkge1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRHcm91cCA9IHRoaXMuYXBwbHlQYXRoKGZvcm1Hcm91cCwgY29tcG9uZW50LnBhdGgsIGdyb3VwTW9kZSk7XHJcbiAgICAgICAgaWYgKGN1cnJlbnRHcm91cC5jb250YWlucyhjb21wb25lbnQua2V5KSkge1xyXG4gICAgICAgICAgY29uc3QgY29udHJvbCA9IGN1cnJlbnRHcm91cC5nZXQoY29tcG9uZW50LmtleSkgYXMgQWJzdHJhY3RDb250cm9sO1xyXG4gICAgICAgICAgdGhpcy52YWxpZGF0aW9uU2VydmljZS5hZGRUb0NvbGxlY3Rpb24odmFsaWRhdGlvbkNvbGxlY3Rpb24sIGNvbnRyb2wsIGN1cnJlbnRHcm91cCwgY29tcG9uZW50KTtcclxuICAgICAgICAgIHRoaXMuc3RhdHVzU2VydmljZS5hZGRUb0NvbGxlY3Rpb24oc3RhdHVzQ29sbGVjdGlvbiwgY29udHJvbCwgY29tcG9uZW50KTtcclxuICAgICAgICAgIHRoaXMuZGlzYWJsZVNlcnZpY2UuYWRkVG9Db2xsZWN0aW9uKGRpc2FibGVDb2xsZWN0aW9uLCBjb250cm9sLCBjdXJyZW50R3JvdXAsIGNvbXBvbmVudCk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgY29uc3QgY29udHJvbCA9IG5ldyBGb3JtQ29udHJvbChudWxsKTtcclxuICAgICAgICAgIGN1cnJlbnRHcm91cC5hZGRDb250cm9sKGNvbXBvbmVudC5rZXksIGNvbnRyb2wpO1xyXG4gICAgICAgICAgdGhpcy52YWxpZGF0aW9uU2VydmljZS5hZGRUb0NvbGxlY3Rpb24odmFsaWRhdGlvbkNvbGxlY3Rpb24sIGNvbnRyb2wsIGN1cnJlbnRHcm91cCwgY29tcG9uZW50KTtcclxuICAgICAgICAgIHRoaXMuc3RhdHVzU2VydmljZS5hZGRUb0NvbGxlY3Rpb24oc3RhdHVzQ29sbGVjdGlvbiwgY29udHJvbCwgY29tcG9uZW50KTtcclxuICAgICAgICAgIHRoaXMuZGlzYWJsZVNlcnZpY2UuYWRkVG9Db2xsZWN0aW9uKGRpc2FibGVDb2xsZWN0aW9uLCBjb250cm9sLCBjdXJyZW50R3JvdXAsIGNvbXBvbmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNGb3JtQ29tcG9uZW50KGNvbXBvbmVudDogYW55KTogYm9vbGVhbiB7XHJcbiAgICBzd2l0Y2ggKGNvbXBvbmVudC50eXBlKSB7XHJcbiAgICAgIGNhc2UgXCJjaGVja2JveFwiOlxyXG4gICAgICBjYXNlIFwiY2hlY2tsaXN0XCI6XHJcbiAgICAgIGNhc2UgXCJkYXRldGltZVwiOlxyXG4gICAgICBjYXNlIFwiZmlsZXBpY2tlclwiOlxyXG4gICAgICBjYXNlIFwibnVtYmVyXCI6XHJcbiAgICAgIGNhc2UgXCJyYWRpb1wiOlxyXG4gICAgICBjYXNlIFwic2VsZWN0XCI6XHJcbiAgICAgIGNhc2UgXCJ0YWdsaXN0XCI6XHJcbiAgICAgIGNhc2UgXCJ0ZXh0YXJlYVwiOlxyXG4gICAgICBjYXNlIFwidGV4dGZpZWxkXCI6XHJcbiAgICAgIGNhc2UgXCJyYW5nZVwiOlxyXG4gICAgICBjYXNlIFwiZXhwcmVzc2lvblwiOlxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNDb250YWluZXJDb21wb25lbnQoY29tcG9uZW50OiBhbnkpOiBib29sZWFuIHtcclxuICAgIHN3aXRjaCAoY29tcG9uZW50LnR5cGUpIHtcclxuICAgICAgY2FzZSBcImdyb3VwXCI6XHJcbiAgICAgIGNhc2UgXCJ0YWJcIjpcclxuICAgICAgY2FzZSBcImFjY29yZGlvblwiOlxyXG4gICAgICBjYXNlIFwidGVtcGxhdGVob3N0XCI6XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0NvbXBvbmVudFdpdGhJbnB1dChjb21wb25lbnQ6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGNvbXBvbmVudC50eXBlID09PSBcImNvbXBvbmVudFwiXHJcbiAgICAgICYmIGNvbXBvbmVudC5pc0lucHV0ID09PSB0cnVlXHJcbiAgICAgICYmIGNvbXBvbmVudC5rZXk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzQXJyYXlDb21wb25lbnQoY29tcG9uZW50OiBhbnkpOiBib29sZWFuIHtcclxuICAgIHN3aXRjaCAoY29tcG9uZW50LnR5cGUpIHtcclxuICAgICAgY2FzZSBcImR5bmFtaWNsaXN0XCI6XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRBcnJheUl0ZW0oY29tcG9uZW50OiBhbnkpOiB7IGtleTogYW55OyBwYXRoOiBhbnk7IHJvd3M6IGFueSB9IHtcclxuICAgIGlmIChjb21wb25lbnQudHlwZSA9PT0gJ2R5bmFtaWNsaXN0Jykge1xyXG4gICAgICByZXR1cm4geyBrZXk6IGNvbXBvbmVudC5rZXksIHBhdGg6IGNvbXBvbmVudC5wYXRoLCByb3dzOiBjb21wb25lbnQucm93cyB9O1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiB7IGtleTogbnVsbCwgcGF0aDogbnVsbCwgcm93czogW10gfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlRm9ybUFycmF5KGZvcm1Hcm91cDogRm9ybUdyb3VwXHJcbiAgICAsIGl0ZW1Db21wb25lbnQ6IGFueVxyXG4gICAgLCBncm91cE1vZGU6IEZvcm1Hcm91cE1vZGVcclxuICAgICwgc3RhdHVzQ29sbGVjdGlvbjogU3RhdHVzQ29sbGVjdGlvbik6IEZvcm1BcnJheUV4PEZvcm1Hcm91cD4ge1xyXG4gICAgY29uc3QgZm9ybUNvbXBvbmVudCA9IHRoaXM7XHJcblxyXG4gICAgY29uc3QgbGlmZXRpbWUgPSB0aGlzLmxpZmV0aW1lO1xyXG5cclxuICAgIGNvbnN0IHNldHVwSXRlbSA9IGZ1bmN0aW9uIChmb3JtR3JvdXA6IEZvcm1Hcm91cCk6IHZvaWQge1xyXG4gICAgICBjb25zdCBzdGF0dXNJdGVtQ29sbGVjdGlvbiA9IHN0YXR1c0NvbGxlY3Rpb24uY3JlYXRlQ29sbGVjdGlvbihmb3JtR3JvdXApO1xyXG4gICAgICBjb25zdCB2YWxpZGF0aW9uQ29sbGVjdGlvbiA9IGZvcm1Db21wb25lbnQudmFsaWRhdGlvblNlcnZpY2UuY3JlYXRlQ29sbGVjdGlvbigpO1xyXG4gICAgICBjb25zdCBldmVudENvbGxlY3Rpb24gPSBmb3JtQ29tcG9uZW50LmV2ZW50U2VydmljZS5jcmVhdGVDb2xsZWN0aW9uKCk7XHJcbiAgICAgIGNvbnN0IGRpc2FibGVDb2xsZWN0aW9uID0gZm9ybUNvbXBvbmVudC5kaXNhYmxlU2VydmljZS5jcmVhdGVDb2xsZWN0aW9uKCk7XHJcbiAgICAgIGNvbnN0IGNvbXB1dGVDb2xsZWN0aW9uID0gZm9ybUNvbXBvbmVudC5jb21wdXRlU2VydmljZS5jcmVhdGVDb2xsZWN0aW9uKCk7XHJcbiAgICAgIGl0ZW1Db21wb25lbnQucm93cz8uZm9yRWFjaCgocm93OiBhbnkpID0+IHtcclxuICAgICAgICBmb3JtQ29tcG9uZW50LmFkZENvbnRyb2xzKGZvcm1Hcm91cCwgcm93LmNvbXBvbmVudHMsIGdyb3VwTW9kZVxyXG4gICAgICAgICAgLCBkaXNhYmxlQ29sbGVjdGlvblxyXG4gICAgICAgICAgLCBjb21wdXRlQ29sbGVjdGlvblxyXG4gICAgICAgICAgLCB2YWxpZGF0aW9uQ29sbGVjdGlvblxyXG4gICAgICAgICAgLCBzdGF0dXNJdGVtQ29sbGVjdGlvblxyXG4gICAgICAgICAgLCBldmVudENvbGxlY3Rpb24pO1xyXG4gICAgICB9KTtcclxuICAgICAgY29uc3QgZGVzdHJveVJlZiA9IGxpZmV0aW1lLnJlc29sdmUoZm9ybUdyb3VwKTtcclxuICAgICAgZm9ybUNvbXBvbmVudC5kaXNhYmxlU2VydmljZS5zZXR1cENvbGxlY3Rpb24oZGlzYWJsZUNvbGxlY3Rpb24sIGRlc3Ryb3lSZWYpO1xyXG4gICAgICBmb3JtQ29tcG9uZW50LmNvbXB1dGVTZXJ2aWNlLnNldHVwQ29sbGVjdGlvbihjb21wdXRlQ29sbGVjdGlvbiwgZGVzdHJveVJlZik7XHJcbiAgICAgIGZvcm1Db21wb25lbnQudmFsaWRhdGlvblNlcnZpY2Uuc2V0dXBDb2xsZWN0aW9uKHZhbGlkYXRpb25Db2xsZWN0aW9uLCBkZXN0cm95UmVmKTtcclxuICAgICAgZm9ybUNvbXBvbmVudC5ldmVudFNlcnZpY2Uuc2V0dXBDb2xsZWN0aW9uKGV2ZW50Q29sbGVjdGlvbiwgZGVzdHJveVJlZik7XHJcbiAgICAgIGZvcm1Db21wb25lbnQuc3RhdHVzU2VydmljZS5zZXR1cENvbGxlY3Rpb24oc3RhdHVzSXRlbUNvbGxlY3Rpb24sIGRlc3Ryb3lSZWYpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNsZWFudXBJdGVtID0gZnVuY3Rpb24gKGZvcm1Hcm91cDogRm9ybUdyb3VwKTogdm9pZCB7XHJcbiAgICAgIHN0YXR1c0NvbGxlY3Rpb24ucmVtb3ZlQ29sbGVjdGlvbihmb3JtR3JvdXApO1xyXG4gICAgICBsaWZldGltZS5kZXN0cm95KGZvcm1Hcm91cCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZXhpc3RpbmcgPSBmb3JtR3JvdXAuZ2V0KGl0ZW1Db21wb25lbnQua2V5KTtcclxuXHJcbiAgICBsZXQgZm9ybUFycmF5OiBGb3JtQXJyYXlFeDxGb3JtR3JvdXA+IHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgaWYgKGV4aXN0aW5nIGluc3RhbmNlb2YgRm9ybUFycmF5RXgpIHtcclxuICAgICAgZm9ybUFycmF5ID0gZXhpc3Rpbmc7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgZm9ybUFycmF5ID0gbmV3IEZvcm1BcnJheUV4PEZvcm1Hcm91cD4oW10pO1xyXG4gICAgICBmb3JtR3JvdXAuYWRkQ29udHJvbChpdGVtQ29tcG9uZW50LmtleSwgZm9ybUFycmF5KTtcclxuICAgIH1cclxuXHJcbiAgICBmb3JtQXJyYXkuY29udHJvbHNDaGFuZ2VzXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZShlID0+IHtcclxuICAgICAgICBpZiAoZT8udHlwZSA9PSBcImFkZFwiKVxyXG4gICAgICAgICAgc2V0dXBJdGVtKGUuY29udHJvbCk7XHJcbiAgICAgICAgZWxzZSBpZiAoZT8udHlwZSA9PSBcInJlbW92ZVwiKVxyXG4gICAgICAgICAgY2xlYW51cEl0ZW0oZS5jb250cm9sKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIGZvcm1BcnJheTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0Q29udGFpbmVycyhjb21wb25lbnQ6IGFueSk6IHsgcGF0aDogYW55OyByb3dzOiBhbnksIGRpc2FibGVkOiBhbnkgfVtdIHtcclxuICAgIGlmIChjb21wb25lbnQudHlwZSA9PT0gJ2dyb3VwJykge1xyXG4gICAgICByZXR1cm4gW3tcclxuICAgICAgICBwYXRoOiBjb21wb25lbnQucGF0aCxcclxuICAgICAgICByb3dzOiBjb21wb25lbnQucm93cyxcclxuICAgICAgICBkaXNhYmxlZDogY29tcG9uZW50LmRpc2FibGVkXHJcbiAgICAgIH1dO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoKGNvbXBvbmVudC50eXBlID09PSAndGFiJyB8fCBjb21wb25lbnQudHlwZSA9PT0gJ2FjY29yZGlvbicpXHJcbiAgICAgICYmIEFycmF5LmlzQXJyYXkoY29tcG9uZW50LnBhbmVscykpIHtcclxuICAgICAgcmV0dXJuIGNvbXBvbmVudC5wYW5lbHMubWFwKChwYW5lbDogYW55KSA9PiAoe1xyXG4gICAgICAgIHBhdGg6IHBhbmVsLnBhdGgsXHJcbiAgICAgICAgcm93czogdGhpcy5tZXRhZGF0YS5nZXRGb3JtQnlOYW1lKHBhbmVsLnRlbXBsYXRlKT8ucm93cyA/PyBbXSxcclxuICAgICAgICBkaXNhYmxlZDogcGFuZWwuZGlzYWJsZWRcclxuICAgICAgfSkpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoY29tcG9uZW50LnR5cGUgPT09ICd0ZW1wbGF0ZWhvc3QnKSB7XHJcbiAgICAgIHJldHVybiBbe1xyXG4gICAgICAgIHBhdGg6IGNvbXBvbmVudC5wYXRoLFxyXG4gICAgICAgIHJvd3M6IHRoaXMubWV0YWRhdGEuZ2V0Rm9ybUJ5TmFtZShjb21wb25lbnQudGVtcGxhdGUpPy5yb3dzID8/IFtdLFxyXG4gICAgICAgIGRpc2FibGVkOiBjb21wb25lbnQuZGlzYWJsZWRcclxuICAgICAgfV07XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXREZWZhdWx0VmFsdWUoY29tcG9uZW50OiBhbnkpOiBhbnkge1xyXG4gICAgc3dpdGNoIChjb21wb25lbnQudHlwZSkge1xyXG4gICAgICBjYXNlIFwidGV4dGFyZWFcIjpcclxuICAgICAgY2FzZSBcInRleHRmaWVsZFwiOlxyXG4gICAgICBjYXNlIFwicmFkaW9cIjpcclxuICAgICAgY2FzZSBcInNlbGVjdFwiOlxyXG4gICAgICAgIHJldHVybiBjb21wb25lbnQuZGVmYXVsdFZhbHVlIGFzIHN0cmluZztcclxuICAgICAgY2FzZSBcIm51bWJlclwiOlxyXG4gICAgICAgIHJldHVybiBjb21wb25lbnQuZGVmYXVsdFZhbHVlIGFzIG51bWJlcjtcclxuICAgICAgY2FzZSBcImNoZWNrYm94XCI6XHJcbiAgICAgICAgcmV0dXJuIChjb21wb25lbnQuZGVmYXVsdFZhbHVlID8/IGZhbHNlKSBhcyBib29sZWFuO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRVcGRhdGVPbihjb21wb25lbnQ6IGFueSk6IFwiY2hhbmdlXCIgfCBcImJsdXJcIiB8IG51bGwge1xyXG4gICAgaWYgKGNvbXBvbmVudC51cGRhdGVPbiA9PT0gJ2NoYW5nZScgfHwgY29tcG9uZW50LnVwZGF0ZU9uID09PSAnYmx1cicpXHJcbiAgICAgIHJldHVybiBjb21wb25lbnQudXBkYXRlT247XHJcblxyXG4gICAgc3dpdGNoIChjb21wb25lbnQudHlwZSkge1xyXG4gICAgICBjYXNlIFwibnVtYmVyXCI6XHJcbiAgICAgIGNhc2UgXCJ0ZXh0YXJlYVwiOlxyXG4gICAgICBjYXNlIFwidGV4dGZpZWxkXCI6XHJcbiAgICAgICAgcmV0dXJuIFwiYmx1clwiO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -18,16 +18,16 @@ export class ComputeService {
|
|
|
18
18
|
collection.set(control, { component, parentGroup });
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
|
-
setupCollection(collection) {
|
|
21
|
+
setupCollection(collection, destroyRef) {
|
|
22
22
|
collection.forEach((computeContext, control) => {
|
|
23
|
-
this.applyExpression(control, computeContext);
|
|
23
|
+
this.applyExpression(control, computeContext, destroyRef);
|
|
24
24
|
});
|
|
25
25
|
}
|
|
26
26
|
canAddToCollection(component) {
|
|
27
27
|
const expression = component?.expression;
|
|
28
28
|
return this.programmability.isExpression(expression);
|
|
29
29
|
}
|
|
30
|
-
applyExpression(control, context) {
|
|
30
|
+
applyExpression(control, context, destroyRef) {
|
|
31
31
|
const formGroup = context.parentGroup;
|
|
32
32
|
const { key, expression, conditional } = context.component ?? {};
|
|
33
33
|
const deactivate = conditional?.hide;
|
|
@@ -44,12 +44,12 @@ export class ComputeService {
|
|
|
44
44
|
if (this.programmability.isExpression(expression)) {
|
|
45
45
|
const applyExpression = () => {
|
|
46
46
|
if (this.programmability.isExpression(deactivate)) {
|
|
47
|
-
const isDeactivate = this.programmability.evaluateBoolean(formGroup, deactivate, { cacheable: false });
|
|
47
|
+
const isDeactivate = this.programmability.evaluateBoolean(formGroup, deactivate, { cacheable: false, destroyRef: destroyRef });
|
|
48
48
|
if (!!isDeactivate) {
|
|
49
49
|
return;
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
|
-
const result = this.programmability.evaluate(formGroup, expression, { cacheable: false });
|
|
52
|
+
const result = this.programmability.evaluate(formGroup, expression, { cacheable: false, destroyRef: destroyRef });
|
|
53
53
|
assignValue(result);
|
|
54
54
|
};
|
|
55
55
|
const dependencies = this.programmability.getDependencies(formGroup, toFeelable({
|
|
@@ -59,7 +59,7 @@ export class ComputeService {
|
|
|
59
59
|
if (dependencies.length > 0) {
|
|
60
60
|
this.programmability.watch(formGroup, dependencies, () => {
|
|
61
61
|
setTimeout(() => applyExpression());
|
|
62
|
-
});
|
|
62
|
+
}, destroyRef);
|
|
63
63
|
}
|
|
64
64
|
setTimeout(() => applyExpression());
|
|
65
65
|
}
|
|
@@ -74,4 +74,4 @@ export class ComputeService {
|
|
|
74
74
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ComputeService, decorators: [{
|
|
75
75
|
type: Injectable
|
|
76
76
|
}], ctorParameters: () => [{ type: i1.ProgrammabilityService }, { type: i2.FormService }] });
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHV0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvc2VydmljZXMvY29tcHV0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7O0FBRy9DLE1BQU0sT0FBTyxjQUFjO0lBR2Y7SUFDRTtJQUZaLFlBQ1UsZUFBdUMsRUFDckMsV0FBd0I7UUFEMUIsb0JBQWUsR0FBZixlQUFlLENBQXdCO1FBQ3JDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO0lBQ3BDLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxPQUFPLElBQUksR0FBRyxFQUFtQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxlQUFlLENBQUMsVUFBNkIsRUFBRSxPQUF3QixFQUNuRSxXQUFzQixFQUFFLFNBQWM7UUFFeEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDbkUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUN0RCxDQUFDO0lBQ0gsQ0FBQztJQUVELGVBQWUsQ0FBQyxVQUE2QixFQUFFLFVBQXVCO1FBQ3BFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxjQUFjLEVBQUUsT0FBTyxFQUFFLEVBQUU7WUFDN0MsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsY0FBYyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzVELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGtCQUFrQixDQUFDLFNBQWM7UUFDdkMsTUFBTSxVQUFVLEdBQUcsU0FBUyxFQUFF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QUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckQsQ0FBQzt3R0EvRVUsY0FBYzs0R0FBZCxjQUFjOzs0RkFBZCxjQUFjO2tCQUQxQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVzdHJveVJlZiwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBQcm9ncmFtbWFiaWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi9wcm9ncmFtbWFiaWxpdHkuc2VydmljZSc7XHJcbmltcG9ydCB7IEZvcm1TZXJ2aWNlIH0gZnJvbSAnLi9mb3JtLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgdG9GZWVsYWJsZSB9IGZyb20gJy4uL3V0aWxzL2ZlZWxhYmxlJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIENvbXB1dGVTZXJ2aWNlICB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBwcm9ncmFtbWFiaWxpdHk6IFByb2dyYW1tYWJpbGl0eVNlcnZpY2VcclxuICAgICwgcHJpdmF0ZSBmb3JtU2VydmljZTogRm9ybVNlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIGNyZWF0ZUNvbGxlY3Rpb24oKTogQ29tcHV0ZUNvbGxlY3Rpb24ge1xyXG4gICAgcmV0dXJuIG5ldyBNYXA8QWJzdHJhY3RDb250cm9sLCBDb21wdXRlQ29udGV4dD4oKTtcclxuICB9XHJcblxyXG4gIGFkZFRvQ29sbGVjdGlvbihjb2xsZWN0aW9uOiBDb21wdXRlQ29sbGVjdGlvbiwgY29udHJvbDogQWJzdHJhY3RDb250cm9sXHJcbiAgICAsIHBhcmVudEdyb3VwOiBGb3JtR3JvdXAsIGNvbXBvbmVudDogYW55KVxyXG4gIHtcclxuICAgIGlmICghY29sbGVjdGlvbi5oYXMoY29udHJvbCkgJiYgdGhpcy5jYW5BZGRUb0NvbGxlY3Rpb24oY29tcG9uZW50KSkge1xyXG4gICAgICBjb2xsZWN0aW9uLnNldChjb250cm9sLCB7IGNvbXBvbmVudCwgcGFyZW50R3JvdXAgfSk7XHJcbiAgICB9ICAgICAgXHJcbiAgfVxyXG5cclxuICBzZXR1cENvbGxlY3Rpb24oY29sbGVjdGlvbjogQ29tcHV0ZUNvbGxlY3Rpb24sIGRlc3Ryb3lSZWY/OiBEZXN0cm95UmVmKSB7XHJcbiAgICBjb2xsZWN0aW9uLmZvckVhY2goKGNvbXB1dGVDb250ZXh0LCBjb250cm9sKSA9PiB7XHJcbiAgICAgIHRoaXMuYXBwbHlFeHByZXNzaW9uKGNvbnRyb2wsIGNvbXB1dGVDb250ZXh0LCBkZXN0cm95UmVmKTsgICAgICBcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjYW5BZGRUb0NvbGxlY3Rpb24oY29tcG9uZW50OiBhbnkpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGV4cHJlc3Npb24gPSBjb21wb25lbnQ/LmV4cHJlc3Npb247XHJcbiAgICByZXR1cm4gdGhpcy5wcm9ncmFtbWFiaWxpdHkuaXNFeHByZXNzaW9uKGV4cHJlc3Npb24pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhcHBseUV4cHJlc3Npb24oY29udHJvbDogQWJzdHJhY3RDb250cm9sLCBjb250ZXh0OiBDb21wdXRlQ29udGV4dCwgZGVzdHJveVJlZj86IERlc3Ryb3lSZWYpOiB2b2lkIHtcclxuICAgIGNvbnN0IGZvcm1Hcm91cCA9IGNvbnRleHQucGFyZW50R3JvdXA7XHJcblxyXG4gICAgY29uc3Qge1xyXG4gICAgICBrZXlcclxuICAgICAgLCBleHByZXNzaW9uXHJcbiAgICAgICwgY29uZGl0aW9uYWwgfSA9IGNvbnRleHQuY29tcG9uZW50ID8/IHt9O1xyXG5cclxuICAgIGNvbnN0IGRlYWN0aXZhdGUgPSBjb25kaXRpb25hbD8uaGlkZTtcclxuXHJcbiAgICBjb25zdCBsb2dDb21wdXRlZCA9ICh2YWx1ZTogYW55KSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy5wcm9ncmFtbWFiaWxpdHkudmVyYm9zZSkgcmV0dXJuO1xyXG4gICAgICBjb25zb2xlLmxvZyhcIkNvbXB1dGVcIiwgY29udHJvbCwgeyB2YWx1ZTogdmFsdWUsIHBhdGg6IHRoaXMuZ2V0UGF0aChjb250cm9sKSwgZm9ybUdyb3VwIH0pO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IGFzc2lnblZhbHVlID0gKHZhbHVlOiBhbnkpID0+IHtcclxuICAgICAgbG9nQ29tcHV0ZWQodmFsdWUpO1xyXG4gICAgICB0aGlzLmZvcm1TZXJ2aWNlLnBhdGNoKGNvbnRyb2wsIHZhbHVlLCB7IHN0cmljdDogZmFsc2UgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZW9mIGV4cHJlc3Npb24gPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIGlmICh0aGlzLnByb2dyYW1tYWJpbGl0eS5pc0V4cHJlc3Npb24oZXhwcmVzc2lvbikpIHtcclxuICAgICAgICBjb25zdCBhcHBseUV4cHJlc3Npb24gPSAoKSA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy5wcm9ncmFtbWFiaWxpdHkuaXNFeHByZXNzaW9uKGRlYWN0aXZhdGUpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGlzRGVhY3RpdmF0ZSA9IHRoaXMucHJvZ3JhbW1hYmlsaXR5LmV2YWx1YXRlQm9vbGVhbihmb3JtR3JvdXAsIGRlYWN0aXZhdGVcclxuICAgICAgICAgICAgICAsIHsgY2FjaGVhYmxlOiBmYWxzZSwgZGVzdHJveVJlZjogZGVzdHJveVJlZiB9KTtcclxuICAgICAgICAgICAgaWYgKCEhaXNEZWFjdGl2YXRlKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLnByb2dyYW1tYWJpbGl0eS5ldmFsdWF0ZShmb3JtR3JvdXAsIGV4cHJlc3Npb25cclxuICAgICAgICAgICAgLCB7IGNhY2hlYWJsZTogZmFsc2UsIGRlc3Ryb3lSZWY6IGRlc3Ryb3lSZWYgfSk7XHJcbiAgICAgICAgICBhc3NpZ25WYWx1ZShyZXN1bHQpO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29uc3QgZGVwZW5kZW5jaWVzID0gdGhpcy5wcm9ncmFtbWFiaWxpdHkuZ2V0RGVwZW5kZW5jaWVzKGZvcm1Hcm91cCwgdG9GZWVsYWJsZSh7XHJcbiAgICAgICAgICBleHByZXNzaW9uOiBleHByZXNzaW9uLFxyXG4gICAgICAgICAgZGVhY3RpdmF0ZTogZGVhY3RpdmF0ZVxyXG4gICAgICAgIH0pKS5maWx0ZXIoZGVwID0+IGRlcCAhPT0ga2V5KTtcclxuXHJcbiAgICAgICAgaWYgKGRlcGVuZGVuY2llcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICB0aGlzLnByb2dyYW1tYWJpbGl0eS53YXRjaChmb3JtR3JvdXAsIGRlcGVuZGVuY2llcywgKCkgPT4ge1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IGFwcGx5RXhwcmVzc2lvbigpKTtcclxuICAgICAgICAgIH0sIGRlc3Ryb3lSZWYpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IGFwcGx5RXhwcmVzc2lvbigpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRQYXRoKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtU2VydmljZS5nZXRQYXRoKGNvbnRyb2wpLmpvaW4oXCIuXCIpO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb21wdXRlQ29udGV4dCB7XHJcbiAgcGFyZW50R3JvdXA6IEZvcm1Hcm91cDtcclxuICBjb21wb25lbnQ6IGFueTtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgQ29tcHV0ZUNvbGxlY3Rpb24gPSBNYXA8QWJzdHJhY3RDb250cm9sLCBDb21wdXRlQ29udGV4dD47XHJcbiJdfQ==
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
|
+
import { SirioDialogService } from 'ngx-sirio-lib';
|
|
2
3
|
import { ToBoundArrows } from '../utils/bound';
|
|
3
4
|
import { DialogComponent } from '../dialog/dialog.component';
|
|
4
5
|
import { DynamicFormComponent } from '../dynamic-form/dynamic-form.component';
|
|
5
6
|
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "ngx-sirio-lib";
|
|
7
7
|
export class DialogService {
|
|
8
8
|
dialogService;
|
|
9
9
|
constructor(dialogService) {
|
|
@@ -158,7 +158,7 @@ export class DialogService {
|
|
|
158
158
|
};
|
|
159
159
|
return options;
|
|
160
160
|
}
|
|
161
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DialogService, deps: [{ token:
|
|
161
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DialogService, deps: [{ token: SirioDialogExService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
162
162
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DialogService, providedIn: 'root' });
|
|
163
163
|
}
|
|
164
164
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DialogService, decorators: [{
|
|
@@ -166,5 +166,36 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
166
166
|
args: [{
|
|
167
167
|
providedIn: 'root'
|
|
168
168
|
}]
|
|
169
|
-
}], ctorParameters: () => [{ type:
|
|
170
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2lyaW8vc3JjL2xpYi9zZXJ2aWNlcy9kaWFsb2cuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBR3JELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7OztBQUs5RSxNQUFNLE9BQU8sYUFBYTtJQUdkO0lBRFYsWUFDVSxhQUFpQztRQUFqQyxrQkFBYSxHQUFiLGFBQWEsQ0FBb0I7SUFFekMsQ0FBQztJQUVILFVBQVUsQ0FBQyxVQUFlLEVBQUUsT0FBMkI7UUFDckQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBWSxFQUFFLE9BQXVCO1FBQ3pDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQyxNQUFNLFdBQVcsR0FBdUI7WUFDdEMsR0FBRyxPQUFPO1lBQ1YsSUFBSSxFQUFFLFNBQVM7WUFDZixPQUFPLEVBQUUsSUFBSTtZQUNiLFFBQVEsRUFBRSxLQUFLO1lBQ2YsT0FBTyxFQUFFLEtBQUs7WUFDZCxhQUFhLEVBQUUsS0FBSztZQUNwQixZQUFZLEVBQUUsS0FBSztZQUNuQixhQUFhLEVBQUUsS0FBSztTQUNyQixDQUFDO1FBQ0YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDLENBQUM7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QUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNpcmlvRGlhbG9nU2VydmljZSwgRGlhbG9nVHlwZXMsIERpYWxvZ1NpemVzLCBCdXR0b25Db2xvcnMgfSBmcm9tICduZ3gtc2lyaW8tbGliJztcclxuaW1wb3J0IHsgSUV2YWx1YXRvclByb3ZpZGVyIH0gZnJvbSAnLi4vc2VydmljZXMvcHJvZ3JhbW1hYmlsaXR5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUb0JvdW5kQXJyb3dzIH0gZnJvbSAnLi4vdXRpbHMvYm91bmQnO1xyXG5pbXBvcnQgeyBEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9kaWFsb2cvZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IER5bmFtaWNGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi4vZHluYW1pYy1mb3JtL2R5bmFtaWMtZm9ybS5jb21wb25lbnQnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRGlhbG9nU2VydmljZSBpbXBsZW1lbnRzIElFdmFsdWF0b3JQcm92aWRlciB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBkaWFsb2dTZXJ2aWNlOiBTaXJpb0RpYWxvZ1NlcnZpY2VcclxuICAgIClcclxuICB7IH1cclxuXHJcbiAgb3BlbkRpYWxvZyhmb3JtU2NoZW1hOiBhbnksIG9wdGlvbnM/OiBGb3JtRGlhbG9nT3B0aW9ucykge1xyXG4gICAgdGhpcy5zaG93RGlhbG9nKGZvcm1TY2hlbWEsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgY2xvc2VEaWFsb2coKSB7XHJcbiAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuY2xvc2VEaWFsb2coKTtcclxuICB9XHJcblxyXG4gIGFsZXJ0KHRleHQ6IHN0cmluZywgb3B0aW9ucz86IERpYWxvZ09wdGlvbnMpIHtcclxuICAgIGNvbnN0IGZvcm1TY2hlbWEgPSB0aGlzLmNyZWF0ZVRleHRTY2hlbWEodGV4dCk7XHJcbiAgICBjb25zdCBmb3JtT3B0aW9ucyA6IEZvcm1EaWFsb2dPcHRpb25zID0ge1xyXG4gICAgICAuLi5vcHRpb25zLFxyXG4gICAgICB0eXBlOiBcIndhcm5pbmdcIixcclxuICAgICAgYnV0dG9uczogJ09LJyxcclxuICAgICAgaXNEcmF3ZXI6IGZhbHNlLFxyXG4gICAgICBzaG93TmF2OiBmYWxzZSxcclxuICAgICAgc2hvd05hdkJ1dHRvbjogZmFsc2UsXHJcbiAgICAgIHNob3dQcm9ncmVzczogZmFsc2UsXHJcbiAgICAgIHNob3dGb3JtVGl0bGU6IGZhbHNlXHJcbiAgICB9O1xyXG4gICAgdGhpcy5zaG93RGlhbG9nKGZvcm1TY2hlbWEsIGZvcm1PcHRpb25zKTtcclxuICB9XHJcblxyXG4gIGluZm8odGV4dDogc3RyaW5nLCBvcHRpb25zPzogRGlhbG9nT3B0aW9ucykge1xyXG4gICAgY29uc3QgZm9ybVNjaGVtYSA9IHRoaXMuY3JlYXRlVGV4dFNjaGVtYSh0ZXh0KTtcclxuICAgIGNvbnN0IGZvcm1PcHRpb25zOiBGb3JtRGlhbG9nT3B0aW9ucyA9IHtcclxuICAgICAgLi4ub3B0aW9ucyxcclxuICAgICAgdHlwZTogXCJpbmZvXCIsXHJcbiAgICAgIGJ1dHRvbnM6ICdPSycsXHJcbiAgICAgIGlzRHJhd2VyOiBmYWxzZSxcclxuICAgICAgc2hvd05hdjogZmFsc2UsXHJcbiAgICAgIHNob3dOYXZCdXR0b246IGZhbHNlLFxyXG4gICAgICBzaG93UHJvZ3Jlc3M6IGZhbHNlLFxyXG4gICAgICBzaG93Rm9ybVRpdGxlOiBmYWxzZVxyXG4gICAgfTtcclxuICAgIHRoaXMuc2hvd0RpYWxvZyhmb3JtU2NoZW1hLCBmb3JtT3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBjb25maXJtKHRleHQ6IHN0cmluZywgb3B0aW9ucz86IERpYWxvZ09wdGlvbnMpIHtcclxuICAgIGNvbnN0IGZvcm1TY2hlbWEgPSB0aGlzLmNyZWF0ZVRleHRTY2hlbWEodGV4dCk7XHJcbiAgICBjb25zdCBmb3JtT3B0aW9uczogRm9ybURpYWxvZ09wdGlvbnMgPSB7XHJcbiAgICAgIC4uLm9wdGlvbnMsXHJcbiAgICAgIHR5cGU6IFwiaW5mb1wiLFxyXG4gICAgICBidXR0b25zOiAnWWVzTm8nLFxyXG4gICAgICBpc0RyYXdlcjogZmFsc2UsXHJcbiAgICAgIHNob3dOYXY6IGZhbHNlLFxyXG4gICAgICBzaG93TmF2QnV0dG9uOiBmYWxzZSxcclxuICAgICAgc2hvd1Byb2dyZXNzOiBmYWxzZSxcclxuICAgICAgc2hvd0Zvcm1UaXRsZTogZmFsc2VcclxuICAgIH07ICAgIFxyXG4gICAgdGhpcy5zaG93RGlhbG9nKGZvcm1TY2hlbWEsIGZvcm1PcHRpb25zKTtcclxuICB9XHJcblxyXG4gIHNob3codGV4dDogc3RyaW5nLCBvcHRpb25zPzogRGlhbG9nT3B0aW9ucykge1xyXG4gICAgY29uc3QgZm9ybVNjaGVtYSA9IHRoaXMuY3JlYXRlVGV4dFNjaGVtYSh0ZXh0KTtcclxuICAgIGNvbnN0IGZvcm1PcHRpb25zOiBGb3JtRGlhbG9nT3B0aW9ucyA9IHtcclxuICAgICAgdHlwZTogXCJpbmZvXCIsXHJcbiAgICAgIGJ1dHRvbnM6ICdPSycsXHJcbiAgICAgIC4uLm9wdGlvbnMsXHJcbiAgICAgIGlzRHJhd2VyOiBmYWxzZSxcclxuICAgICAgc2hvd05hdjogZmFsc2UsXHJcbiAgICAgIHNob3dOYXZCdXR0b246IGZhbHNlLFxyXG4gICAgICBzaG93UHJvZ3Jlc3M6IGZhbHNlLFxyXG4gICAgICBzaG93Rm9ybVRpdGxlOiBmYWxzZVxyXG4gICAgfTtcclxuICAgIHRoaXMuc2hvd0RpYWxvZyhmb3JtU2NoZW1hLCBmb3JtT3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBwcm9tcHQodGV4dDogc3RyaW5nLCBkZWZhdWx0VmFsdWU/OiBzdHJpbmcsIG9wdGlvbnM/OiBEaWFsb2dPcHRpb25zKSB7XHJcbiAgICBjb25zdCBmb3JtU2NoZW1hID0gdGhpcy5jcmVhdGVJbnB1dFNjaGVtYSh0ZXh0LCBkZWZhdWx0VmFsdWUpO1xyXG4gICAgY29uc3QgZm9ybU9wdGlvbnM6IEZvcm1EaWFsb2dPcHRpb25zID0ge1xyXG4gICAgICAuLi5vcHRpb25zLFxyXG4gICAgICB0eXBlOiBcImluZm9cIixcclxuICAgICAgYnV0dG9uczogJ09LQ2FuY2VsJyxcclxuICAgICAgaXNEcmF3ZXI6IGZhbHNlLFxyXG4gICAgICBzaG93TmF2OiBmYWxzZSxcclxuICAgICAgc2hvd05hdkJ1dHRvbjogZmFsc2UsXHJcbiAgICAgIHNob3dQcm9ncmVzczogZmFsc2UsXHJcbiAgICAgIHNob3dGb3JtVGl0bGU6IGZhbHNlXHJcbiAgICB9O1xyXG4gICAgdGhpcy5zaG93RGlhbG9nKGZvcm1TY2hlbWEsIGZvcm1PcHRpb25zKTtcclxuICB9XHJcblxyXG4gIGdldENvbnRleHQoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XHJcbiAgICByZXR1cm4gVG9Cb3VuZEFycm93cyh0aGlzLCBbXHJcbiAgICAgICdvcGVuRGlhbG9nJyxcclxuICAgICAgJ2Nsb3NlRGlhbG9nJyxcclxuICAgICAgJ2FsZXJ0JyxcclxuICAgICAgJ2luZm8nLFxyXG4gICAgICAnY29uZmlybScsXHJcbiAgICAgICdzaG93J1xyXG4gICAgXSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNob3dEaWFsb2coZm9ybVNjaGVtYTogYW55LCBvcHRpb25zPzogRm9ybURpYWxvZ09wdGlvbnMpIHtcclxuXHJcbiAgICBvcHRpb25zID0gdGhpcy5lbnN1cmVDbG9zYWJsZShvcHRpb25zKTtcclxuXHJcbiAgICBjb25zdCBkYXRhID0ge1xyXG4gICAgICBmb3JtU2NoZW1hLFxyXG4gICAgICBvcHRpb25zLFxyXG4gICAgICBkeW5hbWljRm9ybVR5cGU6IER5bmFtaWNGb3JtQ29tcG9uZW50XHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMuZGlhbG9nU2VydmljZVxyXG4gICAgICAub3BlbkRpYWxvZyhEaWFsb2dDb21wb25lbnQsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVUZXh0U2NoZW1hKHRleHQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgXCJmb3Jtc1wiOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgXCJjb21wb25lbnRzXCI6IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIFwidGV4dFwiOiB0ZXh0LFxyXG4gICAgICAgICAgICAgIFwidHlwZVwiOiBcInRleHRcIixcclxuICAgICAgICAgICAgICBcImxheW91dFwiOiB7XHJcbiAgICAgICAgICAgICAgICBcInJvd1wiOiBcIlJvd18xNHo5bXlvXCIsXHJcbiAgICAgICAgICAgICAgICBcImNvbHVtbnNcIjogbnVsbFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgXCJpZFwiOiBcIkZpZWxkXzF4aWJwMnJcIlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICBdLFxyXG4gICAgICAgICAgXCJ0eXBlXCI6IFwiZGVmYXVsdFwiLFxyXG4gICAgICAgICAgXCJpZFwiOiBcIkZvcm1fMGxvdG0yaFwiLFxyXG4gICAgICAgICAgXCJzY2hlbWFWZXJzaW9uXCI6IDE4XHJcbiAgICAgICAgfVxyXG4gICAgICBdXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZUlucHV0U2NoZW1hKGxhYmVsOiBzdHJpbmcsIGRlZmF1bHRWYWx1ZT86IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgXCJmb3Jtc1wiOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgXCJjb21wb25lbnRzXCI6IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIFwibGFiZWxcIjogbGFiZWwsXHJcbiAgICAgICAgICAgICAgXCJkZWZhdWx0VmFsdWVcIjogZGVmYXVsdFZhbHVlLFxyXG4gICAgICAgICAgICAgIFwidHlwZVwiOiBcInRleHRmaWVsZFwiLFxyXG4gICAgICAgICAgICAgIFwibGF5b3V0XCI6IHtcclxuICAgICAgICAgICAgICAgIFwicm93XCI6IFwiUm93XzF3eHo1Z2RcIixcclxuICAgICAgICAgICAgICAgIFwiY29sdW1uc1wiOiBudWxsXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBcImlkXCI6IFwiRmllbGRfMXRhdTUzeFwiLFxyXG4gICAgICAgICAgICAgIFwia2V5XCI6IFwiaW5wdXRcIlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICBdLFxyXG4gICAgICAgICAgXCJ0eXBlXCI6IFwiZGVmYXVsdFwiLFxyXG4gICAgICAgICAgXCJpZFwiOiBcIkZvcm1fMW9udHdueFwiLFxyXG4gICAgICAgICAgXCJzY2hlbWFWZXJzaW9uXCI6IDE4XHJcbiAgICAgICAgfVxyXG4gICAgICBdXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlbnN1cmVDbG9zYWJsZShvcHRpb25zPzogRm9ybURpYWxvZ09wdGlvbnMpOiBGb3JtRGlhbG9nT3B0aW9ucyB7XHJcblxyXG4gICAgb3B0aW9ucyA9IHtcclxuICAgICAgLi4ub3B0aW9ucyxcclxuICAgICAgY2xvc2VCdXR0b246XHJcbiAgICAgICAgb3B0aW9ucz8uYnV0dG9ucyA9PSBudWxsID8gdHJ1ZSA6IG9wdGlvbnMuY2xvc2VCdXR0b25cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gb3B0aW9ucztcclxuICB9XHJcblxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIERpYWxvZ09wdGlvbnMge1xyXG4gIHR5cGU/OiBEaWFsb2dUeXBlcztcclxuICBzaXplPzogRGlhbG9nU2l6ZXM7XHJcbiAgdGl0bGU/OiBzdHJpbmc7XHJcbiAgaXNEcmF3ZXI/OiBib29sZWFuOyAgXHJcbiAgY2xvc2VCdXR0b24/OiBib29sZWFuO1xyXG4gIGJ1dHRvbnM/OiBEaWFsb2dCdXR0b25zO1xyXG4gIGN1c3RvbUJ1dHRvbnM/OiBDdXN0b21CdXR0b25bXSxcclxuICBrZWVwT3Blbj86IGJvb2xlYW4sXHJcbiAgb25SZXN1bHQ/OiAocmVzdWx0OiBEaWFsb2dSZXN1bHQpID0+IHZvaWQ7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRm9ybURpYWxvZ09wdGlvbnMgZXh0ZW5kcyBEaWFsb2dPcHRpb25zIHtcclxuICB2YWx1ZT86IGFueTtcclxuICBpbmplY3Rvcj86IEluamVjdG9yO1xyXG4gIHNob3dOYXY/OiBib29sZWFuO1xyXG4gIHNob3dOYXZCdXR0b24/OiBib29sZWFuO1xyXG4gIHNob3dQcm9ncmVzcz86IGJvb2xlYW47XHJcbiAgc2hvd0Zvcm1UaXRsZT86IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRGlhbG9nUmVzdWx0IHtcclxuICBhY3Rpb246IERpYWxvZ0FjdGlvbiB8IHN0cmluZztcclxuICB2YWx1ZT86IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDdXN0b21CdXR0b24ge1xyXG4gIHRleHQ6IHN0cmluZyxcclxuICBjb2xvcjogQnV0dG9uQ29sb3JzLFxyXG4gIGFjdGlvbjogc3RyaW5nXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIERpYWxvZ0FjdGlvbiA9ICdPSydcclxuICB8ICdDYW5jZWwnXHJcbiAgfCAnWWVzJ1xyXG4gIHwgJ05vJ1xyXG4gIHwgJ0NvbmZpcm0nXHJcbiAgfCAnQ2xvc2UnXHJcbiAgfCAnQWJvcnQnXHJcbiAgfCAnUmV0cnknXHJcbiAgfCAnSWdub3JlJ1xyXG4gIHwgJ1RyeSdcclxuICB8ICdDb250aW51ZSc7XHJcblxyXG5leHBvcnQgdHlwZSBEaWFsb2dCdXR0b25zID0gJ09LJ1xyXG4gIHwgJ09LQ2FuY2VsJ1xyXG4gIHwgJ0NvbmZpcm1DYW5jZWwnXHJcbiAgfCAnQWJvcnRSZXRyeUlnbm9yZSdcclxuICB8ICdZZXNOb0NhbmNlbCdcclxuICB8ICdZZXNObydcclxuICB8ICdSZXRyeUNhbmNlbCdcclxuICB8ICdDYW5jZWxUcnlDb250aW51ZSdcclxuICB8ICdDdXN0b20nO1xyXG4iXX0=
|
|
169
|
+
}], ctorParameters: () => [{ type: SirioDialogExService }] });
|
|
170
|
+
export class SirioDialogExService extends SirioDialogService {
|
|
171
|
+
// Fix for multiple dialog opening
|
|
172
|
+
dialogsStack = [];
|
|
173
|
+
openDialog(component, data) {
|
|
174
|
+
if (this.dialogComponentRef) {
|
|
175
|
+
this.dialogsStack.push({
|
|
176
|
+
componentRef: this.dialogComponentRef,
|
|
177
|
+
htmlRef: this.dialogComponentHTMLRef
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
const dialogElement = super.openDialog(component, data);
|
|
181
|
+
return dialogElement;
|
|
182
|
+
}
|
|
183
|
+
closeDialog() {
|
|
184
|
+
const result = super.closeDialog();
|
|
185
|
+
const dialog = this.dialogsStack.pop();
|
|
186
|
+
if (dialog?.componentRef) {
|
|
187
|
+
this.dialogComponentRef = dialog.componentRef;
|
|
188
|
+
this.dialogComponentHTMLRef = dialog.htmlRef;
|
|
189
|
+
}
|
|
190
|
+
return result;
|
|
191
|
+
}
|
|
192
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SirioDialogExService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
|
|
193
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SirioDialogExService, providedIn: 'root' });
|
|
194
|
+
}
|
|
195
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SirioDialogExService, decorators: [{
|
|
196
|
+
type: Injectable,
|
|
197
|
+
args: [{
|
|
198
|
+
providedIn: 'root'
|
|
199
|
+
}]
|
|
200
|
+
}] });
|
|
201
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2lyaW8vc3JjL2xpYi9zZXJ2aWNlcy9kaWFsb2cuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLFVBQVUsRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFDekUsT0FBTyxFQUFFLGtCQUFrQixFQUE4RCxNQUFNLGVBQWUsQ0FBQztBQUUvRyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDOztBQUs5RSxNQUFNLE9BQU8sYUFBYTtJQUdkO0lBRFYsWUFDVSxhQUFtQztRQUFuQyxrQkFBYSxHQUFiLGFBQWEsQ0FBc0I7SUFFM0MsQ0FBQztJQUVILFVBQVUsQ0FBQyxVQUFlLEVBQUUsT0FBMkI7UUFDckQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBWSxFQUFFLE9BQXVCO1FBQ3pDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQyxNQUFNLFdBQVcsR0FBdUI7WUFDdEMsR0FBRyxPQUFPO1lBQ1YsSUFBSSxFQUFFLFNBQVM7WUFDZixPQUFPLEVBQUUsSUFBSTtZQUNiLFFBQVEsRUFBRSxLQUFLO1lBQ2YsT0FBTyxFQUFFLEtBQUs7WUFDZCxhQUFhLEVBQUUsS0FBSztZQUNwQixZQUFZLEVBQUUsS0FBSztZQUNuQixhQUFhLEVBQUUsS0FBSztTQUNyQixDQUFDO1FBQ0Ys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RkFFUCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7QUEwT0QsTUFBTSxPQUFPLG9CQUFxQixTQUFRLGtCQUFrQjtJQUUxRCxrQ0FBa0M7SUFFMUIsWUFBWSxHQUFrQixFQUFFLENBQUM7SUFFaEMsVUFBVSxDQUFDLFNBQW1DLEVBQUUsSUFBVTtRQUVqRSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO2dCQUNyQixZQUFZLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjtnQkFDckMsT0FBTyxFQUFFLElBQUksQ0FBQyxzQkFBc0I7YUFDckMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRXhELE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7SUFFUSxXQUFXO1FBQ2xCLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUVuQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRXZDLElBQUksTUFBTSxFQUFFLFlBQVksRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDO1lBQzlDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDO1FBQy9DLENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO3dHQS9CVSxvQkFBb0I7NEdBQXBCLG9CQUFvQixjQUZuQixNQUFNOzs0RkFFUCxvQkFBb0I7a0JBSGhDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50UmVmLCBJbmplY3RhYmxlLCBJbmplY3RvciwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTaXJpb0RpYWxvZ1NlcnZpY2UsIERpYWxvZ1R5cGVzLCBEaWFsb2dTaXplcywgQnV0dG9uQ29sb3JzLCBTaXJpb0RpYWxvZ0VsZW1lbnQgfSBmcm9tICduZ3gtc2lyaW8tbGliJztcclxuaW1wb3J0IHsgSUV2YWx1YXRvclByb3ZpZGVyIH0gZnJvbSAnLi4vc2VydmljZXMvcHJvZ3JhbW1hYmlsaXR5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUb0JvdW5kQXJyb3dzIH0gZnJvbSAnLi4vdXRpbHMvYm91bmQnO1xyXG5pbXBvcnQgeyBEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9kaWFsb2cvZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IER5bmFtaWNGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi4vZHluYW1pYy1mb3JtL2R5bmFtaWMtZm9ybS5jb21wb25lbnQnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRGlhbG9nU2VydmljZSBpbXBsZW1lbnRzIElFdmFsdWF0b3JQcm92aWRlciB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBkaWFsb2dTZXJ2aWNlOiBTaXJpb0RpYWxvZ0V4U2VydmljZVxyXG4gICAgKVxyXG4gIHsgfVxyXG5cclxuICBvcGVuRGlhbG9nKGZvcm1TY2hlbWE6IGFueSwgb3B0aW9ucz86IEZvcm1EaWFsb2dPcHRpb25zKSB7XHJcbiAgICB0aGlzLnNob3dEaWFsb2coZm9ybVNjaGVtYSwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBjbG9zZURpYWxvZygpIHtcclxuICAgIHRoaXMuZGlhbG9nU2VydmljZS5jbG9zZURpYWxvZygpO1xyXG4gIH1cclxuXHJcbiAgYWxlcnQodGV4dDogc3RyaW5nLCBvcHRpb25zPzogRGlhbG9nT3B0aW9ucykge1xyXG4gICAgY29uc3QgZm9ybVNjaGVtYSA9IHRoaXMuY3JlYXRlVGV4dFNjaGVtYSh0ZXh0KTtcclxuICAgIGNvbnN0IGZvcm1PcHRpb25zIDogRm9ybURpYWxvZ09wdGlvbnMgPSB7XHJcbiAgICAgIC4uLm9wdGlvbnMsXHJcbiAgICAgIHR5cGU6IFwid2FybmluZ1wiLFxyXG4gICAgICBidXR0b25zOiAnT0snLFxyXG4gICAgICBpc0RyYXdlcjogZmFsc2UsXHJcbiAgICAgIHNob3dOYXY6IGZhbHNlLFxyXG4gICAgICBzaG93TmF2QnV0dG9uOiBmYWxzZSxcclxuICAgICAgc2hvd1Byb2dyZXNzOiBmYWxzZSxcclxuICAgICAgc2hvd0Zvcm1UaXRsZTogZmFsc2VcclxuICAgIH07XHJcbiAgICB0aGlzLnNob3dEaWFsb2coZm9ybVNjaGVtYSwgZm9ybU9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgaW5mbyh0ZXh0OiBzdHJpbmcsIG9wdGlvbnM/OiBEaWFsb2dPcHRpb25zKSB7XHJcbiAgICBjb25zdCBmb3JtU2NoZW1hID0gdGhpcy5jcmVhdGVUZXh0U2NoZW1hKHRleHQpO1xyXG4gICAgY29uc3QgZm9ybU9wdGlvbnM6IEZvcm1EaWFsb2dPcHRpb25zID0ge1xyXG4gICAgICAuLi5vcHRpb25zLFxyXG4gICAgICB0eXBlOiBcImluZm9cIixcclxuICAgICAgYnV0dG9uczogJ09LJyxcclxuICAgICAgaXNEcmF3ZXI6IGZhbHNlLFxyXG4gICAgICBzaG93TmF2OiBmYWxzZSxcclxuICAgICAgc2hvd05hdkJ1dHRvbjogZmFsc2UsXHJcbiAgICAgIHNob3dQcm9ncmVzczogZmFsc2UsXHJcbiAgICAgIHNob3dGb3JtVGl0bGU6IGZhbHNlXHJcbiAgICB9O1xyXG4gICAgdGhpcy5zaG93RGlhbG9nKGZvcm1TY2hlbWEsIGZvcm1PcHRpb25zKTtcclxuICB9XHJcblxyXG4gIGNvbmZpcm0odGV4dDogc3RyaW5nLCBvcHRpb25zPzogRGlhbG9nT3B0aW9ucykge1xyXG4gICAgY29uc3QgZm9ybVNjaGVtYSA9IHRoaXMuY3JlYXRlVGV4dFNjaGVtYSh0ZXh0KTtcclxuICAgIGNvbnN0IGZvcm1PcHRpb25zOiBGb3JtRGlhbG9nT3B0aW9ucyA9IHtcclxuICAgICAgLi4ub3B0aW9ucyxcclxuICAgICAgdHlwZTogXCJpbmZvXCIsXHJcbiAgICAgIGJ1dHRvbnM6ICdZZXNObycsXHJcbiAgICAgIGlzRHJhd2VyOiBmYWxzZSxcclxuICAgICAgc2hvd05hdjogZmFsc2UsXHJcbiAgICAgIHNob3dOYXZCdXR0b246IGZhbHNlLFxyXG4gICAgICBzaG93UHJvZ3Jlc3M6IGZhbHNlLFxyXG4gICAgICBzaG93Rm9ybVRpdGxlOiBmYWxzZVxyXG4gICAgfTsgICAgXHJcbiAgICB0aGlzLnNob3dEaWFsb2coZm9ybVNjaGVtYSwgZm9ybU9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgc2hvdyh0ZXh0OiBzdHJpbmcsIG9wdGlvbnM/OiBEaWFsb2dPcHRpb25zKSB7XHJcbiAgICBjb25zdCBmb3JtU2NoZW1hID0gdGhpcy5jcmVhdGVUZXh0U2NoZW1hKHRleHQpO1xyXG4gICAgY29uc3QgZm9ybU9wdGlvbnM6IEZvcm1EaWFsb2dPcHRpb25zID0ge1xyXG4gICAgICB0eXBlOiBcImluZm9cIixcclxuICAgICAgYnV0dG9uczogJ09LJyxcclxuICAgICAgLi4ub3B0aW9ucyxcclxuICAgICAgaXNEcmF3ZXI6IGZhbHNlLFxyXG4gICAgICBzaG93TmF2OiBmYWxzZSxcclxuICAgICAgc2hvd05hdkJ1dHRvbjogZmFsc2UsXHJcbiAgICAgIHNob3dQcm9ncmVzczogZmFsc2UsXHJcbiAgICAgIHNob3dGb3JtVGl0bGU6IGZhbHNlXHJcbiAgICB9O1xyXG4gICAgdGhpcy5zaG93RGlhbG9nKGZvcm1TY2hlbWEsIGZvcm1PcHRpb25zKTtcclxuICB9XHJcblxyXG4gIHByb21wdCh0ZXh0OiBzdHJpbmcsIGRlZmF1bHRWYWx1ZT86IHN0cmluZywgb3B0aW9ucz86IERpYWxvZ09wdGlvbnMpIHtcclxuICAgIGNvbnN0IGZvcm1TY2hlbWEgPSB0aGlzLmNyZWF0ZUlucHV0U2NoZW1hKHRleHQsIGRlZmF1bHRWYWx1ZSk7XHJcbiAgICBjb25zdCBmb3JtT3B0aW9uczogRm9ybURpYWxvZ09wdGlvbnMgPSB7XHJcbiAgICAgIC4uLm9wdGlvbnMsXHJcbiAgICAgIHR5cGU6IFwiaW5mb1wiLFxyXG4gICAgICBidXR0b25zOiAnT0tDYW5jZWwnLFxyXG4gICAgICBpc0RyYXdlcjogZmFsc2UsXHJcbiAgICAgIHNob3dOYXY6IGZhbHNlLFxyXG4gICAgICBzaG93TmF2QnV0dG9uOiBmYWxzZSxcclxuICAgICAgc2hvd1Byb2dyZXNzOiBmYWxzZSxcclxuICAgICAgc2hvd0Zvcm1UaXRsZTogZmFsc2VcclxuICAgIH07XHJcbiAgICB0aGlzLnNob3dEaWFsb2coZm9ybVNjaGVtYSwgZm9ybU9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29udGV4dCgpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcclxuICAgIHJldHVybiBUb0JvdW5kQXJyb3dzKHRoaXMsIFtcclxuICAgICAgJ29wZW5EaWFsb2cnLFxyXG4gICAgICAnY2xvc2VEaWFsb2cnLFxyXG4gICAgICAnYWxlcnQnLFxyXG4gICAgICAnaW5mbycsXHJcbiAgICAgICdjb25maXJtJyxcclxuICAgICAgJ3Nob3cnXHJcbiAgICBdKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2hvd0RpYWxvZyhmb3JtU2NoZW1hOiBhbnksIG9wdGlvbnM/OiBGb3JtRGlhbG9nT3B0aW9ucykge1xyXG5cclxuICAgIG9wdGlvbnMgPSB0aGlzLmVuc3VyZUNsb3NhYmxlKG9wdGlvbnMpO1xyXG5cclxuICAgIGNvbnN0IGRhdGEgPSB7XHJcbiAgICAgIGZvcm1TY2hlbWEsXHJcbiAgICAgIG9wdGlvbnMsXHJcbiAgICAgIGR5bmFtaWNGb3JtVHlwZTogRHluYW1pY0Zvcm1Db21wb25lbnRcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5kaWFsb2dTZXJ2aWNlXHJcbiAgICAgIC5vcGVuRGlhbG9nKERpYWxvZ0NvbXBvbmVudCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZVRleHRTY2hlbWEodGV4dDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBcImZvcm1zXCI6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBcImNvbXBvbmVudHNcIjogW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgXCJ0ZXh0XCI6IHRleHQsXHJcbiAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwidGV4dFwiLFxyXG4gICAgICAgICAgICAgIFwibGF5b3V0XCI6IHtcclxuICAgICAgICAgICAgICAgIFwicm93XCI6IFwiUm93XzE0ejlteW9cIixcclxuICAgICAgICAgICAgICAgIFwiY29sdW1uc1wiOiBudWxsXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBcImlkXCI6IFwiRmllbGRfMXhpYnAyclwiXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIF0sXHJcbiAgICAgICAgICBcInR5cGVcIjogXCJkZWZhdWx0XCIsXHJcbiAgICAgICAgICBcImlkXCI6IFwiRm9ybV8wbG90bTJoXCIsXHJcbiAgICAgICAgICBcInNjaGVtYVZlcnNpb25cIjogMThcclxuICAgICAgICB9XHJcbiAgICAgIF1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlSW5wdXRTY2hlbWEobGFiZWw6IHN0cmluZywgZGVmYXVsdFZhbHVlPzogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBcImZvcm1zXCI6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBcImNvbXBvbmVudHNcIjogW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgXCJsYWJlbFwiOiBsYWJlbCxcclxuICAgICAgICAgICAgICBcImRlZmF1bHRWYWx1ZVwiOiBkZWZhdWx0VmFsdWUsXHJcbiAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwidGV4dGZpZWxkXCIsXHJcbiAgICAgICAgICAgICAgXCJsYXlvdXRcIjoge1xyXG4gICAgICAgICAgICAgICAgXCJyb3dcIjogXCJSb3dfMXd4ejVnZFwiLFxyXG4gICAgICAgICAgICAgICAgXCJjb2x1bW5zXCI6IG51bGxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIFwiaWRcIjogXCJGaWVsZF8xdGF1NTN4XCIsXHJcbiAgICAgICAgICAgICAgXCJrZXlcIjogXCJpbnB1dFwiXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIF0sXHJcbiAgICAgICAgICBcInR5cGVcIjogXCJkZWZhdWx0XCIsXHJcbiAgICAgICAgICBcImlkXCI6IFwiRm9ybV8xb250d254XCIsXHJcbiAgICAgICAgICBcInNjaGVtYVZlcnNpb25cIjogMThcclxuICAgICAgICB9XHJcbiAgICAgIF1cclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGVuc3VyZUNsb3NhYmxlKG9wdGlvbnM/OiBGb3JtRGlhbG9nT3B0aW9ucyk6IEZvcm1EaWFsb2dPcHRpb25zIHtcclxuXHJcbiAgICBvcHRpb25zID0ge1xyXG4gICAgICAuLi5vcHRpb25zLFxyXG4gICAgICBjbG9zZUJ1dHRvbjpcclxuICAgICAgICBvcHRpb25zPy5idXR0b25zID09IG51bGwgPyB0cnVlIDogb3B0aW9ucy5jbG9zZUJ1dHRvblxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBvcHRpb25zO1xyXG4gIH1cclxuXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRGlhbG9nT3B0aW9ucyB7XHJcbiAgdHlwZT86IERpYWxvZ1R5cGVzO1xyXG4gIHNpemU/OiBEaWFsb2dTaXplcztcclxuICB0aXRsZT86IHN0cmluZztcclxuICBpc0RyYXdlcj86IGJvb2xlYW47ICBcclxuICBjbG9zZUJ1dHRvbj86IGJvb2xlYW47XHJcbiAgYnV0dG9ucz86IERpYWxvZ0J1dHRvbnM7XHJcbiAgY3VzdG9tQnV0dG9ucz86IEN1c3RvbUJ1dHRvbltdLFxyXG4gIGtlZXBPcGVuPzogYm9vbGVhbixcclxuICBvblJlc3VsdD86IChyZXN1bHQ6IERpYWxvZ1Jlc3VsdCkgPT4gdm9pZDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGb3JtRGlhbG9nT3B0aW9ucyBleHRlbmRzIERpYWxvZ09wdGlvbnMge1xyXG4gIHZhbHVlPzogYW55O1xyXG4gIGluamVjdG9yPzogSW5qZWN0b3I7XHJcbiAgc2hvd05hdj86IGJvb2xlYW47XHJcbiAgc2hvd05hdkJ1dHRvbj86IGJvb2xlYW47XHJcbiAgc2hvd1Byb2dyZXNzPzogYm9vbGVhbjtcclxuICBzaG93Rm9ybVRpdGxlPzogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEaWFsb2dSZXN1bHQge1xyXG4gIGFjdGlvbjogRGlhbG9nQWN0aW9uIHwgc3RyaW5nO1xyXG4gIHZhbHVlPzogYW55O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEN1c3RvbUJ1dHRvbiB7XHJcbiAgdGV4dDogc3RyaW5nLFxyXG4gIGNvbG9yOiBCdXR0b25Db2xvcnMsXHJcbiAgYWN0aW9uOiBzdHJpbmdcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgRGlhbG9nQWN0aW9uID0gJ09LJ1xyXG4gIHwgJ0NhbmNlbCdcclxuICB8ICdZZXMnXHJcbiAgfCAnTm8nXHJcbiAgfCAnQ29uZmlybSdcclxuICB8ICdDbG9zZSdcclxuICB8ICdBYm9ydCdcclxuICB8ICdSZXRyeSdcclxuICB8ICdJZ25vcmUnXHJcbiAgfCAnVHJ5J1xyXG4gIHwgJ0NvbnRpbnVlJztcclxuXHJcbmV4cG9ydCB0eXBlIERpYWxvZ0J1dHRvbnMgPSAnT0snXHJcbiAgfCAnT0tDYW5jZWwnXHJcbiAgfCAnQ29uZmlybUNhbmNlbCdcclxuICB8ICdBYm9ydFJldHJ5SWdub3JlJ1xyXG4gIHwgJ1llc05vQ2FuY2VsJ1xyXG4gIHwgJ1llc05vJ1xyXG4gIHwgJ1JldHJ5Q2FuY2VsJ1xyXG4gIHwgJ0NhbmNlbFRyeUNvbnRpbnVlJ1xyXG4gIHwgJ0N1c3RvbSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTaXJpb0RpYWxvZ0V4U2VydmljZSBleHRlbmRzIFNpcmlvRGlhbG9nU2VydmljZVxyXG57XHJcbiAgLy8gRml4IGZvciBtdWx0aXBsZSBkaWFsb2cgb3BlbmluZ1xyXG5cclxuICBwcml2YXRlIGRpYWxvZ3NTdGFjazogRGlhbG9nRW50cnlbXSA9IFtdO1xyXG5cclxuICBvdmVycmlkZSBvcGVuRGlhbG9nKGNvbXBvbmVudDogVHlwZTxTaXJpb0RpYWxvZ0VsZW1lbnQ+LCBkYXRhPzogYW55KTogU2lyaW9EaWFsb2dFbGVtZW50IHtcclxuXHJcbiAgICBpZiAodGhpcy5kaWFsb2dDb21wb25lbnRSZWYpIHtcclxuICAgICAgdGhpcy5kaWFsb2dzU3RhY2sucHVzaCh7XHJcbiAgICAgICAgY29tcG9uZW50UmVmOiB0aGlzLmRpYWxvZ0NvbXBvbmVudFJlZixcclxuICAgICAgICBodG1sUmVmOiB0aGlzLmRpYWxvZ0NvbXBvbmVudEhUTUxSZWZcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGNvbnN0IGRpYWxvZ0VsZW1lbnQgPSBzdXBlci5vcGVuRGlhbG9nKGNvbXBvbmVudCwgZGF0YSk7XHJcbiAgICBcclxuICAgIHJldHVybiBkaWFsb2dFbGVtZW50O1xyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgY2xvc2VEaWFsb2coKTogYW55IHtcclxuICAgIGNvbnN0IHJlc3VsdCA9IHN1cGVyLmNsb3NlRGlhbG9nKCk7XHJcblxyXG4gICAgY29uc3QgZGlhbG9nID0gdGhpcy5kaWFsb2dzU3RhY2sucG9wKCk7XHJcblxyXG4gICAgaWYgKGRpYWxvZz8uY29tcG9uZW50UmVmKSB7XHJcbiAgICAgIHRoaXMuZGlhbG9nQ29tcG9uZW50UmVmID0gZGlhbG9nLmNvbXBvbmVudFJlZjtcclxuICAgICAgdGhpcy5kaWFsb2dDb21wb25lbnRIVE1MUmVmID0gZGlhbG9nLmh0bWxSZWY7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcbn1cclxuXHJcbmludGVyZmFjZSBEaWFsb2dFbnRyeSB7XHJcbiAgY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8U2lyaW9EaWFsb2dFbGVtZW50PiB8IG51bGw7XHJcbiAgaHRtbFJlZjogSFRNTEVsZW1lbnQgfCBudWxsO1xyXG59XHJcbiJdfQ==
|