@yibozhang/pro-table 0.0.3 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/README.md +55 -55
  2. package/bundles/yibozhang-pro-table.umd.js +420 -374
  3. package/bundles/yibozhang-pro-table.umd.js.map +1 -1
  4. package/bundles/yibozhang-pro-table.umd.min.js +1 -1
  5. package/bundles/yibozhang-pro-table.umd.min.js.map +1 -1
  6. package/esm2015/lib/components/colmuns-setting/colmuns-setting.component.js +1 -1
  7. package/esm2015/lib/components/dynamic-search-field/dynamic-search-field.component.js +1 -1
  8. package/esm2015/lib/constants.js +1 -1
  9. package/esm2015/lib/page-container/page-container.component.js +1 -1
  10. package/esm2015/lib/page-container/page-container.module.js +1 -1
  11. package/esm2015/lib/page-public/antd-form.js +35 -360
  12. package/esm2015/lib/page-public/array-form.js +340 -0
  13. package/esm2015/lib/plate-input/plate-input.component.js +1 -1
  14. package/esm2015/lib/plate-input/plate-input.module.js +1 -1
  15. package/esm2015/lib/plate-input/plate-prefix-load.service.js +1 -1
  16. package/esm2015/lib/pro-table.component.js +1 -1
  17. package/esm2015/lib/pro-table.module.js +1 -1
  18. package/esm2015/lib/table-search-bar/table-search-bar-module.js +1 -1
  19. package/esm2015/lib/table-search-bar/table-search-bar.component.js +1 -1
  20. package/esm2015/lib/tokens.js +1 -1
  21. package/esm2015/lib/type.js +1 -1
  22. package/esm2015/public-api.js +4 -2
  23. package/esm2015/yibozhang-pro-table.js +1 -1
  24. package/fesm2015/yibozhang-pro-table.js +374 -360
  25. package/fesm2015/yibozhang-pro-table.js.map +1 -1
  26. package/lib/components/colmuns-setting/colmuns-setting.component.d.ts.map +1 -1
  27. package/lib/components/dynamic-search-field/dynamic-search-field.component.d.ts.map +1 -1
  28. package/lib/constants.d.ts.map +1 -1
  29. package/lib/page-container/page-container.component.d.ts.map +1 -1
  30. package/lib/page-container/page-container.module.d.ts.map +1 -1
  31. package/lib/page-public/antd-form.d.ts +1 -20
  32. package/lib/page-public/antd-form.d.ts.map +1 -1
  33. package/lib/page-public/array-form.d.ts +96 -0
  34. package/lib/page-public/array-form.d.ts.map +1 -0
  35. package/lib/plate-input/plate-input.component.d.ts.map +1 -1
  36. package/lib/plate-input/plate-input.module.d.ts.map +1 -1
  37. package/lib/plate-input/plate-prefix-load.service.d.ts.map +1 -1
  38. package/lib/pro-table.component.d.ts.map +1 -1
  39. package/lib/pro-table.module.d.ts.map +1 -1
  40. package/lib/table-search-bar/table-search-bar-module.d.ts.map +1 -1
  41. package/lib/table-search-bar/table-search-bar.component.d.ts.map +1 -1
  42. package/lib/tokens.d.ts.map +1 -1
  43. package/lib/type.d.ts.map +1 -1
  44. package/package.json +1 -1
  45. package/public-api.d.ts +4 -2
  46. package/public-api.d.ts.map +1 -1
  47. package/yibozhang-pro-table.d.ts.map +1 -1
  48. package/yibozhang-pro-table.metadata.json +1 -1
