ngx-iso-form 2.0.1 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/esm2022/lib/Models/Schema.mjs +1 -1
- package/esm2022/lib/ngx-iso-form.component.mjs +11 -6
- package/esm2022/lib/ngx-iso-form.module.mjs +7 -5
- package/esm2022/lib/ngx-iso-form.service.mjs +59 -29
- package/esm2022/lib/shared/services/component.service.mjs +13 -8
- package/esm2022/lib/shared/services/control.service.mjs +11 -1
- package/esm2022/lib/shared/services/custom-date-adapter.mjs +34 -0
- package/fesm2022/ngx-iso-form.mjs +130 -51
- package/fesm2022/ngx-iso-form.mjs.map +1 -1
- package/lib/Models/Schema.d.ts +1 -2
- package/lib/ngx-iso-form.component.d.ts +1 -0
- package/lib/ngx-iso-form.service.d.ts +3 -1
- package/lib/shared/services/component.service.d.ts +3 -0
- package/lib/shared/services/control.service.d.ts +3 -0
- package/lib/shared/services/custom-date-adapter.d.ts +9 -0
- package/package.json +1 -1
|
@@ -2,29 +2,41 @@ import { Injectable } from '@angular/core';
|
|
|
2
2
|
import { FormGroup, FormControl } from '@angular/forms';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
import * as i1 from "@angular/forms";
|
|
5
|
+
import * as i2 from "./shared/services/custom-date-adapter";
|
|
5
6
|
export class NgxIsoService {
|
|
6
|
-
constructor(fb) {
|
|
7
|
+
constructor(fb, dateService) {
|
|
7
8
|
this.fb = fb;
|
|
9
|
+
this.dateService = dateService;
|
|
8
10
|
this._formModel = [];
|
|
9
11
|
this.sanitize = (obj) => {
|
|
10
|
-
if (obj === null || obj ===
|
|
12
|
+
if (obj === null || obj === '') {
|
|
11
13
|
return null;
|
|
12
14
|
}
|
|
13
15
|
if (Array.isArray(obj)) {
|
|
14
16
|
const cleanedObj = [];
|
|
15
17
|
for (const index in obj) {
|
|
16
18
|
const cleanedValue = this.sanitize(obj[index]);
|
|
17
|
-
if (cleanedValue !== null &&
|
|
19
|
+
if (cleanedValue !== null &&
|
|
20
|
+
cleanedValue !== '' &&
|
|
21
|
+
Object.keys(cleanedValue).length > 0 &&
|
|
22
|
+
(!Array.isArray(cleanedValue) || cleanedValue.length > 0)) {
|
|
18
23
|
cleanedObj.push(cleanedValue);
|
|
19
24
|
}
|
|
20
25
|
}
|
|
21
26
|
return cleanedObj;
|
|
22
27
|
}
|
|
28
|
+
else if (typeof obj === 'object' && obj instanceof Date) {
|
|
29
|
+
const cleanedObj = this.dateService.format(obj, 'YYYY-MM-DD');
|
|
30
|
+
return cleanedObj;
|
|
31
|
+
}
|
|
23
32
|
else if (typeof obj === 'object') {
|
|
24
33
|
const cleanedObj = {};
|
|
25
34
|
for (const key in obj) {
|
|
26
35
|
const cleanedValue = this.sanitize(obj[key]);
|
|
27
|
-
if (cleanedValue !== null &&
|
|
36
|
+
if (cleanedValue !== null &&
|
|
37
|
+
cleanedValue !== '' &&
|
|
38
|
+
Object.keys(cleanedValue).length > 0 &&
|
|
39
|
+
(!Array.isArray(cleanedValue) || cleanedValue.length > 0)) {
|
|
28
40
|
cleanedObj[key] = cleanedValue;
|
|
29
41
|
}
|
|
30
42
|
}
|
|
@@ -64,14 +76,16 @@ export class NgxIsoService {
|
|
|
64
76
|
const formArray = form.get(key);
|
|
65
77
|
if (formArray && formArray.length !== item.length) {
|
|
66
78
|
const newEle = structuredClone(parentNode.elements[parentNode.elements.length - 1]);
|
|
67
|
-
if (!(newEle.maxOccurs &&
|
|
79
|
+
if (!(newEle.maxOccurs &&
|
|
80
|
+
parseInt(newEle.maxOccurs, 10) <= parentNode.elements.length)) {
|
|
68
81
|
const newKeys = [];
|
|
69
82
|
const groupControls = this.getFormGroupControls(newEle.elements, newKeys, parentNode.elements.length - 1);
|
|
70
83
|
parentNode.elements.push(newEle);
|
|
71
84
|
formArray.push(groupControls);
|
|
72
85
|
parentNode.elements.forEach((element) => {
|
|
73
|
-
if (!element.minOccurs ||
|
|
74
|
-
element.minOccurs
|
|
86
|
+
if (!element.minOccurs ||
|
|
87
|
+
parseInt(element.minOccurs, 10) === 0) {
|
|
88
|
+
element.minOccurs = '1';
|
|
75
89
|
}
|
|
76
90
|
});
|
|
77
91
|
}
|
|
@@ -89,14 +103,14 @@ export class NgxIsoService {
|
|
|
89
103
|
else if (typeof model[key] === 'object') {
|
|
90
104
|
const node = this.getFormModel(this._formModel[0], key);
|
|
91
105
|
if (node && (!node.minOccurs || parseInt(node.minOccurs, 10) === 0)) {
|
|
92
|
-
node.minOccurs =
|
|
106
|
+
node.minOccurs = '1';
|
|
93
107
|
}
|
|
94
108
|
const _form = form.get(key);
|
|
95
109
|
if (_form) {
|
|
96
110
|
if (node.dataType === 'choice') {
|
|
97
|
-
const
|
|
98
|
-
const choiceEle = node.elements.find((item) => item.id ===
|
|
99
|
-
node.
|
|
111
|
+
const choiceKey = Object.keys(model[key])[0];
|
|
112
|
+
const choiceEle = node.elements.find((item) => item.id === choiceKey);
|
|
113
|
+
node.choiceKey = choiceKey;
|
|
100
114
|
choiceEle.hidden = false;
|
|
101
115
|
const newNode = structuredClone(choiceEle);
|
|
102
116
|
if (newNode.elements.length) {
|
|
@@ -136,11 +150,16 @@ export class NgxIsoService {
|
|
|
136
150
|
if (item.elements.length > 0) {
|
|
137
151
|
let choice = item.dataType === 'choice';
|
|
138
152
|
if (choice) {
|
|
139
|
-
element.
|
|
153
|
+
element.choiceKey = '';
|
|
140
154
|
}
|
|
141
155
|
if (this.maxOccurs(item.maxOccurs)) {
|
|
142
156
|
element.uniqueId = `${element.id}_${index}`;
|
|
143
|
-
keys.push({
|
|
157
|
+
keys.push({
|
|
158
|
+
id: element.id,
|
|
159
|
+
multi: true,
|
|
160
|
+
xpath: element.xpath,
|
|
161
|
+
elements: [element],
|
|
162
|
+
});
|
|
144
163
|
const data = this.getFormGroupControls(item.elements, element.elements, index, choice);
|
|
145
164
|
controls = this.fb.array([]);
|
|
146
165
|
if (!choice) {
|
|
@@ -149,7 +168,12 @@ export class NgxIsoService {
|
|
|
149
168
|
control[id] = controls;
|
|
150
169
|
}
|
|
151
170
|
else if (item.multi && !item.isFormControls) {
|
|
152
|
-
keys.push({
|
|
171
|
+
keys.push({
|
|
172
|
+
id: element.id,
|
|
173
|
+
multi: true,
|
|
174
|
+
xpath: element.xpath,
|
|
175
|
+
elements: element.elements,
|
|
176
|
+
});
|
|
153
177
|
const data = this.getFormGroupControls(item.elements[item.elements.length - 1].elements, element.elements, index, choice);
|
|
154
178
|
controls = this.fb.array([]);
|
|
155
179
|
if (!choice) {
|
|
@@ -162,7 +186,7 @@ export class NgxIsoService {
|
|
|
162
186
|
item.elements.splice(1, item.elements.length - 1);
|
|
163
187
|
}
|
|
164
188
|
keys.push(item);
|
|
165
|
-
control[id] = this.fb.array([this.getFormControl(item.value ||
|
|
189
|
+
control[id] = this.fb.array([this.getFormControl(item.value || '')]);
|
|
166
190
|
}
|
|
167
191
|
else {
|
|
168
192
|
keys.push(element);
|
|
@@ -176,7 +200,13 @@ export class NgxIsoService {
|
|
|
176
200
|
}
|
|
177
201
|
}
|
|
178
202
|
else if (this.maxOccurs(item.maxOccurs)) {
|
|
179
|
-
keys.push({
|
|
203
|
+
keys.push({
|
|
204
|
+
id: element.id,
|
|
205
|
+
multi: true,
|
|
206
|
+
xpath: element.xpath,
|
|
207
|
+
elements: [element],
|
|
208
|
+
isFormControls: true,
|
|
209
|
+
});
|
|
180
210
|
control[id] = this.fb.array([this.getFormControl(item.value)]);
|
|
181
211
|
}
|
|
182
212
|
else if (item.isCurrency) {
|
|
@@ -187,42 +217,42 @@ export class NgxIsoService {
|
|
|
187
217
|
}
|
|
188
218
|
else {
|
|
189
219
|
keys.push(element);
|
|
190
|
-
control[id] = this.getFormControl(item.value ||
|
|
220
|
+
control[id] = this.getFormControl(item.value || '');
|
|
191
221
|
}
|
|
192
222
|
});
|
|
193
223
|
return new FormGroup(control);
|
|
194
224
|
}
|
|
195
225
|
getFormControl(values) {
|
|
196
|
-
return new FormControl(values ||
|
|
197
|
-
updateOn: 'blur'
|
|
226
|
+
return new FormControl(values || '', {
|
|
227
|
+
updateOn: 'blur',
|
|
198
228
|
});
|
|
199
229
|
}
|
|
200
230
|
getAmountCurrency(item) {
|
|
201
231
|
const elements = [];
|
|
202
232
|
const ccy = structuredClone(item);
|
|
203
233
|
const amt = structuredClone(item);
|
|
204
|
-
ccy.id = `${ccy.id}
|
|
205
|
-
ccy.name =
|
|
234
|
+
ccy.id = `${ccy.id}_Ccy`;
|
|
235
|
+
ccy.name = 'Ccy';
|
|
206
236
|
ccy.fractionDigits = '';
|
|
207
237
|
ccy.totalDigits = '';
|
|
208
|
-
ccy.maxLength =
|
|
209
|
-
ccy.xpath = `${ccy.xpath}@
|
|
238
|
+
ccy.maxLength = '3';
|
|
239
|
+
ccy.xpath = `${ccy.xpath}@Ccy`;
|
|
210
240
|
ccy.isCurrency = false;
|
|
211
241
|
elements.push(ccy);
|
|
212
|
-
amt.id = `${amt.id}
|
|
213
|
-
amt.xpath = `${amt.xpath}/
|
|
242
|
+
amt.id = `${amt.id}_Amt`;
|
|
243
|
+
amt.xpath = `${amt.xpath}/Amt`;
|
|
214
244
|
amt.isCurrency = false;
|
|
215
245
|
amt.pattern = '';
|
|
216
246
|
elements.push(amt);
|
|
217
247
|
return elements;
|
|
218
248
|
}
|
|
219
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: NgxIsoService, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
249
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: NgxIsoService, deps: [{ token: i1.FormBuilder }, { token: i2.CustomDateAdapter }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
220
250
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: NgxIsoService, providedIn: 'root' }); }
|
|
221
251
|
}
|
|
222
252
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: NgxIsoService, decorators: [{
|
|
223
253
|
type: Injectable,
|
|
224
254
|
args: [{
|
|
225
|
-
providedIn: 'root'
|
|
255
|
+
providedIn: 'root',
|
|
226
256
|
}]
|
|
227
|
-
}], ctorParameters: function () { return [{ type: i1.FormBuilder }]; } });
|
|
228
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWlzby1mb3JtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaXNvLWZvcm0vc3JjL2xpYi9uZ3gtaXNvLWZvcm0uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUEwQixNQUFNLGdCQUFnQixDQUFDOzs7QUFNaEYsTUFBTSxPQUFPLGFBQWE7SUFFeEIsWUFBb0IsRUFBZTtRQUFmLE9BQUUsR0FBRixFQUFFLENBQWE7UUFENUIsZUFBVSxHQUFVLEVBQUUsQ0FBQztRQXVKdkIsYUFBUSxHQUFHLENBQUMsR0FBUSxFQUFPLEVBQUU7WUFDbEMsSUFBSSxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsS0FBSyxFQUFFLEVBQUU7Z0JBQzlCLE9BQU8sSUFBSSxDQUFDO2FBQ2I7WUFFRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ3RCLE1BQU0sVUFBVSxHQUFRLEVBQUUsQ0FBQztnQkFDM0IsS0FBSyxNQUFNLEtBQUssSUFBSSxHQUFHLEVBQUU7b0JBQ3ZCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7b0JBQy9DLElBQUksWUFBWSxLQUFLLElBQUksSUFBSSxZQUFZLEtBQUssRUFBRSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFO3dCQUNySixVQUFVLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO3FCQUMvQjtpQkFDRjtnQkFDRCxP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QUN6QixHQUFHLENBQUMsS0FBSyxHQUFHLEdBQUcsR0FBRyxDQUFDLEtBQUssTUFBTSxDQUFDO1FBQy9CLEdBQUcsQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLEdBQUcsQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkIsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQzs4R0E1TlUsYUFBYTtrSEFBYixhQUFhLGNBRlosTUFBTTs7MkZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAsIEZvcm1Db250cm9sLCBGb3JtQXJyYXksIEZvcm1CdWlsZGVyIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU2NoZW1hTW9kZWwgfSBmcm9tICcuL01vZGVscy9TY2hlbWEnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBOZ3hJc29TZXJ2aWNlIHtcbiAgcHVibGljIF9mb3JtTW9kZWw6IGFueVtdID0gW107XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyKSB7IH1cblxuICBwdWJsaWMgbWF4T2NjdXJzKG1heE9jY3Vyczogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIG1heE9jY3VycyA9PT0gJ3VuYm91bmRlZCcgfHwgcGFyc2VJbnQobWF4T2NjdXJzLCAxMCkgPiAxO1xuICB9XG5cbiAgcHVibGljIGluaXRGb3JtTW9kZWwobW9kZWw6IGFueSwgZm9ybTogRm9ybUdyb3VwIHwgRm9ybUFycmF5KTogdm9pZCB7XG4gICAgaWYgKHR5cGVvZiBtb2RlbCA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGZvciAoY29uc3Qga2V5IGluIG1vZGVsKSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KG1vZGVsW2tleV0pKSB7XG4gICAgICAgICAgY29uc3QgcGFyZW50Tm9kZSA9IHRoaXMuZ2V0Rm9ybU1vZGVsKHRoaXMuX2Zvcm1Nb2RlbFswXSwga2V5KTtcbiAgICAgICAgICBjb25zdCBpdGVtID0gbW9kZWxba2V5XTtcbiAgICAgICAgICBjb25zdCBmb3JtQXJyYXkgPSBmb3JtLmdldChrZXkpIGFzIEZvcm1BcnJheTtcbiAgICAgICAgICBpZiAoZm9ybUFycmF5ICYmIGZvcm1BcnJheS5sZW5ndGggIT09IGl0ZW0ubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBuZXdFbGUgPSBzdHJ1Y3R1cmVkQ2xvbmUocGFyZW50Tm9kZS5lbGVtZW50c1twYXJlbnROb2RlLmVsZW1lbnRzLmxlbmd0aCAtIDFdKTtcbiAgICAgICAgICAgIGlmICghKG5ld0VsZS5tYXhPY2N1cnMgJiYgcGFyc2VJbnQobmV3RWxlLm1heE9jY3VycywgMTApIDw9IHBhcmVudE5vZGUuZWxlbWVudHMubGVuZ3RoKSkge1xuICAgICAgICAgICAgICBjb25zdCBuZXdLZXlzOiBhbnkgPSBbXTtcbiAgICAgICAgICAgICAgY29uc3QgZ3JvdXBDb250cm9scyA9IHRoaXMuZ2V0Rm9ybUdyb3VwQ29udHJvbHMobmV3RWxlLmVsZW1lbnRzLCBuZXdLZXlzLCBwYXJlbnROb2RlLmVsZW1lbnRzLmxlbmd0aCAtIDEpO1xuICAgICAgICAgICAgICBwYXJlbnROb2RlLmVsZW1lbnRzLnB1c2gobmV3RWxlKTtcbiAgICAgICAgICAgICAgZm9ybUFycmF5LnB1c2goZ3JvdXBDb250cm9scyk7XG4gICAgICAgICAgICAgIHBhcmVudE5vZGUuZWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudDogU2NoZW1hTW9kZWwpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWVsZW1lbnQubWluT2NjdXJzIHx8IHBhcnNlSW50KGVsZW1lbnQubWluT2NjdXJzLCAxMCkgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgIGVsZW1lbnQubWluT2NjdXJzID0gXCIxXCI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW0ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1BcnJheSA9IGZvcm0uZ2V0KGtleSk7XG4gICAgICAgICAgICBpZiAoZm9ybUFycmF5KSB7XG4gICAgICAgICAgICAgIGNvbnN0IGZybUdyb3VwID0gKGZvcm1BcnJheSBhcyBGb3JtQXJyYXkpLmF0KGkpO1xuICAgICAgICAgICAgICBpZiAoZnJtR3JvdXApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRGb3JtTW9kZWwoaXRlbVtpXSwgZnJtR3JvdXAgYXMgRm9ybUdyb3VwKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgbW9kZWxba2V5XSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBjb25zdCBub2RlID0gdGhpcy5nZXRGb3JtTW9kZWwodGhpcy5fZm9ybU1vZGVsWzBdLCBrZXkpO1xuICAgICAgICAgIGlmIChub2RlICYmICghbm9kZS5taW5PY2N1cnMgfHwgcGFyc2VJbnQobm9kZS5taW5PY2N1cnMsIDEwKSA9PT0gMCkpIHtcbiAgICAgICAgICAgIG5vZGUubWluT2NjdXJzID0gXCIxXCI7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IF9mb3JtID0gZm9ybS5nZXQoa2V5KSBhcyBGb3JtR3JvdXBcbiAgICAgICAgICBpZiAoX2Zvcm0pIHtcbiAgICAgICAgICAgIGlmIChub2RlLmRhdGFUeXBlID09PSAnY2hvaWNlJykgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgY29uc3QgY2hvaWNrS2V5ID0gT2JqZWN0LmtleXMobW9kZWxba2V5XSlbMF07XG4gICAgICAgICAgICAgIGNvbnN0IGNob2ljZUVsZSA9IG5vZGUuZWxlbWVudHMuZmluZCgoaXRlbTogU2NoZW1hTW9kZWwpID0+IGl0ZW0uaWQgPT09IGNob2lja0tleSk7XG4gICAgICAgICAgICAgIG5vZGUuY2hvaWNlRm9ybUNvbnRyb2wuc2V0VmFsdWUoY2hvaWNrS2V5KTtcbiAgICAgICAgICAgICAgY2hvaWNlRWxlLmhpZGRlbiA9IGZhbHNlO1xuICAgICAgICAgICAgICBjb25zdCBuZXdOb2RlID0gc3RydWN0dXJlZENsb25lKGNob2ljZUVsZSk7XG4gICAgICAgICAgICAgIGlmIChuZXdOb2RlLmVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gdGhpcy5nZXRGb3JtR3JvdXBDb250cm9scyhuZXdOb2RlLmVsZW1lbnRzLCBbXSwgMCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgX2Zvcm0uYWRkQ29udHJvbChuZXdOb2RlLmlkLCBncm91cCk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuZ2V0Rm9ybUNvbnRyb2woJycpO1xuICAgICAgICAgICAgICAgIF9mb3JtLmFkZENvbnRyb2wobmV3Tm9kZS5pZCwgY29udHJvbCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuaW5pdEZvcm1Nb2RlbChtb2RlbFtrZXldLCBfZm9ybSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGNvbnN0IF9mb3JtID0gZm9ybS5nZXQoa2V5KSBhcyBGb3JtQ29udHJvbDtcbiAgICAgICAgICBfZm9ybS5zZXRWYWx1ZShtb2RlbFtrZXldKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShtb2RlbCkpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbW9kZWwubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgZnJtR3JvdXAgPSAoZm9ybSBhcyBGb3JtQXJyYXkpLmF0KGkpO1xuICAgICAgICB0aGlzLmluaXRGb3JtTW9kZWwobW9kZWxbaV0sIGZybUdyb3VwIGFzIEZvcm1Hcm91cCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldEZvcm1Hcm91cENvbnRyb2xzKGpzb246IFNjaGVtYU1vZGVsW10sIGtleXM6IGFueSwgaW5kZXg6IG51bWJlciA9IDAsIGNob2ljZUVsZTogYm9vbGVhbiA9IGZhbHNlKTogRm9ybUdyb3VwIHtcbiAgICBsZXQgY29udHJvbDogYW55ID0ge307XG4gICAgbGV0IGNvbnRyb2xzOiBhbnk7XG4gICAgbGV0IHZhbHVlID0ge307XG5cbiAgICBqc29uLmZvckVhY2goKGl0ZW06IFNjaGVtYU1vZGVsKSA9PiB7XG4gICAgICBpdGVtLmhpZGRlbiA9IGNob2ljZUVsZTtcbiAgICAgIHZhbHVlID0gaXRlbS5lbGVtZW50cztcbiAgICAgIGNvbnN0IGlkID0gaXRlbS5pZFxuICAgICAgY29uc3QgZWxlbWVudCA9IHsgLi4uaXRlbSwgZWxlbWVudHM6IFtdLCBpZCB9O1xuICAgICAgaWYgKGl0ZW0uZWxlbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgICBsZXQgY2hvaWNlID0gaXRlbS5kYXRhVHlwZSA9PT0gJ2Nob2ljZSc7XG4gICAgICAgIGlmIChjaG9pY2UpIHtcbiAgICAgICAgICBlbGVtZW50LmNob2ljZUZvcm1Db250cm9sID0gdGhpcy5nZXRGb3JtQ29udHJvbCgnJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMubWF4T2NjdXJzKGl0ZW0ubWF4T2NjdXJzKSkge1xuICAgICAgICAgIGVsZW1lbnQudW5pcXVlSWQgPSBgJHtlbGVtZW50LmlkfV8ke2luZGV4fWA7XG4gICAgICAgICAga2V5cy5wdXNoKHsgaWQ6IGVsZW1lbnQuaWQsIG11bHRpOiB0cnVlLCB4cGF0aDogZWxlbWVudC54cGF0aCwgZWxlbWVudHM6IFtlbGVtZW50XSB9KTtcbiAgICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5nZXRGb3JtR3JvdXBDb250cm9scyhpdGVtLmVsZW1lbnRzLCBlbGVtZW50LmVsZW1lbnRzLCBpbmRleCwgY2hvaWNlKTtcbiAgICAgICAgICBjb250cm9scyA9IHRoaXMuZmIuYXJyYXkoW10pO1xuICAgICAgICAgIGlmICghY2hvaWNlKSB7XG4gICAgICAgICAgICBjb250cm9scy5wdXNoKGRhdGEpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb250cm9sW2lkXSA9IGNvbnRyb2xzO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGl0ZW0ubXVsdGkgJiYgIWl0ZW0uaXNGb3JtQ29udHJvbHMpIHtcbiAgICAgICAgICBrZXlzLnB1c2goeyBpZDogZWxlbWVudC5pZCwgbXVsdGk6IHRydWUsIHhwYXRoOiBlbGVtZW50LnhwYXRoLCBlbGVtZW50czogZWxlbWVudC5lbGVtZW50cyB9KTtcbiAgICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5nZXRGb3JtR3JvdXBDb250cm9scyhpdGVtLmVsZW1lbnRzW2l0ZW0uZWxlbWVudHMubGVuZ3RoIC0gMV0uZWxlbWVudHMsIGVsZW1lbnQuZWxlbWVudHMsIGluZGV4LCBjaG9pY2UpO1xuICAgICAgICAgIGNvbnRyb2xzID0gdGhpcy5mYi5hcnJheShbXSk7XG4gICAgICAgICAgaWYgKCFjaG9pY2UpIHtcbiAgICAgICAgICAgIGNvbnRyb2xzLnB1c2goZGF0YSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnRyb2xbaWRdID0gY29udHJvbHM7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXRlbS5tdWx0aSAmJiBpdGVtLmlzRm9ybUNvbnRyb2xzKSB7XG4gICAgICAgICAgaWYgKGl0ZW0uZWxlbWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgaXRlbS5lbGVtZW50cy5zcGxpY2UoMSwgaXRlbS5lbGVtZW50cy5sZW5ndGggLSAxKTtcbiAgICAgICAgICB9XG4gICAgICAgICAga2V5cy5wdXNoKGl0ZW0pO1xuICAgICAgICAgIGNvbnRyb2xbaWRdID0gdGhpcy5mYi5hcnJheShbdGhpcy5nZXRGb3JtQ29udHJvbChpdGVtLnZhbHVlIHx8IFwiXCIpXSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAga2V5cy5wdXNoKGVsZW1lbnQpO1xuICAgICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmdldEZvcm1Hcm91cENvbnRyb2xzKGl0ZW0uZWxlbWVudHMsIGVsZW1lbnQuZWxlbWVudHMsIGluZGV4LCBjaG9pY2UpO1xuICAgICAgICAgIGlmICghY2hvaWNlKSB7XG4gICAgICAgICAgICBjb250cm9sW2lkXSA9IGRhdGE7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnRyb2xbaWRdID0gdGhpcy5mYi5ncm91cCh7fSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKHRoaXMubWF4T2NjdXJzKGl0ZW0ubWF4T2NjdXJzKSkge1xuICAgICAgICBrZXlzLnB1c2goeyBpZDogZWxlbWVudC5pZCwgbXVsdGk6IHRydWUsIHhwYXRoOiBlbGVtZW50LnhwYXRoLCBlbGVtZW50czogW2VsZW1lbnRdLCBpc0Zvcm1Db250cm9sczogdHJ1ZSB9KTtcbiAgICAgICAgY29udHJvbFtpZF0gPSB0aGlzLmZiLmFycmF5KFt0aGlzLmdldEZvcm1Db250cm9sKGl0ZW0udmFsdWUpXSk7XG4gICAgICB9IGVsc2UgaWYgKGl0ZW0uaXNDdXJyZW5jeSkge1xuICAgICAgICBjb25zdCBfYW1vdW50Q3VycmVuY3kgPSB0aGlzLmdldEFtb3VudEN1cnJlbmN5KGl0ZW0pO1xuICAgICAgICBrZXlzLnB1c2goZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmdldEZvcm1Hcm91cENvbnRyb2xzKF9hbW91bnRDdXJyZW5jeSwgZWxlbWVudC5lbGVtZW50cywgMCwgZmFsc2UpO1xuICAgICAgICBjb250cm9sW2l0ZW0uaWRdID0gZGF0YTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBrZXlzLnB1c2goZWxlbWVudCk7XG4gICAgICAgIGNvbnRyb2xbaWRdID0gdGhpcy5nZXRGb3JtQ29udHJvbChpdGVtLnZhbHVlIHx8IFwiXCIpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG5ldyBGb3JtR3JvdXAoY29udHJvbCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Rm9ybUNvbnRyb2wodmFsdWVzOiBhbnkpOiBGb3JtQ29udHJvbCB7XG4gICAgcmV0dXJuIG5ldyBGb3JtQ29udHJvbCh2YWx1ZXMgfHwgXCJcIiwge1xuICAgICAgdXBkYXRlT246ICdibHVyJ1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHNhbml0aXplID0gKG9iajogYW55KTogYW55ID0+IHtcbiAgICBpZiAob2JqID09PSBudWxsIHx8IG9iaiA9PT0gXCJcIikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgICAgY29uc3QgY2xlYW5lZE9iajogYW55ID0gW107XG4gICAgICBmb3IgKGNvbnN0IGluZGV4IGluIG9iaikge1xuICAgICAgICBjb25zdCBjbGVhbmVkVmFsdWUgPSB0aGlzLnNhbml0aXplKG9ialtpbmRleF0pO1xuICAgICAgICBpZiAoY2xlYW5lZFZhbHVlICE9PSBudWxsICYmIGNsZWFuZWRWYWx1ZSAhPT0gXCJcIiAmJiBPYmplY3Qua2V5cyhjbGVhbmVkVmFsdWUpLmxlbmd0aCA+IDAgJiYgKCFBcnJheS5pc0FycmF5KGNsZWFuZWRWYWx1ZSkgfHwgY2xlYW5lZFZhbHVlLmxlbmd0aCA+IDApKSB7XG4gICAgICAgICAgY2xlYW5lZE9iai5wdXNoKGNsZWFuZWRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBjbGVhbmVkT2JqO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIG9iaiA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGNvbnN0IGNsZWFuZWRPYmo6IGFueSA9IHt9O1xuXG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiBvYmopIHtcbiAgICAgICAgY29uc3QgY2xlYW5lZFZhbHVlID0gdGhpcy5zYW5pdGl6ZShvYmpba2V5XSk7XG4gICAgICAgIGlmIChjbGVhbmVkVmFsdWUgIT09IG51bGwgJiYgY2xlYW5lZFZhbHVlICE9PSBcIlwiICYmIE9iamVjdC5rZXlzKGNsZWFuZWRWYWx1ZSkubGVuZ3RoID4gMCAmJiAoIUFycmF5LmlzQXJyYXkoY2xlYW5lZFZhbHVlKSB8fCBjbGVhbmVkVmFsdWUubGVuZ3RoID4gMCkpIHtcbiAgICAgICAgICBjbGVhbmVkT2JqW2tleV0gPSBjbGVhbmVkVmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBjbGVhbmVkT2JqO1xuICAgIH1cblxuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICBwcml2YXRlIGdldEZvcm1Nb2RlbCA9IChvYmplY3Q6IGFueSwga2V5OiBzdHJpbmcpOiBhbnkgPT4ge1xuICAgIGlmIChvYmplY3QpIHtcbiAgICAgIGlmIChvYmplY3QuZWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAgIGlmIChvYmplY3QuaWQgPT09IGtleSkge1xuICAgICAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvYmplY3QuZWxlbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBjb25zdCBvYmogPSB0aGlzLmdldEZvcm1Nb2RlbChvYmplY3QuZWxlbWVudHNbaV0sIGtleSk7XG4gICAgICAgICAgaWYgKG9iailcbiAgICAgICAgICAgIHJldHVybiBvYmo7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChvYmplY3QuaWQgPT09IGtleSkge1xuICAgICAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldEFtb3VudEN1cnJlbmN5KGl0ZW06IFNjaGVtYU1vZGVsKTogU2NoZW1hTW9kZWxbXSB7XG4gICAgY29uc3QgZWxlbWVudHM6IFNjaGVtYU1vZGVsW10gPSBbXTtcbiAgICBjb25zdCBjY3kgPSBzdHJ1Y3R1cmVkQ2xvbmUoaXRlbSk7XG4gICAgY29uc3QgYW10ID0gc3RydWN0dXJlZENsb25lKGl0ZW0pO1xuXG4gICAgY2N5LmlkID0gYCR7Y2N5LmlkfV9jY3lgO1xuICAgIGNjeS5uYW1lID0gXCJDY3lcIjtcbiAgICBjY3kuZnJhY3Rpb25EaWdpdHMgPSAnJztcbiAgICBjY3kudG90YWxEaWdpdHMgPSAnJztcbiAgICBjY3kubWF4TGVuZ3RoID0gXCIzXCJcbiAgICBjY3kueHBhdGggPSBgJHtjY3kueHBhdGh9QGNjeWA7XG4gICAgY2N5LmlzQ3VycmVuY3kgPSBmYWxzZTtcbiAgICBlbGVtZW50cy5wdXNoKGNjeSk7XG5cbiAgICBhbXQuaWQgPSBgJHthbXQuaWR9X2FtdGA7XG4gICAgYW10LnhwYXRoID0gYCR7YW10LnhwYXRofS9hbXRgO1xuICAgIGFtdC5pc0N1cnJlbmN5ID0gZmFsc2U7XG4gICAgYW10LnBhdHRlcm4gPSAnJztcbiAgICBlbGVtZW50cy5wdXNoKGFtdCk7XG4gICAgcmV0dXJuIGVsZW1lbnRzO1xuICB9XG59XG4iXX0=
|
|
257
|
+
}], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.CustomDateAdapter }]; } });
|
|
258
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWlzby1mb3JtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaXNvLWZvcm0vc3JjL2xpYi9uZ3gtaXNvLWZvcm0uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUEwQixNQUFNLGdCQUFnQixDQUFDOzs7O0FBT2hGLE1BQU0sT0FBTyxhQUFhO0lBRXhCLFlBQ1UsRUFBZSxFQUNmLFdBQThCO1FBRDlCLE9BQUUsR0FBRixFQUFFLENBQWE7UUFDZixnQkFBVyxHQUFYLFdBQVcsQ0FBbUI7UUFIakMsZUFBVSxHQUFVLEVBQUUsQ0FBQztRQWlOdkIsYUFBUSxHQUFHLENBQUMsR0FBUSxFQUFPLEVBQUU7WUFDbEMsSUFBSSxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsS0FBSyxFQUFFLEVBQUU7Z0JBQzlCLE9BQU8sSUFBSSxDQUFDO2FBQ2I7WUFFRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ3RCLE1BQU0sVUFBVSxHQUFRLEVBQUUsQ0FBQztnQkFDM0IsS0FBSyxNQUFNLEtBQUssSUFBSSxHQUFHLEVBQUU7b0JBQ3ZCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7b0JBQy9DLElBQ0UsWUFBWSxLQUFLLElBQUk7d0JBQ3JCLFlBQVksS0FBSyxFQUFFO3dCQUNuQixNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDO3dCQUNwQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUN6RDt3QkFDQSxVQUFVLENBQUMs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QUcsR0FBRyxDQUFDO1FBQ3BCLEdBQUcsQ0FBQyxLQUFLLEdBQUcsR0FBRyxHQUFHLENBQUMsS0FBSyxNQUFNLENBQUM7UUFDL0IsR0FBRyxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDdkIsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVuQixHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDO1FBQ3pCLEdBQUcsQ0FBQyxLQUFLLEdBQUcsR0FBRyxHQUFHLENBQUMsS0FBSyxNQUFNLENBQUM7UUFDL0IsR0FBRyxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDdkIsR0FBRyxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDakIsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuQixPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDOzhHQWxTVSxhQUFhO2tIQUFiLGFBQWEsY0FGWixNQUFNOzsyRkFFUCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybUNvbnRyb2wsIEZvcm1BcnJheSwgRm9ybUJ1aWxkZXIgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTY2hlbWFNb2RlbCB9IGZyb20gJy4vTW9kZWxzL1NjaGVtYSc7XG5pbXBvcnQgeyBDdXN0b21EYXRlQWRhcHRlciB9IGZyb20gJy4vc2hhcmVkL3NlcnZpY2VzL2N1c3RvbS1kYXRlLWFkYXB0ZXInO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTmd4SXNvU2VydmljZSB7XG4gIHB1YmxpYyBfZm9ybU1vZGVsOiBhbnlbXSA9IFtdO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIGRhdGVTZXJ2aWNlOiBDdXN0b21EYXRlQWRhcHRlclxuICApIHt9XG5cbiAgcHVibGljIG1heE9jY3VycyhtYXhPY2N1cnM6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBtYXhPY2N1cnMgPT09ICd1bmJvdW5kZWQnIHx8IHBhcnNlSW50KG1heE9jY3VycywgMTApID4gMTtcbiAgfVxuXG4gIHB1YmxpYyBpbml0Rm9ybU1vZGVsKG1vZGVsOiBhbnksIGZvcm06IEZvcm1Hcm91cCB8IEZvcm1BcnJheSk6IHZvaWQge1xuICAgIGlmICh0eXBlb2YgbW9kZWwgPT09ICdvYmplY3QnKSB7XG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiBtb2RlbCkge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShtb2RlbFtrZXldKSkge1xuICAgICAgICAgIGNvbnN0IHBhcmVudE5vZGUgPSB0aGlzLmdldEZvcm1Nb2RlbCh0aGlzLl9mb3JtTW9kZWxbMF0sIGtleSk7XG4gICAgICAgICAgY29uc3QgaXRlbSA9IG1vZGVsW2tleV07XG4gICAgICAgICAgY29uc3QgZm9ybUFycmF5ID0gZm9ybS5nZXQoa2V5KSBhcyBGb3JtQXJyYXk7XG4gICAgICAgICAgaWYgKGZvcm1BcnJheSAmJiBmb3JtQXJyYXkubGVuZ3RoICE9PSBpdGVtLmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgbmV3RWxlID0gc3RydWN0dXJlZENsb25lKFxuICAgICAgICAgICAgICBwYXJlbnROb2RlLmVsZW1lbnRzW3BhcmVudE5vZGUuZWxlbWVudHMubGVuZ3RoIC0gMV1cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICEoXG4gICAgICAgICAgICAgICAgbmV3RWxlLm1heE9jY3VycyAmJlxuICAgICAgICAgICAgICAgIHBhcnNlSW50KG5ld0VsZS5tYXhPY2N1cnMsIDEwKSA8PSBwYXJlbnROb2RlLmVsZW1lbnRzLmxlbmd0aFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgY29uc3QgbmV3S2V5czogYW55ID0gW107XG4gICAgICAgICAgICAgIGNvbnN0IGdyb3VwQ29udHJvbHMgPSB0aGlzLmdldEZvcm1Hcm91cENvbnRyb2xzKFxuICAgICAgICAgICAgICAgIG5ld0VsZS5lbGVtZW50cyxcbiAgICAgICAgICAgICAgICBuZXdLZXlzLFxuICAgICAgICAgICAgICAgIHBhcmVudE5vZGUuZWxlbWVudHMubGVuZ3RoIC0gMVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBwYXJlbnROb2RlLmVsZW1lbnRzLnB1c2gobmV3RWxlKTtcbiAgICAgICAgICAgICAgZm9ybUFycmF5LnB1c2goZ3JvdXBDb250cm9scyk7XG4gICAgICAgICAgICAgIHBhcmVudE5vZGUuZWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudDogU2NoZW1hTW9kZWwpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAhZWxlbWVudC5taW5PY2N1cnMgfHxcbiAgICAgICAgICAgICAgICAgIHBhcnNlSW50KGVsZW1lbnQubWluT2NjdXJzLCAxMCkgPT09IDBcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgIGVsZW1lbnQubWluT2NjdXJzID0gJzEnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBmb3JtQXJyYXkgPSBmb3JtLmdldChrZXkpO1xuICAgICAgICAgICAgaWYgKGZvcm1BcnJheSkge1xuICAgICAgICAgICAgICBjb25zdCBmcm1Hcm91cCA9IChmb3JtQXJyYXkgYXMgRm9ybUFycmF5KS5hdChpKTtcbiAgICAgICAgICAgICAgaWYgKGZybUdyb3VwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0Rm9ybU1vZGVsKGl0ZW1baV0sIGZybUdyb3VwIGFzIEZvcm1Hcm91cCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIG1vZGVsW2tleV0gPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Rm9ybU1vZGVsKHRoaXMuX2Zvcm1Nb2RlbFswXSwga2V5KTtcbiAgICAgICAgICBpZiAobm9kZSAmJiAoIW5vZGUubWluT2NjdXJzIHx8IHBhcnNlSW50KG5vZGUubWluT2NjdXJzLCAxMCkgPT09IDApKSB7XG4gICAgICAgICAgICBub2RlLm1pbk9jY3VycyA9ICcxJztcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgX2Zvcm0gPSBmb3JtLmdldChrZXkpIGFzIEZvcm1Hcm91cDtcbiAgICAgICAgICBpZiAoX2Zvcm0pIHtcbiAgICAgICAgICAgIGlmIChub2RlLmRhdGFUeXBlID09PSAnY2hvaWNlJykge1xuICAgICAgICAgICAgICBjb25zdCBjaG9pY2VLZXkgPSBPYmplY3Qua2V5cyhtb2RlbFtrZXldKVswXTtcbiAgICAgICAgICAgICAgY29uc3QgY2hvaWNlRWxlID0gbm9kZS5lbGVtZW50cy5maW5kKFxuICAgICAgICAgICAgICAgIChpdGVtOiBTY2hlbWFNb2RlbCkgPT4gaXRlbS5pZCA9PT0gY2hvaWNlS2V5XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIG5vZGUuY2hvaWNlS2V5ID0gY2hvaWNlS2V5O1xuICAgICAgICAgICAgICBjaG9pY2VFbGUuaGlkZGVuID0gZmFsc2U7XG4gICAgICAgICAgICAgIGNvbnN0IG5ld05vZGUgPSBzdHJ1Y3R1cmVkQ2xvbmUoY2hvaWNlRWxlKTtcbiAgICAgICAgICAgICAgaWYgKG5ld05vZGUuZWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSB0aGlzLmdldEZvcm1Hcm91cENvbnRyb2xzKFxuICAgICAgICAgICAgICAgICAgbmV3Tm9kZS5lbGVtZW50cyxcbiAgICAgICAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIF9mb3JtLmFkZENvbnRyb2wobmV3Tm9kZS5pZCwgZ3JvdXApO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmdldEZvcm1Db250cm9sKCcnKTtcbiAgICAgICAgICAgICAgICBfZm9ybS5hZGRDb250cm9sKG5ld05vZGUuaWQsIGNvbnRyb2wpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmluaXRGb3JtTW9kZWwobW9kZWxba2V5XSwgX2Zvcm0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBfZm9ybSA9IGZvcm0uZ2V0KGtleSkgYXMgRm9ybUNvbnRyb2w7XG4gICAgICAgICAgX2Zvcm0uc2V0VmFsdWUobW9kZWxba2V5XSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkobW9kZWwpKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1vZGVsLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGZybUdyb3VwID0gKGZvcm0gYXMgRm9ybUFycmF5KS5hdChpKTtcbiAgICAgICAgdGhpcy5pbml0Rm9ybU1vZGVsKG1vZGVsW2ldLCBmcm1Hcm91cCBhcyBGb3JtR3JvdXApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRGb3JtR3JvdXBDb250cm9scyhcbiAgICBqc29uOiBTY2hlbWFNb2RlbFtdLFxuICAgIGtleXM6IGFueSxcbiAgICBpbmRleDogbnVtYmVyID0gMCxcbiAgICBjaG9pY2VFbGU6IGJvb2xlYW4gPSBmYWxzZVxuICApOiBGb3JtR3JvdXAge1xuICAgIGxldCBjb250cm9sOiBhbnkgPSB7fTtcbiAgICBsZXQgY29udHJvbHM6IGFueTtcbiAgICBsZXQgdmFsdWUgPSB7fTtcblxuICAgIGpzb24uZm9yRWFjaCgoaXRlbTogU2NoZW1hTW9kZWwpID0+IHtcbiAgICAgIGl0ZW0uaGlkZGVuID0gY2hvaWNlRWxlO1xuICAgICAgdmFsdWUgPSBpdGVtLmVsZW1lbnRzO1xuICAgICAgY29uc3QgaWQgPSBpdGVtLmlkO1xuICAgICAgY29uc3QgZWxlbWVudCA9IHsgLi4uaXRlbSwgZWxlbWVudHM6IFtdLCBpZCB9O1xuICAgICAgaWYgKGl0ZW0uZWxlbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgICBsZXQgY2hvaWNlID0gaXRlbS5kYXRhVHlwZSA9PT0gJ2Nob2ljZSc7XG4gICAgICAgIGlmIChjaG9pY2UpIHtcbiAgICAgICAgICBlbGVtZW50LmNob2ljZUtleSA9ICcnO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm1heE9jY3VycyhpdGVtLm1heE9jY3VycykpIHtcbiAgICAgICAgICBlbGVtZW50LnVuaXF1ZUlkID0gYCR7ZWxlbWVudC5pZH1fJHtpbmRleH1gO1xuICAgICAgICAgIGtleXMucHVzaCh7XG4gICAgICAgICAgICBpZDogZWxlbWVudC5pZCxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICAgICAgeHBhdGg6IGVsZW1lbnQueHBhdGgsXG4gICAgICAgICAgICBlbGVtZW50czogW2VsZW1lbnRdLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmdldEZvcm1Hcm91cENvbnRyb2xzKFxuICAgICAgICAgICAgaXRlbS5lbGVtZW50cyxcbiAgICAgICAgICAgIGVsZW1lbnQuZWxlbWVudHMsXG4gICAgICAgICAgICBpbmRleCxcbiAgICAgICAgICAgIGNob2ljZVxuICAgICAgICAgICk7XG4gICAgICAgICAgY29udHJvbHMgPSB0aGlzLmZiLmFycmF5KFtdKTtcbiAgICAgICAgICBpZiAoIWNob2ljZSkge1xuICAgICAgICAgICAgY29udHJvbHMucHVzaChkYXRhKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29udHJvbFtpZF0gPSBjb250cm9scztcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtLm11bHRpICYmICFpdGVtLmlzRm9ybUNvbnRyb2xzKSB7XG4gICAgICAgICAga2V5cy5wdXNoKHtcbiAgICAgICAgICAgIGlkOiBlbGVtZW50LmlkLFxuICAgICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgICAgICB4cGF0aDogZWxlbWVudC54cGF0aCxcbiAgICAgICAgICAgIGVsZW1lbnRzOiBlbGVtZW50LmVsZW1lbnRzLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmdldEZvcm1Hcm91cENvbnRyb2xzKFxuICAgICAgICAgICAgaXRlbS5lbGVtZW50c1tpdGVtLmVsZW1lbnRzLmxlbmd0aCAtIDFdLmVsZW1lbnRzLFxuICAgICAgICAgICAgZWxlbWVudC5lbGVtZW50cyxcbiAgICAgICAgICAgIGluZGV4LFxuICAgICAgICAgICAgY2hvaWNlXG4gICAgICAgICAgKTtcbiAgICAgICAgICBjb250cm9scyA9IHRoaXMuZmIuYXJyYXkoW10pO1xuICAgICAgICAgIGlmICghY2hvaWNlKSB7XG4gICAgICAgICAgICBjb250cm9scy5wdXNoKGRhdGEpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb250cm9sW2lkXSA9IGNvbnRyb2xzO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0ubXVsdGkgJiYgaXRlbS5pc0Zvcm1Db250cm9scykge1xuICAgICAgICAgIGlmIChpdGVtLmVsZW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIGl0ZW0uZWxlbWVudHMuc3BsaWNlKDEsIGl0ZW0uZWxlbWVudHMubGVuZ3RoIC0gMSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGtleXMucHVzaChpdGVtKTtcbiAgICAgICAgICBjb250cm9sW2lkXSA9IHRoaXMuZmIuYXJyYXkoW3RoaXMuZ2V0Rm9ybUNvbnRyb2woaXRlbS52YWx1ZSB8fCAnJyldKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBrZXlzLnB1c2goZWxlbWVudCk7XG4gICAgICAgICAgY29uc3QgZGF0YSA9IHRoaXMuZ2V0Rm9ybUdyb3VwQ29udHJvbHMoXG4gICAgICAgICAgICBpdGVtLmVsZW1lbnRzLFxuICAgICAgICAgICAgZWxlbWVudC5lbGVtZW50cyxcbiAgICAgICAgICAgIGluZGV4LFxuICAgICAgICAgICAgY2hvaWNlXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAoIWNob2ljZSkge1xuICAgICAgICAgICAgY29udHJvbFtpZF0gPSBkYXRhO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb250cm9sW2lkXSA9IHRoaXMuZmIuZ3JvdXAoe30pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0aGlzLm1heE9jY3VycyhpdGVtLm1heE9jY3VycykpIHtcbiAgICAgICAga2V5cy5wdXNoKHtcbiAgICAgICAgICBpZDogZWxlbWVudC5pZCxcbiAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgICB4cGF0aDogZWxlbWVudC54cGF0aCxcbiAgICAgICAgICBlbGVtZW50czogW2VsZW1lbnRdLFxuICAgICAgICAgIGlzRm9ybUNvbnRyb2xzOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgY29udHJvbFtpZF0gPSB0aGlzLmZiLmFycmF5KFt0aGlzLmdldEZvcm1Db250cm9sKGl0ZW0udmFsdWUpXSk7XG4gICAgICB9IGVsc2UgaWYgKGl0ZW0uaXNDdXJyZW5jeSkge1xuICAgICAgICBjb25zdCBfYW1vdW50Q3VycmVuY3kgPSB0aGlzLmdldEFtb3VudEN1cnJlbmN5KGl0ZW0pO1xuICAgICAgICBrZXlzLnB1c2goZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmdldEZvcm1Hcm91cENvbnRyb2xzKFxuICAgICAgICAgIF9hbW91bnRDdXJyZW5jeSxcbiAgICAgICAgICBlbGVtZW50LmVsZW1lbnRzLFxuICAgICAgICAgIDAsXG4gICAgICAgICAgZmFsc2VcbiAgICAgICAgKTtcbiAgICAgICAgY29udHJvbFtpdGVtLmlkXSA9IGRhdGE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBrZXlzLnB1c2goZWxlbWVudCk7XG4gICAgICAgIGNvbnRyb2xbaWRdID0gdGhpcy5nZXRGb3JtQ29udHJvbChpdGVtLnZhbHVlIHx8ICcnKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBuZXcgRm9ybUdyb3VwKGNvbnRyb2wpO1xuICB9XG5cbiAgcHVibGljIGdldEZvcm1Db250cm9sKHZhbHVlczogYW55KTogRm9ybUNvbnRyb2wge1xuICAgIHJldHVybiBuZXcgRm9ybUNvbnRyb2wodmFsdWVzIHx8ICcnLCB7XG4gICAgICB1cGRhdGVPbjogJ2JsdXInLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHNhbml0aXplID0gKG9iajogYW55KTogYW55ID0+IHtcbiAgICBpZiAob2JqID09PSBudWxsIHx8IG9iaiA9PT0gJycpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChBcnJheS5pc0FycmF5KG9iaikpIHtcbiAgICAgIGNvbnN0IGNsZWFuZWRPYmo6IGFueSA9IFtdO1xuICAgICAgZm9yIChjb25zdCBpbmRleCBpbiBvYmopIHtcbiAgICAgICAgY29uc3QgY2xlYW5lZFZhbHVlID0gdGhpcy5zYW5pdGl6ZShvYmpbaW5kZXhdKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGNsZWFuZWRWYWx1ZSAhPT0gbnVsbCAmJlxuICAgICAgICAgIGNsZWFuZWRWYWx1ZSAhPT0gJycgJiZcbiAgICAgICAgICBPYmplY3Qua2V5cyhjbGVhbmVkVmFsdWUpLmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICAoIUFycmF5LmlzQXJyYXkoY2xlYW5lZFZhbHVlKSB8fCBjbGVhbmVkVmFsdWUubGVuZ3RoID4gMClcbiAgICAgICAgKSB7XG4gICAgICAgICAgY2xlYW5lZE9iai5wdXNoKGNsZWFuZWRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBjbGVhbmVkT2JqO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIG9iaiA9PT0gJ29iamVjdCcgJiYgb2JqIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgY29uc3QgY2xlYW5lZE9iaiA9IHRoaXMuZGF0ZVNlcnZpY2UuZm9ybWF0KG9iaiwgJ1lZWVktTU0tREQnKTtcbiAgICAgIHJldHVybiBjbGVhbmVkT2JqO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIG9iaiA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGNvbnN0IGNsZWFuZWRPYmo6IGFueSA9IHt9O1xuXG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiBvYmopIHtcbiAgICAgICAgY29uc3QgY2xlYW5lZFZhbHVlID0gdGhpcy5zYW5pdGl6ZShvYmpba2V5XSk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBjbGVhbmVkVmFsdWUgIT09IG51bGwgJiZcbiAgICAgICAgICBjbGVhbmVkVmFsdWUgIT09ICcnICYmXG4gICAgICAgICAgT2JqZWN0LmtleXMoY2xlYW5lZFZhbHVlKS5sZW5ndGggPiAwICYmXG4gICAgICAgICAgKCFBcnJheS5pc0FycmF5KGNsZWFuZWRWYWx1ZSkgfHwgY2xlYW5lZFZhbHVlLmxlbmd0aCA+IDApXG4gICAgICAgICkge1xuICAgICAgICAgIGNsZWFuZWRPYmpba2V5XSA9IGNsZWFuZWRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGNsZWFuZWRPYmo7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9iajtcbiAgfTtcblxuICBwcml2YXRlIGdldEZvcm1Nb2RlbCA9IChvYmplY3Q6IGFueSwga2V5OiBzdHJpbmcpOiBhbnkgPT4ge1xuICAgIGlmIChvYmplY3QpIHtcbiAgICAgIGlmIChvYmplY3QuZWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAgIGlmIChvYmplY3QuaWQgPT09IGtleSkge1xuICAgICAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvYmplY3QuZWxlbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBjb25zdCBvYmogPSB0aGlzLmdldEZvcm1Nb2RlbChvYmplY3QuZWxlbWVudHNbaV0sIGtleSk7XG4gICAgICAgICAgaWYgKG9iaikgcmV0dXJuIG9iajtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKG9iamVjdC5pZCA9PT0ga2V5KSB7XG4gICAgICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIGdldEFtb3VudEN1cnJlbmN5KGl0ZW06IFNjaGVtYU1vZGVsKTogU2NoZW1hTW9kZWxbXSB7XG4gICAgY29uc3QgZWxlbWVudHM6IFNjaGVtYU1vZGVsW10gPSBbXTtcbiAgICBjb25zdCBjY3kgPSBzdHJ1Y3R1cmVkQ2xvbmUoaXRlbSk7XG4gICAgY29uc3QgYW10ID0gc3RydWN0dXJlZENsb25lKGl0ZW0pO1xuXG4gICAgY2N5LmlkID0gYCR7Y2N5LmlkfV9DY3lgO1xuICAgIGNjeS5uYW1lID0gJ0NjeSc7XG4gICAgY2N5LmZyYWN0aW9uRGlnaXRzID0gJyc7XG4gICAgY2N5LnRvdGFsRGlnaXRzID0gJyc7XG4gICAgY2N5Lm1heExlbmd0aCA9ICczJztcbiAgICBjY3kueHBhdGggPSBgJHtjY3kueHBhdGh9QENjeWA7XG4gICAgY2N5LmlzQ3VycmVuY3kgPSBmYWxzZTtcbiAgICBlbGVtZW50cy5wdXNoKGNjeSk7XG5cbiAgICBhbXQuaWQgPSBgJHthbXQuaWR9X0FtdGA7XG4gICAgYW10LnhwYXRoID0gYCR7YW10LnhwYXRofS9BbXRgO1xuICAgIGFtdC5pc0N1cnJlbmN5ID0gZmFsc2U7XG4gICAgYW10LnBhdHRlcm4gPSAnJztcbiAgICBlbGVtZW50cy5wdXNoKGFtdCk7XG4gICAgcmV0dXJuIGVsZW1lbnRzO1xuICB9XG59XG4iXX0=
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
export
|
|
1
|
+
import { Injectable } from "@angular/core";
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class ComponentService {
|
|
4
4
|
getComponent(viewContainerRef, dynamicModel) {
|
|
5
5
|
const componentRef = viewContainerRef.createComponent(dynamicModel.component);
|
|
6
6
|
if (dynamicModel.prop) {
|
|
@@ -8,8 +8,13 @@ export let ComponentService = class ComponentService {
|
|
|
8
8
|
}
|
|
9
9
|
return componentRef;
|
|
10
10
|
}
|
|
11
|
-
};
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: ComponentService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
12
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: ComponentService, providedIn: 'root' }); }
|
|
13
|
+
}
|
|
14
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: ComponentService, decorators: [{
|
|
15
|
+
type: Injectable,
|
|
16
|
+
args: [{
|
|
17
|
+
providedIn: 'root'
|
|
18
|
+
}]
|
|
19
|
+
}] });
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaXNvLWZvcm0vc3JjL2xpYi9zaGFyZWQvc2VydmljZXMvY29tcG9uZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixVQUFVLEVBQW9CLE1BQU0sZUFBZSxDQUFDOztBQU0zRSxNQUFNLE9BQU8sZ0JBQWdCO0lBQ2xCLFlBQVksQ0FBSSxnQkFBa0MsRUFBQyxZQUE0QjtRQUNsRixNQUFNLFlBQVksR0FBRyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUksWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2pGLElBQUcsWUFBWSxDQUFDLElBQUksRUFBQztZQUNoQixZQUFZLENBQUMsUUFBZ0IsQ0FBQyxJQUFJLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQztTQUMzRDtRQUNELE9BQU8sWUFBWSxDQUFDO0lBQ3hCLENBQUM7OEdBUFEsZ0JBQWdCO2tIQUFoQixnQkFBZ0IsY0FGYixNQUFNOzsyRkFFVCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50UmVmLCBJbmplY3RhYmxlLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQ29tcG9uZW50TW9kZWwgfSBmcm9tIFwiLi4vbW9kZWxzL2NvbXBvbmVudC5tb2RlbFwiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbiAgfSlcclxuZXhwb3J0IGNsYXNzIENvbXBvbmVudFNlcnZpY2V7XHJcbiAgICBwdWJsaWMgZ2V0Q29tcG9uZW50PFQ+KHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsZHluYW1pY01vZGVsOiBDb21wb25lbnRNb2RlbCk6IENvbXBvbmVudFJlZjxUPiB7XHJcbiAgICAgICAgY29uc3QgY29tcG9uZW50UmVmID0gdmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQ8VD4oZHluYW1pY01vZGVsLmNvbXBvbmVudCk7XHJcbiAgICAgICAgaWYoZHluYW1pY01vZGVsLnByb3Ape1xyXG4gICAgICAgICAgICAoY29tcG9uZW50UmVmLmluc3RhbmNlIGFzIGFueSkucHJvcCA9IGR5bmFtaWNNb2RlbC5wcm9wO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gY29tcG9uZW50UmVmO1xyXG4gICAgfVxyXG59XHJcblxyXG4iXX0=
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { ComponentModel } from "../models/component.model";
|
|
2
2
|
import { IsoMatCurrency, IsoMatDate, IsoMatDateTime, IsoMatInput, IsoMatSelect, IsoMatTextarea } from "../../components";
|
|
3
|
+
import { Injectable } from "@angular/core";
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
3
5
|
export class ControlService {
|
|
4
6
|
getComponentByType(controlModel, formControl) {
|
|
5
7
|
if (!controlModel.dataType) {
|
|
@@ -31,5 +33,13 @@ export class ControlService {
|
|
|
31
33
|
return new ComponentModel(IsoMatInput, { "control": controlModel, "formControl": formControl });
|
|
32
34
|
}
|
|
33
35
|
}
|
|
36
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: ControlService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
37
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: ControlService, providedIn: 'root' }); }
|
|
34
38
|
}
|
|
35
|
-
|
|
39
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: ControlService, decorators: [{
|
|
40
|
+
type: Injectable,
|
|
41
|
+
args: [{
|
|
42
|
+
providedIn: 'root'
|
|
43
|
+
}]
|
|
44
|
+
}] });
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWlzby1mb3JtL3NyYy9saWIvc2hhcmVkL3NlcnZpY2VzL2NvbnRyb2wuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDekgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLM0MsTUFBTSxPQUFPLGNBQWM7SUFFaEIsa0JBQWtCLENBQUMsWUFBMkIsRUFBRSxXQUF3QjtRQUMzRSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRTtZQUN4QixPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixFQUFFLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN4RCxNQUFNLGtDQUFrQyxDQUFDO1NBQzVDO1FBQ0QsUUFBUSxZQUFZLENBQUMsUUFBUSxDQUFDLGlCQUFpQixFQUFFLEVBQUU7WUFDL0MsS0FBSyxRQUFRLENBQUM7WUFDZCxLQUFLLFNBQVM7Z0JBQ1YsSUFBRyxZQUFZLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUM1RDtvQkFDSSxPQUFPLElBQUksY0FBYyxDQUFDLGNBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7aUJBQ3RHO2dCQUNELElBQUksWUFBWSxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFO29CQUNqQyxPQUFPLElBQUksY0FBYyxDQUFDLFlBQVksRUFBRSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7aUJBQ3BHO2dCQUNELElBQUksWUFBWSxDQUFDLFNBQVMsSUFBSSxRQUFRLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7b0JBQ3JFLE9BQU8sSUFBSSxjQUFjLENBQUMsY0FBYyxFQUFFLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztpQkFDdEc7Z0JBQ0QsT0FBTyxJQUFJLGNBQWMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQ3BHLEtBQUssTUFBTTtnQkFDUCxPQUFPLElBQUksY0FBYyxDQUFDLFVBQVUsRUFBRSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7WUFDbkcsS0FBSyxVQUFVO2dCQUNYLE9BQU8sSUFBSSxjQUFjLENBQUMsY0FBYyxFQUFFLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztZQUN2RyxLQUFLLFNBQVM7Z0JBQ1YsT0FBTyxJQUFJLGNBQWMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQ25HLEtBQUssS0FBSztnQkFDTixPQUFPLElBQUksY0FBYyxDQUFDLGNBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7WUFDdkc7Z0JBQ0ksT0FBTyxJQUFJLGNBQWMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO1NBQ3ZHO0lBQ0wsQ0FBQzs4R0FoQ1EsY0FBYztrSEFBZCxjQUFjLGNBRlgsTUFBTTs7MkZBRVQsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBDb21wb25lbnRNb2RlbCB9IGZyb20gXCIuLi9tb2RlbHMvY29tcG9uZW50Lm1vZGVsXCI7XHJcbmltcG9ydCB7IFNjaGVtYUVsZW1lbnQgfSBmcm9tIFwiLi4vLi4vTW9kZWxzL1NjaGVtYVwiO1xyXG5pbXBvcnQgeyBJc29NYXRDdXJyZW5jeSwgSXNvTWF0RGF0ZSwgSXNvTWF0RGF0ZVRpbWUsIElzb01hdElucHV0LCBJc29NYXRTZWxlY3QsIElzb01hdFRleHRhcmVhIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHNcIjtcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCdcclxuICB9KVxyXG5leHBvcnQgY2xhc3MgQ29udHJvbFNlcnZpY2Uge1xyXG5cclxuICAgIHB1YmxpYyBnZXRDb21wb25lbnRCeVR5cGUoY29udHJvbE1vZGVsOiBTY2hlbWFFbGVtZW50LCBmb3JtQ29udHJvbDogRm9ybUNvbnRyb2wpOiBDb21wb25lbnRNb2RlbCB7XHJcbiAgICAgICAgaWYgKCFjb250cm9sTW9kZWwuZGF0YVR5cGUpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJjb250cm9sTW9kZWwgbmFtZSB7MH1cIiwgY29udHJvbE1vZGVsLm5hbWUpO1xyXG4gICAgICAgICAgICB0aHJvdyBgQXJndW1lbnQgbnVsbCBleGNlcHRpb24gZGF0YVR5cGVgO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzd2l0Y2ggKGNvbnRyb2xNb2RlbC5kYXRhVHlwZS50b0xvY2FsZUxvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgIGNhc2UgXCJzdHJpbmdcIjpcclxuICAgICAgICAgICAgY2FzZSBcImRlY2ltYWxcIjpcclxuICAgICAgICAgICAgICAgIGlmKGNvbnRyb2xNb2RlbC5uYW1lLnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5kZXhPZignY2N5JykgPiAtMSlcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENvbXBvbmVudE1vZGVsKElzb01hdEN1cnJlbmN5LCB7IFwiY29udHJvbFwiOiBjb250cm9sTW9kZWwsIFwiZm9ybUNvbnRyb2xcIjogZm9ybUNvbnRyb2wgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoY29udHJvbE1vZGVsLnZhbHVlcz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ29tcG9uZW50TW9kZWwoSXNvTWF0U2VsZWN0LCB7IFwiY29udHJvbFwiOiBjb250cm9sTW9kZWwsIFwiZm9ybUNvbnRyb2xcIjogZm9ybUNvbnRyb2wgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoY29udHJvbE1vZGVsLm1heExlbmd0aCAmJiBwYXJzZUludChjb250cm9sTW9kZWwubWF4TGVuZ3RoLCAxMCkgPiA1MCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ29tcG9uZW50TW9kZWwoSXNvTWF0VGV4dGFyZWEsIHsgXCJjb250cm9sXCI6IGNvbnRyb2xNb2RlbCwgXCJmb3JtQ29udHJvbFwiOiBmb3JtQ29udHJvbCB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ29tcG9uZW50TW9kZWwoSXNvTWF0SW5wdXQsIHsgXCJjb250cm9sXCI6IGNvbnRyb2xNb2RlbCwgXCJmb3JtQ29udHJvbFwiOiBmb3JtQ29udHJvbCB9KTtcclxuICAgICAgICAgICAgY2FzZSBcImRhdGVcIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ29tcG9uZW50TW9kZWwoSXNvTWF0RGF0ZSwgeyBcImNvbnRyb2xcIjogY29udHJvbE1vZGVsLCBcImZvcm1Db250cm9sXCI6IGZvcm1Db250cm9sIH0pO1xyXG4gICAgICAgICAgICBjYXNlIFwiZGF0ZXRpbWVcIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ29tcG9uZW50TW9kZWwoSXNvTWF0RGF0ZVRpbWUsIHsgXCJjb250cm9sXCI6IGNvbnRyb2xNb2RlbCwgXCJmb3JtQ29udHJvbFwiOiBmb3JtQ29udHJvbCB9KTtcclxuICAgICAgICAgICAgY2FzZSBcImJvb2xlYW5cIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ29tcG9uZW50TW9kZWwoSXNvTWF0RGF0ZSwgeyBcImNvbnRyb2xcIjogY29udHJvbE1vZGVsLCBcImZvcm1Db250cm9sXCI6IGZvcm1Db250cm9sIH0pO1xyXG4gICAgICAgICAgICBjYXNlIFwiYW55XCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENvbXBvbmVudE1vZGVsKElzb01hdFRleHRhcmVhLCB7IFwiY29udHJvbFwiOiBjb250cm9sTW9kZWwsIFwiZm9ybUNvbnRyb2xcIjogZm9ybUNvbnRyb2wgfSk7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENvbXBvbmVudE1vZGVsKElzb01hdElucHV0LCB7IFwiY29udHJvbFwiOiBjb250cm9sTW9kZWwsIFwiZm9ybUNvbnRyb2xcIjogZm9ybUNvbnRyb2wgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59Il19
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { NativeDateAdapter } from '@angular/material/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class CustomDateAdapter extends NativeDateAdapter {
|
|
5
|
+
format(date, displayFormat) {
|
|
6
|
+
const day = this._to2digit(date.getDate());
|
|
7
|
+
const month = this._to2digit(date.getMonth() + 1); // Months are zero-based
|
|
8
|
+
const year = date.getFullYear();
|
|
9
|
+
return `${year}-${month}-${day}`;
|
|
10
|
+
}
|
|
11
|
+
_to2digit(n) {
|
|
12
|
+
return ('00' + n).slice(-2);
|
|
13
|
+
}
|
|
14
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: CustomDateAdapter, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
15
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: CustomDateAdapter, providedIn: 'root' }); }
|
|
16
|
+
}
|
|
17
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: CustomDateAdapter, decorators: [{
|
|
18
|
+
type: Injectable,
|
|
19
|
+
args: [{
|
|
20
|
+
providedIn: 'root'
|
|
21
|
+
}]
|
|
22
|
+
}] });
|
|
23
|
+
export const CUSTOM_DATE_FORMATS = {
|
|
24
|
+
parse: {
|
|
25
|
+
dateInput: 'YYYY-MM-DD',
|
|
26
|
+
},
|
|
27
|
+
display: {
|
|
28
|
+
dateInput: 'YYYY-MM-DD',
|
|
29
|
+
monthYearLabel: 'MMM YYYY',
|
|
30
|
+
dateA11yLabel: 'LL',
|
|
31
|
+
monthYearA11yLabel: 'MMMM YYYY',
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWRhdGUtYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1pc28tZm9ybS9zcmMvbGliL3NoYXJlZC9zZXJ2aWNlcy9jdXN0b20tZGF0ZS1hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGlCQUFpQixFQUFrQixNQUFNLHdCQUF3QixDQUFDOztBQUszRSxNQUFNLE9BQU8saUJBQWtCLFNBQVEsaUJBQWlCO0lBQ3RDLE1BQU0sQ0FBQyxJQUFVLEVBQUUsYUFBcUI7UUFDdEQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUMzQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLHdCQUF3QjtRQUMzRSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDaEMsT0FBTyxHQUFHLElBQUksSUFBSSxLQUFLLElBQUksR0FBRyxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVPLFNBQVMsQ0FBQyxDQUFTO1FBQ3pCLE9BQU8sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUIsQ0FBQzs4R0FWVSxpQkFBaUI7a0hBQWpCLGlCQUFpQixjQUZkLE1BQU07OzJGQUVULGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7O0FBY0gsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQW1CO0lBQ2pELEtBQUssRUFBRTtRQUNMLFNBQVMsRUFBRSxZQUFZO0tBQ3hCO0lBQ0QsT0FBTyxFQUFFO1FBQ1AsU0FBUyxFQUFFLFlBQVk7UUFDdkIsY0FBYyxFQUFFLFVBQVU7UUFDMUIsYUFBYSxFQUFFLElBQUk7UUFDbkIsa0JBQWtCLEVBQUUsV0FBVztLQUNoQztDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5hdGl2ZURhdGVBZGFwdGVyLCBNYXREYXRlRm9ybWF0cyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbiAgfSlcclxuZXhwb3J0IGNsYXNzIEN1c3RvbURhdGVBZGFwdGVyIGV4dGVuZHMgTmF0aXZlRGF0ZUFkYXB0ZXIge1xyXG4gIHB1YmxpYyBvdmVycmlkZSBmb3JtYXQoZGF0ZTogRGF0ZSwgZGlzcGxheUZvcm1hdDogT2JqZWN0KTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGRheSA9IHRoaXMuX3RvMmRpZ2l0KGRhdGUuZ2V0RGF0ZSgpKTtcclxuICAgIGNvbnN0IG1vbnRoID0gdGhpcy5fdG8yZGlnaXQoZGF0ZS5nZXRNb250aCgpICsgMSk7IC8vIE1vbnRocyBhcmUgemVyby1iYXNlZFxyXG4gICAgY29uc3QgeWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcclxuICAgIHJldHVybiBgJHt5ZWFyfS0ke21vbnRofS0ke2RheX1gO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdG8yZGlnaXQobjogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gKCcwMCcgKyBuKS5zbGljZSgtMik7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgQ1VTVE9NX0RBVEVfRk9STUFUUzogTWF0RGF0ZUZvcm1hdHMgPSB7XHJcbiAgcGFyc2U6IHtcclxuICAgIGRhdGVJbnB1dDogJ1lZWVktTU0tREQnLFxyXG4gIH0sXHJcbiAgZGlzcGxheToge1xyXG4gICAgZGF0ZUlucHV0OiAnWVlZWS1NTS1ERCcsXHJcbiAgICBtb250aFllYXJMYWJlbDogJ01NTSBZWVlZJyxcclxuICAgIGRhdGVBMTF5TGFiZWw6ICdMTCcsXHJcbiAgICBtb250aFllYXJBMTF5TGFiZWw6ICdNTU1NIFlZWVknLFxyXG4gIH0sXHJcbn07XHJcbiJdfQ==
|