@@ -0,0 +1,340 @@
1
+ import { Injectable } from "@angular/core";
2
+ import { v4 as uuidv4 } from "uuid";
3
+ import * as i0 from "@angular/core";
4
+ /** 数组型数据收集基础服务 */
5
+ export class ArrayFormService {
6
+ constructor() {
7
+ this.formStore = {};
8
+ }
9
+ /** 深度克隆值 */
10
+ cloneValue(value) {
11
+ if (value === null || value === undefined) {
12
+ return value;
13
+ }
14
+ if (Array.isArray(value)) {
15
+ return value.map((item) => this.cloneValue(item));
16
+ }
17
+ if (typeof value === "object") {
18
+ const cloned = {};
19
+ for (const key of Object.keys(value)) {
20
+ cloned[key] = this.cloneValue(value[key]);
21
+ }
22
+ return cloned;
23
+ }
24
+ return value;
25
+ }
26
+ /** 比较两个值是否相等 */
27
+ isEqual(a, b) {
28
+ if (a === b)
29
+ return true;
30
+ if (a === null || b === null)
31
+ return a === b;
32
+ if (a === undefined || b === undefined)
33
+ return a === b;
34
+ if (typeof a !== typeof b)
35
+ return false;
36
+ if (Array.isArray(a) && Array.isArray(b)) {
37
+ if (a.length !== b.length)
38
+ return false;
39
+ return a.every((item, index) => this.isEqual(item, b[index]));
40
+ }
41
+ if (typeof a === "object" && typeof b === "object") {
42
+ const keysA = Object.keys(a);
43
+ const keysB = Object.keys(b);
44
+ if (keysA.length !== keysB.length)
45
+ return false;
46
+ return keysA.every((key) => this.isEqual(a[key], b[key]));
47
+ }
48
+ return false;
49
+ }
50
+ /** 创建行的初始值快照 */
51
+ createRowSnapshot(row, fields) {
52
+ const snapshot = {};
53
+ fields.forEach((field) => {
54
+ snapshot[field.name] = this.cloneValue(row[field.name]);
55
+ });
56
+ return snapshot;
57
+ }
58
+ /** 初始化数组数据,添加 uid 和 isEdit 字段 */
59
+ initializeData(data) {
60
+ return data.map((item) => this.enrichRow(item));
61
+ }
62
+ /** 为单行数据添加 uid 和 isEdit 字段 */
63
+ enrichRow(row) {
64
+ return Object.assign(Object.assign({}, row), { uid: row.uid || uuidv4(), isEdit: row.isEdit !== undefined ? row.isEdit : false, disabled: row.disabled !== undefined ? row.disabled : false });
65
+ }
66
+ /** 新增一行数据 */
67
+ addRow(data, defaultValues) {
68
+ const newRow = Object.assign(Object.assign({}, defaultValues), { uid: uuidv4(), isEdit: true, isAdd: true, disabled: false });
69
+ data.push(newRow);
70
+ return newRow;
71
+ }
72
+ /** 校验单个字段 */
73
+ validateField(row, fieldName, config) {
74
+ const fieldConfig = config.fields.find((f) => f.name === fieldName);
75
+ if (!fieldConfig) {
76
+ return "";
77
+ }
78
+ if (fieldConfig.validator) {
79
+ return fieldConfig.validator(row[fieldName], row, fieldName);
80
+ }
81
+ return "";
82
+ }
83
+ /** 校验整行数据 */
84
+ validateRow(row, config) {
85
+ const results = {};
86
+ config.fields.forEach((fieldConfig) => {
87
+ results[fieldConfig.name] = this.validateField(row, fieldConfig.name, config);
88
+ });
89
+ return results;
90
+ }
91
+ /** 校验整个数组 */
92
+ validateData(data, config) {
93
+ const results = {};
94
+ data.forEach((row) => {
95
+ results[row.uid] = this.validateRow(row, config);
96
+ });
97
+ return results;
98
+ }
99
+ /** 注册表单到存储 */
100
+ registerForm(formName, data, config) {
101
+ const initializedData = this.initializeData(data);
102
+ // 记录初始值快照
103
+ const initialSnapshot = {};
104
+ initializedData.forEach((row) => {
105
+ initialSnapshot[row.uid] = this.createRowSnapshot(row, config.fields);
106
+ });
107
+ this.formStore[formName] = {
108
+ data: initializedData,
109
+ config,
110
+ validationResults: {},
111
+ initialSnapshot,
112
+ editingSnapshot: {},
113
+ allTouched: false,
114
+ rowTouched: {},
115
+ };
116
+ // 如果配置了自动更新,立即更新一次
117
+ this.autoUpdateArrayReference(formName);
118
+ }
119
+ /** 从存储中获取表单 */
120
+ getForm(formName) {
121
+ return this.formStore[formName];
122
+ }
123
+ /** 从存储中获取表单数据 */
124
+ getFormData(formName) {
125
+ const form = this.formStore[formName];
126
+ if (!form) {
127
+ return undefined;
128
+ }
129
+ return form.data.map((item) => {
130
+ delete item.isEdit;
131
+ delete item.isAdd;
132
+ delete item.uid;
133
+ return item;
134
+ });
135
+ }
136
+ /** 向表单添加行 */
137
+ addRowToForm(formName, defaultValues) {
138
+ const form = this.formStore[formName];
139
+ if (!form) {
140
+ return undefined;
141
+ }
142
+ const newRow = this.addRow(form.data, defaultValues);
143
+ // 为新行记录初始值快照
144
+ form.initialSnapshot[newRow.uid] = this.createRowSnapshot(newRow, form.config.fields);
145
+ // 自动更新外部数组引用
146
+ this.autoUpdateArrayReference(formName);
147
+ return newRow;
148
+ }
149
+ /** 校验表单,自动标记所有字段为已触碰 */
150
+ validateForm(formName) {
151
+ const form = this.formStore[formName];
152
+ if (!form) {
153
+ return true;
154
+ }
155
+ // 标记所有字段为已触碰
156
+ form.allTouched = true;
157
+ const results = this.validateData(form.data, form.config);
158
+ form.validationResults = results;
159
+ // 检查是否有任何错误
160
+ for (const uid of Object.keys(results)) {
161
+ for (const fieldName of Object.keys(results[uid])) {
162
+ if (results[uid][fieldName]) {
163
+ return false;
164
+ }
165
+ }
166
+ }
167
+ return true;
168
+ }
169
+ /** 开启编辑模式,保存快照用于取消恢复 */
170
+ enableEdit(formName, row) {
171
+ const form = this.formStore[formName];
172
+ if (form && row.uid) {
173
+ // 保存编辑前的快照
174
+ form.editingSnapshot[row.uid] = this.createRowSnapshot(row, form.config.fields);
175
+ }
176
+ row.isEdit = true;
177
+ }
178
+ /** 取消编辑,恢复到编辑前的数据 */
179
+ disableEdit(formName, row) {
180
+ const form = this.formStore[formName];
181
+ if (form && row.uid && form.editingSnapshot[row.uid]) {
182
+ // 恢复编辑前的数据
183
+ const snapshot = form.editingSnapshot[row.uid];
184
+ form.config.fields.forEach((field) => {
185
+ row[field.name] = this.cloneValue(snapshot[field.name]);
186
+ });
187
+ // 更新初始快照为恢复后的值,消除 touched 状态
188
+ form.initialSnapshot[row.uid] = this.cloneValue(snapshot);
189
+ // 清理编辑快照和 touched 状态
190
+ delete form.editingSnapshot[row.uid];
191
+ delete form.rowTouched[row.uid];
192
+ // 清理该行的校验结果
193
+ if (form.validationResults) {
194
+ delete form.validationResults[row.uid];
195
+ }
196
+ }
197
+ row.isEdit = false;
198
+ }
199
+ /** 确认编辑,保留修改后的数据 */
200
+ confirmEdit(formName, row) {
201
+ const form = this.formStore[formName];
202
+ if (form && row.uid) {
203
+ // 清理编辑快照(保留当前数据)
204
+ if (form.editingSnapshot[row.uid]) {
205
+ delete form.editingSnapshot[row.uid];
206
+ }
207
+ // 更新初始快照为当前值(用于后续 touched 检测)
208
+ form.initialSnapshot[row.uid] = this.createRowSnapshot(row, form.config.fields);
209
+ // 清除 touched 状态,基于新的 initialSnapshot 重新判断
210
+ delete form.rowTouched[row.uid];
211
+ }
212
+ row.isEdit = false;
213
+ row.isAdd = false;
214
+ }
215
+ /** 从表单中删除指定行 */
216
+ deleteRowFromForm(formName, row) {
217
+ const form = this.formStore[formName];
218
+ if (!form || !row.uid) {
219
+ return false;
220
+ }
221
+ const index = form.data.findIndex((item) => item.uid === row.uid);
222
+ if (index === -1) {
223
+ return false;
224
+ }
225
+ form.data.splice(index, 1);
226
+ // 清理该行的所有快照、touched 状态和校验结果
227
+ delete form.initialSnapshot[row.uid];
228
+ delete form.editingSnapshot[row.uid];
229
+ delete form.rowTouched[row.uid];
230
+ if (form.validationResults) {
231
+ delete form.validationResults[row.uid];
232
+ }
233
+ // 自动更新外部数组引用
234
+ this.autoUpdateArrayReference(formName);
235
+ return true;
236
+ }
237
+ /** 检测字段是否已被触碰 */
238
+ isFieldTouched(form, row, fieldName) {
239
+ var _a;
240
+ // 整个表单已 touched(整个表单提交时)
241
+ if (form.allTouched) {
242
+ return true;
243
+ }
244
+ // 当前行已 touched(单行保存时)
245
+ if (form.rowTouched[row.uid]) {
246
+ return true;
247
+ }
248
+ // 检测当前值与初始值是否不同
249
+ const initialValue = (_a = form.initialSnapshot[row.uid]) === null || _a === void 0 ? void 0 : _a[fieldName];
250
+ const currentValue = row[fieldName];
251
+ return !this.isEqual(initialValue, currentValue);
252
+ }
253
+ /** 校验指定行的指定字段,未修改时不显示校验状态 */
254
+ validateFieldInRow(formName, row, fieldName) {
255
+ const form = this.formStore[formName];
256
+ if (!form) {
257
+ return "";
258
+ }
259
+ const fieldConfig = form.config.fields.find((f) => f.name === fieldName);
260
+ if (!fieldConfig) {
261
+ return "";
262
+ }
263
+ // 执行校验
264
+ let result = "";
265
+ if (fieldConfig.validator) {
266
+ result = fieldConfig.validator(row[fieldName], row, fieldName);
267
+ }
268
+ // 更新校验结果存储
269
+ if (!form.validationResults) {
270
+ form.validationResults = {};
271
+ }
272
+ if (!form.validationResults[row.uid]) {
273
+ form.validationResults[row.uid] = {};
274
+ }
275
+ form.validationResults[row.uid][fieldName] = result;
276
+ // 如果字段未被触碰,不显示校验状态
277
+ if (!this.isFieldTouched(form, row, fieldName)) {
278
+ return "";
279
+ }
280
+ return result ? "error" : "success";
281
+ }
282
+ /** 获取指定行指定字段的校验错误信息 */
283
+ getFieldErrorMessage(formName, row, fieldName) {
284
+ var _a, _b;
285
+ const form = this.formStore[formName];
286
+ if (!form || !row.uid) {
287
+ return "";
288
+ }
289
+ // 如果字段未被触碰,不显示错误信息
290
+ if (!this.isFieldTouched(form, row, fieldName)) {
291
+ return "";
292
+ }
293
+ return ((_b = (_a = form.validationResults) === null || _a === void 0 ? void 0 : _a[row.uid]) === null || _b === void 0 ? void 0 : _b[fieldName]) || "";
294
+ }
295
+ /** 校验指定行的所有字段 */
296
+ validateRowAllFields(formName, row) {
297
+ const form = this.formStore[formName];
298
+ if (!form || !row.uid) {
299
+ return true;
300
+ }
301
+ // 更新初始快照为当前值
302
+ form.initialSnapshot[row.uid] = this.createRowSnapshot(row, form.config.fields);
303
+ // 标记当前行为 touched(只影响当前行,不影响其他行)
304
+ form.rowTouched[row.uid] = true;
305
+ let hasError = false;
306
+ form.config.fields.forEach((fieldConfig) => {
307
+ const result = this.validateFieldInRow(formName, row, fieldConfig.name);
308
+ if (result === "error") {
309
+ hasError = true;
310
+ }
311
+ });
312
+ return !hasError;
313
+ }
314
+ /** 自动更新外部数组引用 */
315
+ autoUpdateArrayReference(formName) {
316
+ const form = this.formStore[formName];
317
+ if (!form || !form.config.targetObject || !form.config.arrayPropertyName) {
318
+ return;
319
+ }
320
+ const newArray = form.data ? [...form.data] : [];
321
+ // 更新目标对象的数组属性为新数组引用
322
+ form.config.targetObject[form.config.arrayPropertyName] = newArray;
323
+ }
324
+ /** 是否有正在编辑的行 */
325
+ hasEditingRow(formName) {
326
+ const form = this.formStore[formName];
327
+ if (!form) {
328
+ return false;
329
+ }
330
+ return form.data.some((item) => item.isEdit);
331
+ }
332
+ }
333
+ ArrayFormService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ArrayFormService_Factory() { return new ArrayFormService(); }, token: ArrayFormService, providedIn: "root" });
334
+ ArrayFormService.decorators = [
335
+ { type: Injectable, args: [{
336
+ providedIn: "root",
337
+ },] }
338
+ ];
339
+ ArrayFormService.ctorParameters = () => [];
340
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXktZm9ybS5qcyIsInNvdXJjZVJvb3QiOiJEOi9wcm9qZWN0cy92cHMtZnJvbnQvRnJvbnQvRGFzUE1TV2ViL2xpYi9wcm8tdGFibGUvc3JjLyIsInNvdXJjZXMiOlsibGliL3BhZ2UtcHVibGljL2FycmF5LWZvcm0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUF3RHBDLGtCQUFrQjtBQUlsQixNQUFNLE9BQU8sZ0JBQWdCO0lBRzNCO1FBRlEsY0FBUyxHQUFtQixFQUFFLENBQUM7SUFFeEIsQ0FBQztJQUVoQixZQUFZO0lBQ0osVUFBVSxDQUFDLEtBQVU7UUFDM0IsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUU7WUFDekMsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUNELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN4QixPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztTQUNuRDtRQUNELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1lBQzdCLE1BQU0sTUFBTSxHQUF3QixFQUFFLENBQUM7WUFDdkMsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNwQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzthQUMzQztZQUNELE9BQU8sTUFBTSxDQUFDO1NBQ2Y7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxnQkFBZ0I7SUFDUixPQUFPLENBQUMs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QUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixFQUFFO1lBQ3hFLE9BQU87U0FDUjtRQUNELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNqRCxvQkFBb0I7UUFDbkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFvQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsR0FBRyxRQUFRLENBQUM7SUFDOUUsQ0FBQztJQUVELGdCQUFnQjtJQUNoQixhQUFhLENBQUMsUUFBZ0I7UUFDNUIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1QsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvQyxDQUFDOzs7O1lBamJGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSBcInV1aWRcIjtcblxuLyoqIOWtl+auteagoemqjOe7k+aenOexu+WeiyAqL1xuZXhwb3J0IHR5cGUgVmFsaWRhdGlvblJlc3VsdCA9IHN0cmluZztcblxuLyoqIOWtl+auteagoemqjOaWueazleexu+WeiyAqL1xuZXhwb3J0IHR5cGUgRmllbGRWYWxpZGF0b3IgPSAoXG4gIHZhbHVlOiBhbnksXG4gIHJvdzogQXJyYXlGb3JtUm93LFxuICBmaWVsZE5hbWU6IHN0cmluZ1xuKSA9PiBWYWxpZGF0aW9uUmVzdWx0O1xuXG4vKiog5a2X5q616YWN572u5o6l5Y+jICovXG5leHBvcnQgaW50ZXJmYWNlIEZpZWxkQ29uZmlnIHtcbiAgbmFtZTogc3RyaW5nO1xuICB2YWxpZGF0b3I/OiBGaWVsZFZhbGlkYXRvcjtcbn1cblxuLyoqIOaVsOe7hOihqOWNleihjOaVsOaNruaOpeWPoyAqL1xuZXhwb3J0IGludGVyZmFjZSBBcnJheUZvcm1Sb3cge1xuICB1aWQ/OiBzdHJpbmc7XG4gIGlzRWRpdDogYm9vbGVhbjtcbiAgaXNBZGQ/OiBib29sZWFuO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuLyoqIOaVsOe7hOihqOWNlemFjee9ruaOpeWPoyAqL1xuZXhwb3J0IGludGVyZmFjZSBBcnJheUZvcm1Db25maWcge1xuICBmaWVsZHM6IEZpZWxkQ29uZmlnW107XG4gIGRlZmF1bHRWYWx1ZXM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAvLyDoh6rliqjmm7TmlrDnm67moIflr7nosaHlkozlsZ7mgKflkI3vvIznlKjkuo7op6blj5EgQW5ndWxhciDlj5jljJbmo4DmtYtcbiAgdGFyZ2V0T2JqZWN0PzogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgYXJyYXlQcm9wZXJ0eU5hbWU/OiBzdHJpbmc7XG59XG5cbi8qKiDooajljZXlrZjlgqjpobnmjqXlj6MgKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXJyYXlGb3JtU3RvcmVJdGVtIHtcbiAgZGF0YTogQXJyYXlGb3JtUm93W107XG4gIGNvbmZpZzogQXJyYXlGb3JtQ29uZmlnO1xuICB2YWxpZGF0aW9uUmVzdWx0cz86IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIFZhbGlkYXRpb25SZXN1bHQ+PjtcbiAgLyoqIOWIneWni+WAvOW/q+eFp++8jOeUqOS6juiHquWKqOajgOa1i+Wtl+auteaYr+WQpuiiq+S/ruaUuSAqL1xuICBpbml0aWFsU25hcHNob3Q6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIGFueT4+O1xuICAvKiog57yW6L6R5pe25b+r54Wn77yM55So5LqO5Y+W5raI57yW6L6R5pe25oGi5aSN5pWw5o2uICovXG4gIGVkaXRpbmdTbmFwc2hvdDogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgYW55Pj47XG4gIC8qKiDmmK/lkKbmoIforrDmiYDmnInlrZfmrrXkuLrlt7Lop6bnorDvvIjmlbTkuKrooajljZXmj5DkuqTml7borr7kuLogdHJ1Ze+8iSAqL1xuICBhbGxUb3VjaGVkOiBib29sZWFuO1xuICAvKiog5q+P6KGM55qEIHRvdWNoZWQg54q25oCB77yI5Y2V6KGM5L+d5a2Y5pe26K6+5Li6IHRydWXvvIkgKi9cbiAgcm93VG91Y2hlZDogUmVjb3JkPHN0cmluZywgYm9vbGVhbj47XG59XG5cbi8qKiDooajljZXlrZjlgqjmjqXlj6MgKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXJyYXlGb3JtU3RvcmUge1xuICBbZm9ybU5hbWU6IHN0cmluZ106IEFycmF5Rm9ybVN0b3JlSXRlbTtcbn1cblxuLyoqIOaVsOe7hOWei+aVsOaNruaUtumbhuWfuuehgOacjeWKoSAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiBcInJvb3RcIixcbn0pXG5leHBvcnQgY2xhc3MgQXJyYXlGb3JtU2VydmljZSB7XG4gIHByaXZhdGUgZm9ybVN0b3JlOiBBcnJheUZvcm1TdG9yZSA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICAvKiog5rex5bqm5YWL6ZqG5YC8ICovXG4gIHByaXZhdGUgY2xvbmVWYWx1ZSh2YWx1ZTogYW55KTogYW55IHtcbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB2YWx1ZS5tYXAoKGl0ZW0pID0+IHRoaXMuY2xvbmVWYWx1ZShpdGVtKSk7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgIGNvbnN0IGNsb25lZDogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModmFsdWUpKSB7XG4gICAgICAgIGNsb25lZFtrZXldID0gdGhpcy5jbG9uZVZhbHVlKHZhbHVlW2tleV0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNsb25lZDtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgLyoqIOavlOi+g+S4pOS4quWAvOaYr+WQpuebuOetiSAqL1xuICBwcml2YXRlIGlzRXF1YWwoYTogYW55LCBiOiBhbnkpOiBib29sZWFuIHtcbiAgICBpZiAoYSA9PT0gYikgcmV0dXJuIHRydWU7XG4gICAgaWYgKGEgPT09IG51bGwgfHwgYiA9PT0gbnVsbCkgcmV0dXJuIGEgPT09IGI7XG4gICAgaWYgKGEgPT09IHVuZGVmaW5lZCB8fCBiID09PSB1bmRlZmluZWQpIHJldHVybiBhID09PSBiO1xuICAgIGlmICh0eXBlb2YgYSAhPT0gdHlwZW9mIGIpIHJldHVybiBmYWxzZTtcblxuICAgIGlmIChBcnJheS5pc0FycmF5KGEpICYmIEFycmF5LmlzQXJyYXkoYikpIHtcbiAgICAgIGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICAgIHJldHVybiBhLmV2ZXJ5KChpdGVtLCBpbmRleCkgPT4gdGhpcy5pc0VxdWFsKGl0ZW0sIGJbaW5kZXhdKSk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBhID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBiID09PSBcIm9iamVjdFwiKSB7XG4gICAgICBjb25zdCBrZXlzQSA9IE9iamVjdC5rZXlzKGEpO1xuICAgICAgY29uc3Qga2V5c0IgPSBPYmplY3Qua2V5cyhiKTtcbiAgICAgIGlmIChrZXlzQS5sZW5ndGggIT09IGtleXNCLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgICAgcmV0dXJuIGtleXNBLmV2ZXJ5KChrZXkpID0+IHRoaXMuaXNFcXVhbChhW2tleV0sIGJba2V5XSkpO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKiDliJvlu7rooYznmoTliJ3lp4vlgLzlv6vnhacgKi9cbiAgcHJpdmF0ZSBjcmVhdGVSb3dTbmFwc2hvdChcbiAgICByb3c6IEFycmF5Rm9ybVJvdyxcbiAgICBmaWVsZHM6IEZpZWxkQ29uZmlnW11cbiAgKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgY29uc3Qgc25hcHNob3Q6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcbiAgICBmaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICAgIHNuYXBzaG90W2ZpZWxkLm5hbWVdID0gdGhpcy5jbG9uZVZhbHVlKHJvd1tmaWVsZC5uYW1lXSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHNuYXBzaG90O1xuICB9XG5cbiAgLyoqIOWIneWni+WMluaVsOe7hOaVsOaNru+8jOa3u+WKoCB1aWQg5ZKMIGlzRWRpdCDlrZfmrrUgKi9cbiAgcHJpdmF0ZSBpbml0aWFsaXplRGF0YShkYXRhOiBhbnlbXSk6IEFycmF5Rm9ybVJvd1tdIHtcbiAgICByZXR1cm4gZGF0YS5tYXAoKGl0ZW0pID0+IHRoaXMuZW5yaWNoUm93KGl0ZW0pKTtcbiAgfVxuXG4gIC8qKiDkuLrljZXooYzmlbDmja7mt7vliqAgdWlkIOWSjCBpc0VkaXQg5a2X5q61ICovXG4gIHByaXZhdGUgZW5yaWNoUm93KHJvdzogYW55KTogQXJyYXlGb3JtUm93IHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4ucm93LFxuICAgICAgdWlkOiByb3cudWlkIHx8IHV1aWR2NCgpLFxuICAgICAgaXNFZGl0OiByb3cuaXNFZGl0ICE9PSB1bmRlZmluZWQgPyByb3cuaXNFZGl0IDogZmFsc2UsXG4gICAgICBkaXNhYmxlZDogcm93LmRpc2FibGVkICE9PSB1bmRlZmluZWQgPyByb3cuZGlzYWJsZWQgOiBmYWxzZSxcbiAgICB9O1xuICB9XG5cbiAgLyoqIOaWsOWinuS4gOihjOaVsOaNriAqL1xuICBwcml2YXRlIGFkZFJvdyhcbiAgICBkYXRhOiBBcnJheUZvcm1Sb3dbXSxcbiAgICBkZWZhdWx0VmFsdWVzPzogUmVjb3JkPHN0cmluZywgYW55PlxuICApOiBBcnJheUZvcm1Sb3cge1xuICAgIGNvbnN0IG5ld1JvdzogQXJyYXlGb3JtUm93ID0ge1xuICAgICAgLi4uZGVmYXVsdFZhbHVlcyxcbiAgICAgIHVpZDogdXVpZHY0KCksXG4gICAgICBpc0VkaXQ6IHRydWUsXG4gICAgICBpc0FkZDogdHJ1ZSxcbiAgICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICB9O1xuICAgIGRhdGEucHVzaChuZXdSb3cpO1xuICAgIHJldHVybiBuZXdSb3c7XG4gIH1cblxuICAvKiog5qCh6aqM5Y2V5Liq5a2X5q61ICovXG4gIHByaXZhdGUgdmFsaWRhdGVGaWVsZChcbiAgICByb3c6IEFycmF5Rm9ybVJvdyxcbiAgICBmaWVsZE5hbWU6IHN0cmluZyxcbiAgICBjb25maWc6IEFycmF5Rm9ybUNvbmZpZ1xuICApOiBWYWxpZGF0aW9uUmVzdWx0IHtcbiAgICBjb25zdCBmaWVsZENvbmZpZyA9IGNvbmZpZy5maWVsZHMuZmluZCgoZikgPT4gZi5uYW1lID09PSBmaWVsZE5hbWUpO1xuXG4gICAgaWYgKCFmaWVsZENvbmZpZykge1xuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuXG4gICAgaWYgKGZpZWxkQ29uZmlnLnZhbGlkYXRvcikge1xuICAgICAgcmV0dXJuIGZpZWxkQ29uZmlnLnZhbGlkYXRvcihyb3dbZmllbGROYW1lXSwgcm93LCBmaWVsZE5hbWUpO1xuICAgIH1cblxuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgLyoqIOagoemqjOaVtOihjOaVsOaNriAqL1xuICBwcml2YXRlIHZhbGlkYXRlUm93KFxuICAgIHJvdzogQXJyYXlGb3JtUm93LFxuICAgIGNvbmZpZzogQXJyYXlGb3JtQ29uZmlnXG4gICk6IFJlY29yZDxzdHJpbmcsIFZhbGlkYXRpb25SZXN1bHQ+IHtcbiAgICBjb25zdCByZXN1bHRzOiBSZWNvcmQ8c3RyaW5nLCBWYWxpZGF0aW9uUmVzdWx0PiA9IHt9O1xuXG4gICAgY29uZmlnLmZpZWxkcy5mb3JFYWNoKChmaWVsZENvbmZpZykgPT4ge1xuICAgICAgcmVzdWx0c1tmaWVsZENvbmZpZy5uYW1lXSA9IHRoaXMudmFsaWRhdGVGaWVsZChcbiAgICAgICAgcm93LFxuICAgICAgICBmaWVsZENvbmZpZy5uYW1lLFxuICAgICAgICBjb25maWdcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmVzdWx0cztcbiAgfVxuXG4gIC8qKiDmoKHpqozmlbTkuKrmlbDnu4QgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZURhdGEoXG4gICAgZGF0YTogQXJyYXlGb3JtUm93W10sXG4gICAgY29uZmlnOiBBcnJheUZvcm1Db25maWdcbiAgKTogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgVmFsaWRhdGlvblJlc3VsdD4+IHtcbiAgICBjb25zdCByZXN1bHRzOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBWYWxpZGF0aW9uUmVzdWx0Pj4gPSB7fTtcblxuICAgIGRhdGEuZm9yRWFjaCgocm93KSA9PiB7XG4gICAgICByZXN1bHRzW3Jvdy51aWRdID0gdGhpcy52YWxpZGF0ZVJvdyhyb3csIGNvbmZpZyk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmVzdWx0cztcbiAgfVxuXG4gIC8qKiDms6jlhozooajljZXliLDlrZjlgqggKi9cbiAgcmVnaXN0ZXJGb3JtKFxuICAgIGZvcm1OYW1lOiBzdHJpbmcsXG4gICAgZGF0YTogQXJyYXlGb3JtUm93W10sXG4gICAgY29uZmlnOiBBcnJheUZvcm1Db25maWdcbiAgKTogdm9pZCB7XG4gICAgY29uc3QgaW5pdGlhbGl6ZWREYXRhID0gdGhpcy5pbml0aWFsaXplRGF0YShkYXRhKTtcblxuICAgIC8vIOiusOW9leWIneWni+WAvOW/q+eFp1xuICAgIGNvbnN0IGluaXRpYWxTbmFwc2hvdDogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgYW55Pj4gPSB7fTtcbiAgICBpbml0aWFsaXplZERhdGEuZm9yRWFjaCgocm93KSA9PiB7XG4gICAgICBpbml0aWFsU25hcHNob3Rbcm93LnVpZCFdID0gdGhpcy5jcmVhdGVSb3dTbmFwc2hvdChyb3csIGNvbmZpZy5maWVsZHMpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5mb3JtU3RvcmVbZm9ybU5hbWVdID0ge1xuICAgICAgZGF0YTogaW5pdGlhbGl6ZWREYXRhLFxuICAgICAgY29uZmlnLFxuICAgICAgdmFsaWRhdGlvblJlc3VsdHM6IHt9LFxuICAgICAgaW5pdGlhbFNuYXBzaG90LFxuICAgICAgZWRpdGluZ1NuYXBzaG90OiB7fSxcbiAgICAgIGFsbFRvdWNoZWQ6IGZhbHNlLFxuICAgICAgcm93VG91Y2hlZDoge30sXG4gICAgfTtcbiAgICAvLyDlpoLmnpzphY3nva7kuoboh6rliqjmm7TmlrDvvIznq4vljbPmm7TmlrDkuIDmrKFcbiAgICB0aGlzLmF1dG9VcGRhdGVBcnJheVJlZmVyZW5jZShmb3JtTmFtZSk7XG4gIH1cblxuICAvKiog5LuO5a2Y5YKo5Lit6I635Y+W6KGo5Y2VICovXG4gIGdldEZvcm0oZm9ybU5hbWU6IHN0cmluZyk6IEFycmF5Rm9ybVN0b3JlSXRlbSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybVN0b3JlW2Zvcm1OYW1lXTtcbiAgfVxuXG4gIC8qKiDku47lrZjlgqjkuK3ojrflj5booajljZXmlbDmja4gKi9cbiAgZ2V0Rm9ybURhdGEoXG4gICAgZm9ybU5hbWU6IHN0cmluZ1xuICApOlxuICAgIHwgQXJyYXk8UGljazxBcnJheUZvcm1Sb3csIFwidWlkXCIgfCBcImlzRWRpdFwiIHwgXCJpc0FkZFwiIHwga2V5b2YgQXJyYXlGb3JtUm93Pj5cbiAgICB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgZm9ybSA9IHRoaXMuZm9ybVN0b3JlW2Zvcm1OYW1lXTtcbiAgICBpZiAoIWZvcm0pIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiBmb3JtLmRhdGEubWFwKChpdGVtKSA9PiB7XG4gICAgICBkZWxldGUgaXRlbS5pc0VkaXQ7XG4gICAgICBkZWxldGUgaXRlbS5pc0FkZDtcbiAgICAgIGRlbGV0ZSBpdGVtLnVpZDtcbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqIOWQkeihqOWNlea3u+WKoOihjCAqL1xuICBhZGRSb3dUb0Zvcm0oXG4gICAgZm9ybU5hbWU6IHN0cmluZyxcbiAgICBkZWZhdWx0VmFsdWVzPzogUmVjb3JkPHN0cmluZywgYW55PlxuICApOiBBcnJheUZvcm1Sb3cgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGZvcm0gPSB0aGlzLmZvcm1TdG9yZVtmb3JtTmFtZV07XG4gICAgaWYgKCFmb3JtKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBjb25zdCBuZXdSb3cgPSB0aGlzLmFkZFJvdyhmb3JtLmRhdGEsIGRlZmF1bHRWYWx1ZXMpO1xuICAgIC8vIOS4uuaWsOihjOiusOW9leWIneWni+WAvOW/q+eFp1xuICAgIGZvcm0uaW5pdGlhbFNuYXBzaG90W25ld1Jvdy51aWQhXSA9IHRoaXMuY3JlYXRlUm93U25hcHNob3QoXG4gICAgICBuZXdSb3csXG4gICAgICBmb3JtLmNvbmZpZy5maWVsZHNcbiAgICApO1xuICAgIC8vIOiHquWKqOabtOaWsOWklumDqOaVsOe7hOW8leeUqFxuICAgIHRoaXMuYXV0b1VwZGF0ZUFycmF5UmVmZXJlbmNlKGZvcm1OYW1lKTtcbiAgICByZXR1cm4gbmV3Um93O1xuICB9XG5cbiAgLyoqIOagoemqjOihqOWNle+8jOiHquWKqOagh+iusOaJgOacieWtl+auteS4uuW3suinpueisCAqL1xuICB2YWxpZGF0ZUZvcm0oZm9ybU5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGZvcm0gPSB0aGlzLmZvcm1TdG9yZVtmb3JtTmFtZV07XG4gICAgaWYgKCFmb3JtKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgLy8g5qCH6K6w5omA5pyJ5a2X5q615Li65bey6Kem56KwXG4gICAgZm9ybS5hbGxUb3VjaGVkID0gdHJ1ZTtcbiAgICBjb25zdCByZXN1bHRzID0gdGhpcy52YWxpZGF0ZURhdGEoZm9ybS5kYXRhLCBmb3JtLmNvbmZpZyk7XG4gICAgZm9ybS52YWxpZGF0aW9uUmVzdWx0cyA9IHJlc3VsdHM7XG5cbiAgICAvLyDmo4Dmn6XmmK/lkKbmnInku7vkvZXplJnor69cbiAgICBmb3IgKGNvbnN0IHVpZCBvZiBPYmplY3Qua2V5cyhyZXN1bHRzKSkge1xuICAgICAgZm9yIChjb25zdCBmaWVsZE5hbWUgb2YgT2JqZWN0LmtleXMocmVzdWx0c1t1aWRdKSkge1xuICAgICAgICBpZiAocmVzdWx0c1t1aWRdW2ZpZWxkTmFtZV0pIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKiog5byA5ZCv57yW6L6R5qih5byP77yM5L+d5a2Y5b+r54Wn55So5LqO5Y+W5raI5oGi5aSNICovXG4gIGVuYWJsZUVkaXQoZm9ybU5hbWU6IHN0cmluZywgcm93OiBBcnJheUZvcm1Sb3cpOiB2b2lkIHtcbiAgICBjb25zdCBmb3JtID0gdGhpcy5mb3JtU3RvcmVbZm9ybU5hbWVdO1xuICAgIGlmIChmb3JtICYmIHJvdy51aWQpIHtcbiAgICAgIC8vIOS/neWtmOe8lui+keWJjeeahOW/q+eFp1xuICAgICAgZm9ybS5lZGl0aW5nU25hcHNob3Rbcm93LnVpZF0gPSB0aGlzLmNyZWF0ZVJvd1NuYXBzaG90KFxuICAgICAgICByb3csXG4gICAgICAgIGZvcm0uY29uZmlnLmZpZWxkc1xuICAgICAgKTtcbiAgICB9XG4gICAgcm93LmlzRWRpdCA9IHRydWU7XG4gIH1cblxuICAvKiog5Y+W5raI57yW6L6R77yM5oGi5aSN5Yiw57yW6L6R5YmN55qE5pWw5o2uICovXG4gIGRpc2FibGVFZGl0KGZvcm1OYW1lOiBzdHJpbmcsIHJvdzogQXJyYXlGb3JtUm93KTogdm9pZCB7XG4gICAgY29uc3QgZm9ybSA9IHRoaXMuZm9ybVN0b3JlW2Zvcm1OYW1lXTtcbiAgICBpZiAoZm9ybSAmJiByb3cudWlkICYmIGZvcm0uZWRpdGluZ1NuYXBzaG90W3Jvdy51aWRdKSB7XG4gICAgICAvLyDmgaLlpI3nvJbovpHliY3nmoTmlbDmja5cbiAgICAgIGNvbnN0IHNuYXBzaG90ID0gZm9ybS5lZGl0aW5nU25hcHNob3Rbcm93LnVpZF07XG4gICAgICBmb3JtLmNvbmZpZy5maWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICAgICAgcm93W2ZpZWxkLm5hbWVdID0gdGhpcy5jbG9uZVZhbHVlKHNuYXBzaG90W2ZpZWxkLm5hbWVdKTtcbiAgICAgIH0pO1xuICAgICAgLy8g5pu05paw5Yid5aeL5b+r54Wn5Li65oGi5aSN5ZCO55qE5YC877yM5raI6ZmkIHRvdWNoZWQg54q25oCBXG4gICAgICBmb3JtLmluaXRpYWxTbmFwc2hvdFtyb3cudWlkXSA9IHRoaXMuY2xvbmVWYWx1ZShzbmFwc2hvdCk7XG4gICAgICAvLyDmuIXnkIbnvJbovpHlv6vnhaflkowgdG91Y2hlZCDnirbmgIFcbiAgICAgIGRlbGV0ZSBmb3JtLmVkaXRpbmdTbmFwc2hvdFtyb3cudWlkXTtcbiAgICAgIGRlbGV0ZSBmb3JtLnJvd1RvdWNoZWRbcm93LnVpZF07XG4gICAgICAvLyDmuIXnkIbor6XooYznmoTmoKHpqoznu5PmnpxcbiAgICAgIGlmIChmb3JtLnZhbGlkYXRpb25SZXN1bHRzKSB7XG4gICAgICAgIGRlbGV0ZSBmb3JtLnZhbGlkYXRpb25SZXN1bHRzW3Jvdy51aWRdO1xuICAgICAgfVxuICAgIH1cbiAgICByb3cuaXNFZGl0ID0gZmFsc2U7XG4gIH1cblxuICAvKiog56Gu6K6k57yW6L6R77yM5L+d55WZ5L+u5pS55ZCO55qE5pWw5o2uICovXG4gIGNvbmZpcm1FZGl0KGZvcm1OYW1lOiBzdHJpbmcsIHJvdzogQXJyYXlGb3JtUm93KTogdm9pZCB7XG4gICAgY29uc3QgZm9ybSA9IHRoaXMuZm9ybVN0b3JlW2Zvcm1OYW1lXTtcbiAgICBpZiAoZm9ybSAmJiByb3cudWlkKSB7XG4gICAgICAvLyDmuIXnkIbnvJbovpHlv6vnhafvvIjkv53nlZnlvZPliY3mlbDmja7vvIlcbiAgICAgIGlmIChmb3JtLmVkaXRpbmdTbmFwc2hvdFtyb3cudWlkXSkge1xuICAgICAgICBkZWxldGUgZm9ybS5lZGl0aW5nU25hcHNob3Rbcm93LnVpZF07XG4gICAgICB9XG4gICAgICAvLyDmm7TmlrDliJ3lp4vlv6vnhafkuLrlvZPliY3lgLzvvIjnlKjkuo7lkI7nu60gdG91Y2hlZCDmo4DmtYvvvIlcbiAgICAgIGZvcm0uaW5pdGlhbFNuYXBzaG90W3Jvdy51aWRdID0gdGhpcy5jcmVhdGVSb3dTbmFwc2hvdChcbiAgICAgICAgcm93LFxuICAgICAgICBmb3JtLmNvbmZpZy5maWVsZHNcbiAgICAgICk7XG4gICAgICAvLyDmuIXpmaQgdG91Y2hlZCDnirbmgIHvvIzln7rkuo7mlrDnmoQgaW5pdGlhbFNuYXBzaG90IOmHjeaWsOWIpOaWrVxuICAgICAgZGVsZXRlIGZvcm0ucm93VG91Y2hlZFtyb3cudWlkXTtcbiAgICB9XG4gICAgcm93LmlzRWRpdCA9IGZhbHNlO1xuICAgIHJvdy5pc0FkZCA9IGZhbHNlO1xuICB9XG5cbiAgLyoqIOS7juihqOWNleS4reWIoOmZpOaMh+WumuihjCAqL1xuICBkZWxldGVSb3dGcm9tRm9ybShmb3JtTmFtZTogc3RyaW5nLCByb3c6IEFycmF5Rm9ybVJvdyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGZvcm0gPSB0aGlzLmZvcm1TdG9yZVtmb3JtTmFtZV07XG4gICAgaWYgKCFmb3JtIHx8ICFyb3cudWlkKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGluZGV4ID0gZm9ybS5kYXRhLmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbS51aWQgPT09IHJvdy51aWQpO1xuICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgZm9ybS5kYXRhLnNwbGljZShpbmRleCwgMSk7XG4gICAgLy8g5riF55CG6K+l6KGM55qE5omA5pyJ5b+r54Wn44CBdG91Y2hlZCDnirbmgIHlkozmoKHpqoznu5PmnpxcbiAgICBkZWxldGUgZm9ybS5pbml0aWFsU25hcHNob3Rbcm93LnVpZF07XG4gICAgZGVsZXRlIGZvcm0uZWRpdGluZ1NuYXBzaG90W3Jvdy51aWRdO1xuICAgIGRlbGV0ZSBmb3JtLnJvd1RvdWNoZWRbcm93LnVpZF07XG4gICAgaWYgKGZvcm0udmFsaWRhdGlvblJlc3VsdHMpIHtcbiAgICAgIGRlbGV0ZSBmb3JtLnZhbGlkYXRpb25SZXN1bHRzW3Jvdy51aWRdO1xuICAgIH1cbiAgICAvLyDoh6rliqjmm7TmlrDlpJbpg6jmlbDnu4TlvJXnlKhcbiAgICB0aGlzLmF1dG9VcGRhdGVBcnJheVJlZmVyZW5jZShmb3JtTmFtZSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKiog5qOA5rWL5a2X5q615piv5ZCm5bey6KKr6Kem56KwICovXG4gIHByaXZhdGUgaXNGaWVsZFRvdWNoZWQoXG4gICAgZm9ybTogQXJyYXlGb3JtU3RvcmVJdGVtLFxuICAgIHJvdzogQXJyYXlGb3JtUm93LFxuICAgIGZpZWxkTmFtZTogc3RyaW5nXG4gICk6IGJvb2xlYW4ge1xuICAgIC8vIOaVtOS4quihqOWNleW3siB0b3VjaGVk77yI5pW05Liq6KGo5Y2V5o+Q5Lqk5pe277yJXG4gICAgaWYgKGZvcm0uYWxsVG91Y2hlZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIC8vIOW9k+WJjeihjOW3siB0b3VjaGVk77yI5Y2V6KGM5L+d5a2Y5pe277yJXG4gICAgaWYgKGZvcm0ucm93VG91Y2hlZFtyb3cudWlkIV0pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICAvLyDmo4DmtYvlvZPliY3lgLzkuI7liJ3lp4vlgLzmmK/lkKbkuI3lkIxcbiAgICBjb25zdCBpbml0aWFsVmFsdWUgPSBmb3JtLmluaXRpYWxTbmFwc2hvdFtyb3cudWlkIV0/LltmaWVsZE5hbWVdO1xuICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHJvd1tmaWVsZE5hbWVdO1xuICAgIHJldHVybiAhdGhpcy5pc0VxdWFsKGluaXRpYWxWYWx1ZSwgY3VycmVudFZhbHVlKTtcbiAgfVxuXG4gIC8qKiDmoKHpqozmjIflrprooYznmoTmjIflrprlrZfmrrXvvIzmnKrkv67mlLnml7bkuI3mmL7npLrmoKHpqoznirbmgIEgKi9cbiAgdmFsaWRhdGVGaWVsZEluUm93KFxuICAgIGZvcm1OYW1lOiBzdHJpbmcsXG4gICAgcm93OiBBcnJheUZvcm1Sb3csXG4gICAgZmllbGROYW1lOiBzdHJpbmdcbiAgKTogXCJzdWNjZXNzXCIgfCBcImVycm9yXCIgfCBcIlwiIHtcbiAgICBjb25zdCBmb3JtID0gdGhpcy5mb3JtU3RvcmVbZm9ybU5hbWVdO1xuICAgIGlmICghZm9ybSkge1xuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuXG4gICAgY29uc3QgZmllbGRDb25maWcgPSBmb3JtLmNvbmZpZy5maWVsZHMuZmluZCgoZikgPT4gZi5uYW1lID09PSBmaWVsZE5hbWUpO1xuICAgIGlmICghZmllbGRDb25maWcpIHtcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cblxuICAgIC8vIOaJp+ihjOagoemqjFxuICAgIGxldCByZXN1bHQ6IFZhbGlkYXRpb25SZXN1bHQgPSBcIlwiO1xuICAgIGlmIChmaWVsZENvbmZpZy52YWxpZGF0b3IpIHtcbiAgICAgIHJlc3VsdCA9IGZpZWxkQ29uZmlnLnZhbGlkYXRvcihyb3dbZmllbGROYW1lXSwgcm93LCBmaWVsZE5hbWUpO1xuICAgIH1cblxuICAgIC8vIOabtOaWsOagoemqjOe7k+aenOWtmOWCqFxuICAgIGlmICghZm9ybS52YWxpZGF0aW9uUmVzdWx0cykge1xuICAgICAgZm9ybS52YWxpZGF0aW9uUmVzdWx0cyA9IHt9O1xuICAgIH1cbiAgICBpZiAoIWZvcm0udmFsaWRhdGlvblJlc3VsdHNbcm93LnVpZCFdKSB7XG4gICAgICBmb3JtLnZhbGlkYXRpb25SZXN1bHRzW3Jvdy51aWQhXSA9IHt9O1xuICAgIH1cbiAgICBmb3JtLnZhbGlkYXRpb25SZXN1bHRzW3Jvdy51aWQhXVtmaWVsZE5hbWVdID0gcmVzdWx0O1xuXG4gICAgLy8g5aaC5p6c5a2X5q615pyq6KKr6Kem56Kw77yM5LiN5pi+56S65qCh6aqM54q25oCBXG4gICAgaWYgKCF0aGlzLmlzRmllbGRUb3VjaGVkKGZvcm0sIHJvdywgZmllbGROYW1lKSkge1xuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdCA/IFwiZXJyb3JcIiA6IFwic3VjY2Vzc1wiO1xuICB9XG5cbiAgLyoqIOiOt+WPluaMh+WumuihjOaMh+WumuWtl+auteeahOagoemqjOmUmeivr+S/oeaBryAqL1xuICBnZXRGaWVsZEVycm9yTWVzc2FnZShcbiAgICBmb3JtTmFtZTogc3RyaW5nLFxuICAgIHJvdzogQXJyYXlGb3JtUm93LFxuICAgIGZpZWxkTmFtZTogc3RyaW5nXG4gICk6IHN0cmluZyB7XG4gICAgY29uc3QgZm9ybSA9IHRoaXMuZm9ybVN0b3JlW2Zvcm1OYW1lXTtcbiAgICBpZiAoIWZvcm0gfHwgIXJvdy51aWQpIHtcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cbiAgICAvLyDlpoLmnpzlrZfmrrXmnKrooqvop6bnorDvvIzkuI3mmL7npLrplJnor6/kv6Hmga9cbiAgICBpZiAoIXRoaXMuaXNGaWVsZFRvdWNoZWQoZm9ybSwgcm93LCBmaWVsZE5hbWUpKSB7XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG4gICAgcmV0dXJuIGZvcm0udmFsaWRhdGlvblJlc3VsdHM/Lltyb3cudWlkXT8uW2ZpZWxkTmFtZV0gfHwgXCJcIjtcbiAgfVxuXG4gIC8qKiDmoKHpqozmjIflrprooYznmoTmiYDmnInlrZfmrrUgKi9cbiAgdmFsaWRhdGVSb3dBbGxGaWVsZHMoZm9ybU5hbWU6IHN0cmluZywgcm93OiBBcnJheUZvcm1Sb3cpOiBib29sZWFuIHtcbiAgICBjb25zdCBmb3JtID0gdGhpcy5mb3JtU3RvcmVbZm9ybU5hbWVdO1xuICAgIGlmICghZm9ybSB8fCAhcm93LnVpZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8g5pu05paw5Yid5aeL5b+r54Wn5Li65b2T5YmN5YC8XG4gICAgZm9ybS5pbml0aWFsU25hcHNob3Rbcm93LnVpZF0gPSB0aGlzLmNyZWF0ZVJvd1NuYXBzaG90KFxuICAgICAgcm93LFxuICAgICAgZm9ybS5jb25maWcuZmllbGRzXG4gICAgKTtcbiAgICAvLyDmoIforrDlvZPliY3ooYzkuLogdG91Y2hlZO+8iOWPquW9seWTjeW9k+WJjeihjO+8jOS4jeW9seWTjeWFtuS7luihjO+8iVxuICAgIGZvcm0ucm93VG91Y2hlZFtyb3cudWlkXSA9IHRydWU7XG5cbiAgICBsZXQgaGFzRXJyb3IgPSBmYWxzZTtcblxuICAgIGZvcm0uY29uZmlnLmZpZWxkcy5mb3JFYWNoKChmaWVsZENvbmZpZykgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy52YWxpZGF0ZUZpZWxkSW5Sb3coZm9ybU5hbWUsIHJvdywgZmllbGRDb25maWcubmFtZSk7XG4gICAgICBpZiAocmVzdWx0ID09PSBcImVycm9yXCIpIHtcbiAgICAgICAgaGFzRXJyb3IgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuICFoYXNFcnJvcjtcbiAgfVxuXG4gIC8qKiDoh6rliqjmm7TmlrDlpJbpg6jmlbDnu4TlvJXnlKggKi9cbiAgcHJpdmF0ZSBhdXRvVXBkYXRlQXJyYXlSZWZlcmVuY2UoZm9ybU5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGZvcm0gPSB0aGlzLmZvcm1TdG9yZVtmb3JtTmFtZV07XG4gICAgaWYgKCFmb3JtIHx8ICFmb3JtLmNvbmZpZy50YXJnZXRPYmplY3QgfHwgIWZvcm0uY29uZmlnLmFycmF5UHJvcGVydHlOYW1lKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG5ld0FycmF5ID0gZm9ybS5kYXRhID8gWy4uLmZvcm0uZGF0YV0gOiBbXTtcbiAgICAvLyDmm7TmlrDnm67moIflr7nosaHnmoTmlbDnu4TlsZ7mgKfkuLrmlrDmlbDnu4TlvJXnlKhcbiAgICAoZm9ybS5jb25maWcudGFyZ2V0T2JqZWN0IGFzIGFueSlbZm9ybS5jb25maWcuYXJyYXlQcm9wZXJ0eU5hbWVdID0gbmV3QXJyYXk7XG4gIH1cblxuICAvKiog5piv5ZCm5pyJ5q2j5Zyo57yW6L6R55qE6KGMICovXG4gIGhhc0VkaXRpbmdSb3coZm9ybU5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGZvcm0gPSB0aGlzLmZvcm1TdG9yZVtmb3JtTmFtZV07XG4gICAgaWYgKCFmb3JtKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBmb3JtLmRhdGEuc29tZSgoaXRlbSkgPT4gaXRlbS5pc0VkaXQpO1xuICB9XG59XG4iXX0=
@@ -152,4 +152,4 @@ PlateInputComponent.ctorParameters = () => [
152
152
  { type: ElementRef },
153
153
  { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [PLATE_PREFIX_LOAD_SERVICE,] }] }
154
154
  ];
155
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGUtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkQ6L3Byb2plY3RzL3Zwcy1mcm9udC9Gcm9udC9EYXNQTVNXZWIvcHJvamVjdHMvcHJvLXRhYmxlL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9wbGF0ZS1pbnB1dC9wbGF0ZS1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBcUIsVUFBVSxFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFILE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUseUJBQXlCLEVBQTZDLE1BQU0sV0FBVyxDQUFDO0FBY2pHLE1BQU0sT0FBTyxtQkFBbUI7SUFXOUIsWUFDVSxHQUFzQixFQUN0QixVQUFzQixFQUN5QixzQkFBK0M7UUFGOUYsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN5QiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXlCO1FBYnhHLHFCQUFnQixHQUFZLEtBQUssQ0FBQztRQUNsQyxnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQUN6QixnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQUN6Qix1QkFBa0IsR0FBNkIsRUFBRSxDQUFDO1FBQ2xELGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDbEIsYUFBUSxHQUFHLENBQUMsS0FBYSxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUM7UUFDakMsY0FBUyxHQUFHLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztJQVExQixDQUFDO0lBRUosUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLHNCQUFzQixFQUFFO1lBQy9CLG9CQUFvQjtZQUNwQixJQUFJLENBQUMsc0JBQXNCO2lCQUN4QixpQkFBaUIsRUFBRTtpQkFDbkIsSUFBSSxDQUFDLENBQUMsSUFBOEIs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QUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELHlCQUF5QixDQUFDLEtBQVU7UUFDbEMsSUFBSSxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU87UUFDMUIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDL0MsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDekIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25CLENBQUM7OztZQWxLRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtnQkFDM0IsbXBEQUEyQztnQkFFM0MsU0FBUyxFQUFFO29CQUNUO3dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7d0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsbUJBQW1CLENBQUM7d0JBQ2xELEtBQUssRUFBRSxJQUFJO3FCQUNaO2lCQUNGOzthQUNGOzs7WUFma0QsaUJBQWlCO1lBQUUsVUFBVTs0Q0E4QjNFLFFBQVEsWUFBSSxNQUFNLFNBQUMseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE9uRGVzdHJveSwgZm9yd2FyZFJlZiwgQ2hhbmdlRGV0ZWN0b3JSZWYsIEVsZW1lbnRSZWYsIEluamVjdCwgT3B0aW9uYWwgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgUExBVEVfUFJFRklYX0xPQURfU0VSVklDRSwgUGxhdGVQcmVmaXhMb2FkU2VydmljZSwgUGxhdGVQcmVmaXhPcHRpb24gfSBmcm9tIFwiLi4vdG9rZW5zXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJhcHAtcGxhdGUtaW5wdXRcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL3BsYXRlLWlucHV0LmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL3BsYXRlLWlucHV0LmNvbXBvbmVudC5sZXNzXCJdLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUGxhdGVJbnB1dENvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGxhdGVJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcbiAgbnpQb3BvdmVyVmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHBsYXRlUHJlZml4OiBzdHJpbmcgPSBcIlwiO1xyXG4gIHBsYXRlU3VmZml4OiBzdHJpbmcgPSBcIlwiO1xyXG4gIHBsYXRlUHJlZml4T3B0aW9uczogQXJyYXk8UGxhdGVQcmVmaXhPcHRpb24+ID0gW107XHJcbiAgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIG9uQ2hhbmdlID0gKHZhbHVlOiBzdHJpbmcpID0+IHt9O1xyXG4gIHByaXZhdGUgb25Ub3VjaGVkID0gKCkgPT4ge307XHJcblxyXG4gIHByaXZhdGUgY2xpY2tPdXRzaWRlSGFuZGxlcj86IChldmVudDogTW91c2VFdmVudCkgPT4gdm9pZDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXHJcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFBMQVRFX1BSRUZJWF9MT0FEX1NFUlZJQ0UpIHByaXZhdGUgcGxhdGVQcmVmaXhMb2FkU2VydmljZT86IFBsYXRlUHJlZml4TG9hZFNlcnZpY2VcclxuICApIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMucGxhdGVQcmVmaXhMb2FkU2VydmljZSkge1xyXG4gICAgICAvLyDkvb/nlKjms6jlhaXnmoTlhajlsYDmnI3liqHliqDovb3ovabniYzliY3nvIDpgInpoblcclxuICAgICAgdGhpcy5wbGF0ZVByZWZpeExvYWRTZXJ2aWNlXHJcbiAgICAgICAgLmxvYWRQcmVmaXhPcHRpb25zKClcclxuICAgICAgICAudGhlbigoZGF0YTogQXJyYXk8UGxhdGVQcmVmaXhPcHRpb24+KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnBsYXRlUHJlZml4T3B0aW9ucyA9IGRhdGE7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wbGF0ZVByZWZpeE9wdGlvbnMgPSBbXTtcclxuICAgICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIOWmguaenOayoeacieazqOWFpeacjeWKoe+8jOWImeS/neaMgeepuuaVsOe7hFxyXG4gICAgICB0aGlzLnBsYXRlUHJlZml4T3B0aW9ucyA9IFtdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlUGxhdGVQcmVmaXgodmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5wbGF0ZVByZWZpeCA9IHZhbHVlO1xyXG4gICAgdGhpcy5lbWl0VmFsdWUoKTtcclxuICAgIHRoaXMubnpQb3BvdmVyVmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5yZW1vdmVDbGlja091dHNpZGVMaXN0ZW5lcigpO1xyXG4gIH1cclxuXHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgdGhpcy5wbGF0ZVByZWZpeCA9IHZhbHVlLnNwbGl0KFwiXCIpWzBdO1xyXG4gICAgICB0aGlzLnBsYXRlU3VmZml4ID0gdmFsdWVcclxuICAgICAgICAuc3BsaXQoXCJcIilcclxuICAgICAgICAuZmlsdGVyKChpdGVtLCBpbmRleCkgPT4gaW5kZXggPiAwKVxyXG4gICAgICAgIC5qb2luKFwiXCIpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5wbGF0ZVByZWZpeCA9IFwiXCI7XHJcbiAgICAgIHRoaXMucGxhdGVTdWZmaXggPSBcIlwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBjb25zdCBwcmV2aW91c0Rpc2FibGVkID0gdGhpcy5kaXNhYmxlZDtcclxuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xyXG4gICAgXHJcbiAgICAvLyDlpoLmnpznpoHnlKjnirbmgIHmlLnlj5jvvIzlhbPpl60gcG9wb3ZlciDlubbnp7vpmaTnm5HlkKzlmahcclxuICAgIGlmIChwcmV2aW91c0Rpc2FibGVkICE9PSBpc0Rpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMubnpQb3BvdmVyVmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnJlbW92ZUNsaWNrT3V0c2lkZUxpc3RlbmVyKCk7XHJcbiAgICAgIC8vIOW8uuWItuWPmOabtOajgOa1i1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVQcmVmaXhDbGljayhldmVudDogRXZlbnQpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICB0aGlzLm56UG9wb3ZlclZpc2libGUgPSBmYWxzZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgLy8g5omL5Yqo5YiH5o2iIHBvcG92ZXIg55qE5pi+56S6L+makOiXj+eKtuaAgVxyXG4gICAgdGhpcy5uelBvcG92ZXJWaXNpYmxlID0gIXRoaXMubnpQb3BvdmVyVmlzaWJsZTtcclxuICAgIFxyXG4gICAgLy8g5aaC5p6c5omT5byA5LqGIHBvcG92ZXLvvIzmt7vliqDmlofmoaPngrnlh7vnm5HlkKzlmahcclxuICAgIGlmICh0aGlzLm56UG9wb3ZlclZpc2libGUpIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5hdHRhY2hDbGlja091dHNpZGVMaXN0ZW5lcigpO1xyXG4gICAgICB9LCAwKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucmVtb3ZlQ2xpY2tPdXRzaWRlTGlzdGVuZXIoKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IC8vIOmYu+atouS6i+S7tuWGkuazoVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhdHRhY2hDbGlja091dHNpZGVMaXN0ZW5lcigpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmNsaWNrT3V0c2lkZUhhbmRsZXIpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICB0aGlzLmNsaWNrT3V0c2lkZUhhbmRsZXIgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcclxuICAgICAgY29uc3QgbmF0aXZlRWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xyXG4gICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgIFxyXG4gICAgICAvLyDmo4Dmn6XmmK/lkKbngrnlh7vlnKggcG9wb3ZlciDlhoXlrrnljLrln5/lhoVcclxuICAgICAgY29uc3QgcG9wb3ZlckNvbnRlbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcucGxhdGUtaW5wdXQtcG9wb3ZlcicpO1xyXG4gICAgICBjb25zdCBjbGlja2VkSW5Qb3BvdmVyID0gcG9wb3ZlckNvbnRlbnQgJiYgcG9wb3ZlckNvbnRlbnQuY29udGFpbnModGFyZ2V0KTtcclxuICAgICAgXHJcbiAgICAgIC8vIOajgOafpeaYr+WQpueCueWHu+WcqOe7hOS7tuWGhemDqO+8iOWJjee8gOaMiemSru+8iVxyXG4gICAgICBjb25zdCBjbGlja2VkSW5Db21wb25lbnQgPSBuYXRpdmVFbGVtZW50LmNvbnRhaW5zKHRhcmdldCk7XHJcbiAgICAgIFxyXG4gICAgICAvLyDlpoLmnpzngrnlh7vml6LkuI3lnKjnu4Tku7blhoXpg6jvvIzkuZ/kuI3lnKggcG9wb3ZlciDlhoXlrrnljLrln5/vvIzliJnlhbPpl60gcG9wb3ZlclxyXG4gICAgICBpZiAoIWNsaWNrZWRJbkNvbXBvbmVudCAmJiAhY2xpY2tlZEluUG9wb3Zlcikge1xyXG4gICAgICAgIHRoaXMubnpQb3BvdmVyVmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucmVtb3ZlQ2xpY2tPdXRzaWRlTGlzdGVuZXIoKTtcclxuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICBcclxuICAgIC8vIOS9v+eUqOaNleiOt+mYtuaute+8jOehruS/neWcqOWFtuS7luS6i+S7tuWkhOeQhuS5i+WJjeaJp+ihjFxyXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmNsaWNrT3V0c2lkZUhhbmRsZXIsIHRydWUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZW1vdmVDbGlja091dHNpZGVMaXN0ZW5lcigpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmNsaWNrT3V0c2lkZUhhbmRsZXIpIHtcclxuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmNsaWNrT3V0c2lkZUhhbmRsZXIsIHRydWUpO1xyXG4gICAgICB0aGlzLmNsaWNrT3V0c2lkZUhhbmRsZXIgPSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVtb3ZlQ2xpY2tPdXRzaWRlTGlzdGVuZXIoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZW1pdFZhbHVlKCk6IHZvaWQge1xyXG4gICAgY29uc3QgZnVsbFBsYXRlID0gdGhpcy5wbGF0ZVByZWZpeCArIHRoaXMucGxhdGVTdWZmaXg7XHJcbiAgICB0aGlzLm9uQ2hhbmdlKGZ1bGxQbGF0ZSk7XHJcbiAgfVxyXG5cclxuICBvbkJsdXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlQW50ZFBsYXRlU3VmZml4Qmx1cihldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkgcmV0dXJuO1xyXG4gICAgY29uc3QgdmFsdWUgPSBldmVudC50YXJnZXQudmFsdWUudG9VcHBlckNhc2UoKTtcclxuICAgIHRoaXMucGxhdGVTdWZmaXggPSB2YWx1ZTtcclxuICAgIHRoaXMuZW1pdFZhbHVlKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
155
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGUtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkQ6L3Byb2plY3RzL3Zwcy1mcm9udC9Gcm9udC9EYXNQTVNXZWIvbGliL3Byby10YWJsZS9zcmMvIiwic291cmNlcyI6WyJsaWIvcGxhdGUtaW5wdXQvcGxhdGUtaW5wdXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxSCxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLHlCQUF5QixFQUE2QyxNQUFNLFdBQVcsQ0FBQztBQWNqRyxNQUFNLE9BQU8sbUJBQW1CO0lBVzlCLFlBQ1UsR0FBc0IsRUFDdEIsVUFBc0IsRUFDeUIsc0JBQStDO1FBRjlGLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDeUIsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF5QjtRQWJ4RyxxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFDbEMsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFDekIsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFDekIsdUJBQWtCLEdBQTZCLEVBQUUsQ0FBQztRQUNsRCxhQUFRLEdBQVksS0FBSyxDQUFDO1FBQ2xCLGFBQVEsR0FBRyxDQUFDLEtBQWEsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBQ2pDLGNBQVMsR0FBRyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7SUFRMUIsQ0FBQztJQUVKLFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtZQUMvQixvQkFBb0I7WUFDcEIsSUFBSSxDQUFDLHNCQUFzQjtpQkFDeEIsaUJBQWlCLEVBQUU7aUJBQ25CLElBQUksQ0FBQyxDQUFDLElBQThCLEVBQUUs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QUFDO0lBQzNCLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFRCx5QkFBeUIsQ0FBQyxLQUFVO1FBQ2xDLElBQUksSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPO1FBQzFCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQy9DLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDOzs7WUFsS0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxpQkFBaUI7Z0JBQzNCLG1wREFBMkM7Z0JBRTNDLFNBQVMsRUFBRTtvQkFDVDt3QkFDRSxPQUFPLEVBQUUsaUJBQWlCO3dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixDQUFDO3dCQUNsRCxLQUFLLEVBQUUsSUFBSTtxQkFDWjtpQkFDRjs7YUFDRjs7O1lBZmtELGlCQUFpQjtZQUFFLFVBQVU7NENBOEIzRSxRQUFRLFlBQUksTUFBTSxTQUFDLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBPbkRlc3Ryb3ksIGZvcndhcmRSZWYsIENoYW5nZURldGVjdG9yUmVmLCBFbGVtZW50UmVmLCBJbmplY3QsIE9wdGlvbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IFBMQVRFX1BSRUZJWF9MT0FEX1NFUlZJQ0UsIFBsYXRlUHJlZml4TG9hZFNlcnZpY2UsIFBsYXRlUHJlZml4T3B0aW9uIH0gZnJvbSBcIi4uL3Rva2Vuc1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiYXBwLXBsYXRlLWlucHV0XCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9wbGF0ZS1pbnB1dC5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi9wbGF0ZS1pbnB1dC5jb21wb25lbnQubGVzc1wiXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFBsYXRlSW5wdXRDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgIH0sXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFBsYXRlSW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG4gIG56UG9wb3ZlclZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwbGF0ZVByZWZpeDogc3RyaW5nID0gXCJcIjtcclxuICBwbGF0ZVN1ZmZpeDogc3RyaW5nID0gXCJcIjtcclxuICBwbGF0ZVByZWZpeE9wdGlvbnM6IEFycmF5PFBsYXRlUHJlZml4T3B0aW9uPiA9IFtdO1xyXG4gIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBvbkNoYW5nZSA9ICh2YWx1ZTogc3RyaW5nKSA9PiB7fTtcclxuICBwcml2YXRlIG9uVG91Y2hlZCA9ICgpID0+IHt9O1xyXG5cclxuICBwcml2YXRlIGNsaWNrT3V0c2lkZUhhbmRsZXI/OiAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHZvaWQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChQTEFURV9QUkVGSVhfTE9BRF9TRVJWSUNFKSBwcml2YXRlIHBsYXRlUHJlZml4TG9hZFNlcnZpY2U/OiBQbGF0ZVByZWZpeExvYWRTZXJ2aWNlXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnBsYXRlUHJlZml4TG9hZFNlcnZpY2UpIHtcclxuICAgICAgLy8g5L2/55So5rOo5YWl55qE5YWo5bGA5pyN5Yqh5Yqg6L296L2m54mM5YmN57yA6YCJ6aG5XHJcbiAgICAgIHRoaXMucGxhdGVQcmVmaXhMb2FkU2VydmljZVxyXG4gICAgICAgIC5sb2FkUHJlZml4T3B0aW9ucygpXHJcbiAgICAgICAgLnRoZW4oKGRhdGE6IEFycmF5PFBsYXRlUHJlZml4T3B0aW9uPikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wbGF0ZVByZWZpeE9wdGlvbnMgPSBkYXRhO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMucGxhdGVQcmVmaXhPcHRpb25zID0gW107XHJcbiAgICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyDlpoLmnpzmsqHmnInms6jlhaXmnI3liqHvvIzliJnkv53mjIHnqbrmlbDnu4RcclxuICAgICAgdGhpcy5wbGF0ZVByZWZpeE9wdGlvbnMgPSBbXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZVBsYXRlUHJlZml4KHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMucGxhdGVQcmVmaXggPSB2YWx1ZTtcclxuICAgIHRoaXMuZW1pdFZhbHVlKCk7XHJcbiAgICB0aGlzLm56UG9wb3ZlclZpc2libGUgPSBmYWxzZTtcclxuICAgIHRoaXMucmVtb3ZlQ2xpY2tPdXRzaWRlTGlzdGVuZXIoKTtcclxuICB9XHJcblxyXG4gIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgIHRoaXMucGxhdGVQcmVmaXggPSB2YWx1ZS5zcGxpdChcIlwiKVswXTtcclxuICAgICAgdGhpcy5wbGF0ZVN1ZmZpeCA9IHZhbHVlXHJcbiAgICAgICAgLnNwbGl0KFwiXCIpXHJcbiAgICAgICAgLmZpbHRlcigoaXRlbSwgaW5kZXgpID0+IGluZGV4ID4gMClcclxuICAgICAgICAuam9pbihcIlwiKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucGxhdGVQcmVmaXggPSBcIlwiO1xyXG4gICAgICB0aGlzLnBsYXRlU3VmZml4ID0gXCJcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcclxuICB9XHJcblxyXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgY29uc3QgcHJldmlvdXNEaXNhYmxlZCA9IHRoaXMuZGlzYWJsZWQ7XHJcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcclxuICAgIFxyXG4gICAgLy8g5aaC5p6c56aB55So54q25oCB5pS55Y+Y77yM5YWz6ZetIHBvcG92ZXIg5bm256e76Zmk55uR5ZCs5ZmoXHJcbiAgICBpZiAocHJldmlvdXNEaXNhYmxlZCAhPT0gaXNEaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLm56UG9wb3ZlclZpc2libGUgPSBmYWxzZTtcclxuICAgICAgdGhpcy5yZW1vdmVDbGlja091dHNpZGVMaXN0ZW5lcigpO1xyXG4gICAgICAvLyDlvLrliLblj5jmm7Tmo4DmtYtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlUHJlZml4Q2xpY2soZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgdGhpcy5uelBvcG92ZXJWaXNpYmxlID0gZmFsc2U7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIC8vIOaJi+WKqOWIh+aNoiBwb3BvdmVyIOeahOaYvuekui/pmpDol4/nirbmgIFcclxuICAgIHRoaXMubnpQb3BvdmVyVmlzaWJsZSA9ICF0aGlzLm56UG9wb3ZlclZpc2libGU7XHJcbiAgICBcclxuICAgIC8vIOWmguaenOaJk+W8gOS6hiBwb3BvdmVy77yM5re75Yqg5paH5qGj54K55Ye755uR5ZCs5ZmoXHJcbiAgICBpZiAodGhpcy5uelBvcG92ZXJWaXNpYmxlKSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuYXR0YWNoQ2xpY2tPdXRzaWRlTGlzdGVuZXIoKTtcclxuICAgICAgfSwgMCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnJlbW92ZUNsaWNrT3V0c2lkZUxpc3RlbmVyKCk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyAvLyDpmLvmraLkuovku7blhpLms6FcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXR0YWNoQ2xpY2tPdXRzaWRlTGlzdGVuZXIoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5jbGlja091dHNpZGVIYW5kbGVyKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIFxyXG4gICAgdGhpcy5jbGlja091dHNpZGVIYW5kbGVyID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XHJcbiAgICAgIGNvbnN0IG5hdGl2ZUVsZW1lbnQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcclxuICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICBcclxuICAgICAgLy8g5qOA5p+l5piv5ZCm54K55Ye75ZyoIHBvcG92ZXIg5YaF5a655Yy65Z+f5YaFXHJcbiAgICAgIGNvbnN0IHBvcG92ZXJDb250ZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnBsYXRlLWlucHV0LXBvcG92ZXInKTtcclxuICAgICAgY29uc3QgY2xpY2tlZEluUG9wb3ZlciA9IHBvcG92ZXJDb250ZW50ICYmIHBvcG92ZXJDb250ZW50LmNvbnRhaW5zKHRhcmdldCk7XHJcbiAgICAgIFxyXG4gICAgICAvLyDmo4Dmn6XmmK/lkKbngrnlh7vlnKjnu4Tku7blhoXpg6jvvIjliY3nvIDmjInpkq7vvIlcclxuICAgICAgY29uc3QgY2xpY2tlZEluQ29tcG9uZW50ID0gbmF0aXZlRWxlbWVudC5jb250YWlucyh0YXJnZXQpO1xyXG4gICAgICBcclxuICAgICAgLy8g5aaC5p6c54K55Ye75pei5LiN5Zyo57uE5Lu25YaF6YOo77yM5Lmf5LiN5ZyoIHBvcG92ZXIg5YaF5a655Yy65Z+f77yM5YiZ5YWz6ZetIHBvcG92ZXJcclxuICAgICAgaWYgKCFjbGlja2VkSW5Db21wb25lbnQgJiYgIWNsaWNrZWRJblBvcG92ZXIpIHtcclxuICAgICAgICB0aGlzLm56UG9wb3ZlclZpc2libGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnJlbW92ZUNsaWNrT3V0c2lkZUxpc3RlbmVyKCk7XHJcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgXHJcbiAgICAvLyDkvb/nlKjmjZXojrfpmLbmrrXvvIznoa7kv53lnKjlhbbku5bkuovku7blpITnkIbkuYvliY3miafooYxcclxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5jbGlja091dHNpZGVIYW5kbGVyLCB0cnVlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVtb3ZlQ2xpY2tPdXRzaWRlTGlzdGVuZXIoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5jbGlja091dHNpZGVIYW5kbGVyKSB7XHJcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5jbGlja091dHNpZGVIYW5kbGVyLCB0cnVlKTtcclxuICAgICAgdGhpcy5jbGlja091dHNpZGVIYW5kbGVyID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlbW92ZUNsaWNrT3V0c2lkZUxpc3RlbmVyKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGVtaXRWYWx1ZSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGZ1bGxQbGF0ZSA9IHRoaXMucGxhdGVQcmVmaXggKyB0aGlzLnBsYXRlU3VmZml4O1xyXG4gICAgdGhpcy5vbkNoYW5nZShmdWxsUGxhdGUpO1xyXG4gIH1cclxuXHJcbiAgb25CbHVyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoZWQoKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUFudGRQbGF0ZVN1ZmZpeEJsdXIoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHJldHVybjtcclxuICAgIGNvbnN0IHZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlLnRvVXBwZXJDYXNlKCk7XHJcbiAgICB0aGlzLnBsYXRlU3VmZml4ID0gdmFsdWU7XHJcbiAgICB0aGlzLmVtaXRWYWx1ZSgpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -23,4 +23,4 @@ PlateInputModule.decorators = [
23
23
  exports: [PlateInputComponent],
24
24
  },] }
25
25
  ];
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGUtaW5wdXQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IkQ6L3Byb2plY3RzL3Zwcy1mcm9udC9Gcm9udC9EYXNQTVNXZWIvcHJvamVjdHMvcHJvLXRhYmxlL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9wbGF0ZS1pbnB1dC9wbGF0ZS1pbnB1dC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQWU5RCxNQUFNLE9BQU8sZ0JBQWdCOzs7WUFiNUIsUUFBUSxTQUFDO2dCQUNSLE9BQU8sRUFBRTtvQkFDUCxZQUFZO29CQUNaLFdBQVc7b0JBQ1gsWUFBWTtvQkFDWixhQUFhO29CQUNiLGVBQWU7b0JBQ2YsWUFBWTtpQkFDYjtnQkFDRCxZQUFZLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztnQkFDbkMsU0FBUyxFQUFFLEVBQUU7Z0JBQ2IsT0FBTyxFQUFFLENBQUMsbUJBQW1CLENBQUM7YUFDL0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgTnpHcmlkTW9kdWxlIH0gZnJvbSBcIm5nLXpvcnJvLWFudGQvZ3JpZFwiO1xyXG5pbXBvcnQgeyBOekljb25Nb2R1bGUgfSBmcm9tIFwibmctem9ycm8tYW50ZC9pY29uXCI7XHJcbmltcG9ydCB7IE56SW5wdXRNb2R1bGUgfSBmcm9tIFwibmctem9ycm8tYW50ZC9pbnB1dFwiO1xyXG5pbXBvcnQgeyBOelBvcG92ZXJNb2R1bGUgfSBmcm9tIFwibmctem9ycm8tYW50ZC9wb3BvdmVyXCI7XHJcbmltcG9ydCB7IFBsYXRlSW5wdXRDb21wb25lbnQgfSBmcm9tIFwiLi9wbGF0ZS1pbnB1dC5jb21wb25lbnRcIjtcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBOekdyaWRNb2R1bGUsXHJcbiAgICBOeklucHV0TW9kdWxlLFxyXG4gICAgTnpQb3BvdmVyTW9kdWxlLFxyXG4gICAgTnpJY29uTW9kdWxlLFxyXG4gIF0sXHJcbiAgZGVjbGFyYXRpb25zOiBbUGxhdGVJbnB1dENvbXBvbmVudF0sXHJcbiAgcHJvdmlkZXJzOiBbXSxcclxuICBleHBvcnRzOiBbUGxhdGVJbnB1dENvbXBvbmVudF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQbGF0ZUlucHV0TW9kdWxlIHt9XHJcbiJdfQ==
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGUtaW5wdXQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IkQ6L3Byb2plY3RzL3Zwcy1mcm9udC9Gcm9udC9EYXNQTVNXZWIvbGliL3Byby10YWJsZS9zcmMvIiwic291cmNlcyI6WyJsaWIvcGxhdGUtaW5wdXQvcGxhdGUtaW5wdXQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFlOUQsTUFBTSxPQUFPLGdCQUFnQjs7O1lBYjVCLFFBQVEsU0FBQztnQkFDUixPQUFPLEVBQUU7b0JBQ1AsWUFBWTtvQkFDWixXQUFXO29CQUNYLFlBQVk7b0JBQ1osYUFBYTtvQkFDYixlQUFlO29CQUNmLFlBQVk7aUJBQ2I7Z0JBQ0QsWUFBWSxFQUFFLENBQUMsbUJBQW1CLENBQUM7Z0JBQ25DLFNBQVMsRUFBRSxFQUFFO2dCQUNiLE9BQU8sRUFBRSxDQUFDLG1CQUFtQixDQUFDO2FBQy9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IE56R3JpZE1vZHVsZSB9IGZyb20gXCJuZy16b3Jyby1hbnRkL2dyaWRcIjtcclxuaW1wb3J0IHsgTnpJY29uTW9kdWxlIH0gZnJvbSBcIm5nLXpvcnJvLWFudGQvaWNvblwiO1xyXG5pbXBvcnQgeyBOeklucHV0TW9kdWxlIH0gZnJvbSBcIm5nLXpvcnJvLWFudGQvaW5wdXRcIjtcclxuaW1wb3J0IHsgTnpQb3BvdmVyTW9kdWxlIH0gZnJvbSBcIm5nLXpvcnJvLWFudGQvcG9wb3ZlclwiO1xyXG5pbXBvcnQgeyBQbGF0ZUlucHV0Q29tcG9uZW50IH0gZnJvbSBcIi4vcGxhdGUtaW5wdXQuY29tcG9uZW50XCI7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgTnpHcmlkTW9kdWxlLFxyXG4gICAgTnpJbnB1dE1vZHVsZSxcclxuICAgIE56UG9wb3Zlck1vZHVsZSxcclxuICAgIE56SWNvbk1vZHVsZSxcclxuICBdLFxyXG4gIGRlY2xhcmF0aW9uczogW1BsYXRlSW5wdXRDb21wb25lbnRdLFxyXG4gIHByb3ZpZGVyczogW10sXHJcbiAgZXhwb3J0czogW1BsYXRlSW5wdXRDb21wb25lbnRdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGxhdGVJbnB1dE1vZHVsZSB7fVxyXG4iXX0=
@@ -38,4 +38,4 @@ DefaultPlatePrefixLoadService.decorators = [
38
38
  DefaultPlatePrefixLoadService.ctorParameters = () => [
39
39
  { type: HttpClient }
40
40
  ];
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGUtcHJlZml4LWxvYWQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJEOi9wcm9qZWN0cy92cHMtZnJvbnQvRnJvbnQvRGFzUE1TV2ViL3Byb2plY3RzL3Byby10YWJsZS9zcmMvIiwic291cmNlcyI6WyJsaWIvcGxhdGUtaW5wdXQvcGxhdGUtcHJlZml4LWxvYWQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUdsRDs7O0dBR0c7QUFFSCxNQUFNLE9BQU8sNkJBQTZCO0lBR3hDLFlBQW9CLElBQWdCO1FBQWhCLFNBQUksR0FBSixJQUFJLENBQVk7UUFGbkIsa0JBQWEsR0FBRyxtQ0FBbUMsQ0FBQztJQUU5QixDQUFDO0lBRXhDLGlCQUFpQjtRQUNmLE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDYixJQUFJLENBQVcsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDO2FBQ2xFLFNBQVMsRUFBRTthQUNYLElBQUksQ0FBQyxDQUFDLElBQWMsRUFBRSxFQUFFO1lBQ3ZCLE1BQU0sT0FBTyxHQUF3QixFQUFFLENBQUM7WUFDeEMsaUJBQWlCO1lBQ2pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZDLFNBQVM7WUFDVCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDcEMsT0FBTyxDQUFDLElBQUksQ0FBQztvQkFDWCxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztvQkFDZCxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztpQkFDZixDQUFDLENBQUM7YUFDSjtZQUNELE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUMsQ0FBQzthQUNELEtBQUssQ0FBQyxHQUFHLEVBQUU7WUFDVixhQUFhO1lBQ2IsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7OztZQTNCRixVQUFVOzs7WUFQRixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHsgUGxhdGVQcmVmaXhMb2FkU2VydmljZSwgUGxhdGVQcmVmaXhPcHRpb24gfSBmcm9tIFwiLi4vdG9rZW5zXCI7XHJcblxyXG4vKipcclxuICog6buY6K6k55qE6L2m54mM5YmN57yA5Yqg6L295pyN5Yqh5a6e546wXHJcbiAqIOS9v+eUqCBIdHRwQ2xpZW50IOiwg+eUqCBBUEkg6I635Y+W6L2m54mM5YmN57yA6YCJ6aG5XHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBEZWZhdWx0UGxhdGVQcmVmaXhMb2FkU2VydmljZSBpbXBsZW1lbnRzIFBsYXRlUHJlZml4TG9hZFNlcnZpY2Uge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdEFwaVVybCA9IFwiL1BsYXRlRmlyc3RXb3JkL0dldFBsYXRlRmlyc3RXb3JkXCI7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCkge31cclxuXHJcbiAgbG9hZFByZWZpeE9wdGlvbnMoKTogUHJvbWlzZTxQbGF0ZVByZWZpeE9wdGlvbltdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5wb3N0PHN0cmluZ1tdPih0aGlzLmRlZmF1bHRBcGlVcmwsIHsgZGljdENvZGU6IFwiUGxhdGVGaXJzdFdvcmRcIiB9KVxyXG4gICAgICAudG9Qcm9taXNlKClcclxuICAgICAgLnRoZW4oKGxpc3Q6IHN0cmluZ1tdKSA9PiB7XHJcbiAgICAgICAgY29uc3Qgb3B0aW9uczogUGxhdGVQcmVmaXhPcHRpb25bXSA9IFtdO1xyXG4gICAgICAgIC8vIOa3u+WKoOepuumAiemhue+8iOS4juaXp+eJiOS/neaMgeS4gOiHtO+8iVxyXG4gICAgICAgIG9wdGlvbnMucHVzaCh7IGxhYmVsOiBcIlwiLCB2YWx1ZTogXCJcIiB9KTtcclxuICAgICAgICAvLyDovazmjaLmlbDmja7moLzlvI9cclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIG9wdGlvbnMucHVzaCh7XHJcbiAgICAgICAgICAgIGxhYmVsOiBsaXN0W2ldLFxyXG4gICAgICAgICAgICB2YWx1ZTogbGlzdFtpXSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gb3B0aW9ucztcclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKCgpID0+IHtcclxuICAgICAgICAvLyDlj5HnlJ/plJnor6/ml7bov5Tlm57nqbrmlbDnu4RcclxuICAgICAgICByZXR1cm4gW107XHJcbiAgICAgIH0pO1xyXG4gIH1cclxufVxyXG5cclxuIl19
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGUtcHJlZml4LWxvYWQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJEOi9wcm9qZWN0cy92cHMtZnJvbnQvRnJvbnQvRGFzUE1TV2ViL2xpYi9wcm8tdGFibGUvc3JjLyIsInNvdXJjZXMiOlsibGliL3BsYXRlLWlucHV0L3BsYXRlLXByZWZpeC1sb2FkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHbEQ7OztHQUdHO0FBRUgsTUFBTSxPQUFPLDZCQUE2QjtJQUd4QyxZQUFvQixJQUFnQjtRQUFoQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBRm5CLGtCQUFhLEdBQUcsbUNBQW1DLENBQUM7SUFFOUIsQ0FBQztJQUV4QyxpQkFBaUI7UUFDZixPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ2IsSUFBSSxDQUFXLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQzthQUNsRSxTQUFTLEVBQUU7YUFDWCxJQUFJLENBQUMsQ0FBQyxJQUFjLEVBQUUsRUFBRTtZQUN2QixNQUFNLE9BQU8sR0FBd0IsRUFBRSxDQUFDO1lBQ3hDLGlCQUFpQjtZQUNqQixPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN2QyxTQUFTO1lBQ1QsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3BDLE9BQU8sQ0FBQyxJQUFJLENBQUM7b0JBQ1gsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7b0JBQ2QsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7aUJBQ2YsQ0FBQyxDQUFDO2FBQ0o7WUFDRCxPQUFPLE9BQU8sQ0FBQztRQUNqQixDQUFDLENBQUM7YUFDRCxLQUFLLENBQUMsR0FBRyxFQUFFO1lBQ1YsYUFBYTtZQUNiLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzs7WUEzQkYsVUFBVTs7O1lBUEYsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7IFBsYXRlUHJlZml4TG9hZFNlcnZpY2UsIFBsYXRlUHJlZml4T3B0aW9uIH0gZnJvbSBcIi4uL3Rva2Vuc1wiO1xyXG5cclxuLyoqXHJcbiAqIOm7mOiupOeahOi9pueJjOWJjee8gOWKoOi9veacjeWKoeWunueOsFxyXG4gKiDkvb/nlKggSHR0cENsaWVudCDosIPnlKggQVBJIOiOt+WPlui9pueJjOWJjee8gOmAiemhuVxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgRGVmYXVsdFBsYXRlUHJlZml4TG9hZFNlcnZpY2UgaW1wbGVtZW50cyBQbGF0ZVByZWZpeExvYWRTZXJ2aWNlIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRBcGlVcmwgPSBcIi9QbGF0ZUZpcnN0V29yZC9HZXRQbGF0ZUZpcnN0V29yZFwiO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQpIHt9XHJcblxyXG4gIGxvYWRQcmVmaXhPcHRpb25zKCk6IFByb21pc2U8UGxhdGVQcmVmaXhPcHRpb25bXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAucG9zdDxzdHJpbmdbXT4odGhpcy5kZWZhdWx0QXBpVXJsLCB7IGRpY3RDb2RlOiBcIlBsYXRlRmlyc3RXb3JkXCIgfSlcclxuICAgICAgLnRvUHJvbWlzZSgpXHJcbiAgICAgIC50aGVuKChsaXN0OiBzdHJpbmdbXSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IG9wdGlvbnM6IFBsYXRlUHJlZml4T3B0aW9uW10gPSBbXTtcclxuICAgICAgICAvLyDmt7vliqDnqbrpgInpobnvvIjkuI7ml6fniYjkv53mjIHkuIDoh7TvvIlcclxuICAgICAgICBvcHRpb25zLnB1c2goeyBsYWJlbDogXCJcIiwgdmFsdWU6IFwiXCIgfSk7XHJcbiAgICAgICAgLy8g6L2s5o2i5pWw5o2u5qC85byPXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBvcHRpb25zLnB1c2goe1xyXG4gICAgICAgICAgICBsYWJlbDogbGlzdFtpXSxcclxuICAgICAgICAgICAgdmFsdWU6IGxpc3RbaV0sXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG9wdGlvbnM7XHJcbiAgICAgIH0pXHJcbiAgICAgIC5jYXRjaCgoKSA9PiB7XHJcbiAgICAgICAgLy8g5Y+R55Sf6ZSZ6K+v5pe26L+U5Zue56m65pWw57uEXHJcbiAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgICB9KTtcclxuICB9XHJcbn1cclxuXHJcbiJdfQ==