@techextensor/tab-core-utility 2.2.190 → 2.2.192

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 (77) hide show
  1. package/esm2022/index.mjs +1 -5
  2. package/esm2022/lib/tab-core-utility/app/constants/api-constants.mjs +15 -31
  3. package/esm2022/lib/tab-core-utility/app/constants/common.mjs +50 -14
  4. package/esm2022/lib/tab-core-utility/app/constants/storage-constants.mjs +3 -2
  5. package/esm2022/lib/tab-core-utility/app/crud/tab-blueprint.service.mjs +5 -5
  6. package/esm2022/lib/tab-core-utility/app/crud/tab-crud.service.mjs +54 -41
  7. package/esm2022/lib/tab-core-utility/app/crud/tab-delete.service.mjs +30 -84
  8. package/esm2022/lib/tab-core-utility/app/crud/tab-formio.service.mjs +12 -141
  9. package/esm2022/lib/tab-core-utility/app/crud/tab-get.service.mjs +41 -142
  10. package/esm2022/lib/tab-core-utility/app/crud/tab-insert.service.mjs +38 -89
  11. package/esm2022/lib/tab-core-utility/app/crud/tab-update.service.mjs +129 -159
  12. package/esm2022/lib/tab-core-utility/app/enums/query.enum.mjs +7 -7
  13. package/esm2022/lib/tab-core-utility/app/helpers/common/app.helpers.mjs +21 -28
  14. package/esm2022/lib/tab-core-utility/app/helpers/common/dsq.helpers.mjs +11 -9
  15. package/esm2022/lib/tab-core-utility/app/helpers/common/meta-data.helpers.mjs +13 -13
  16. package/esm2022/lib/tab-core-utility/app/helpers/common/req-res.helpers.mjs +45 -7
  17. package/esm2022/lib/tab-core-utility/app/helpers/common/where-clause.helpers.mjs +76 -79
  18. package/esm2022/lib/tab-core-utility/app/helpers/screen/grid.helpers.mjs +4 -8
  19. package/esm2022/lib/tab-core-utility/app/helpers/screen/media-upload.helpers.mjs +4 -4
  20. package/esm2022/lib/tab-core-utility/app/helpers/screen/screen.helpers.mjs +33 -8
  21. package/esm2022/lib/tab-core-utility/app/interfaces/common.interface.mjs +1 -1
  22. package/esm2022/lib/tab-core-utility/app/models/api-query.class.mjs +1 -39
  23. package/esm2022/lib/tab-core-utility/app/models/app-field.model.mjs +7 -36
  24. package/esm2022/lib/tab-core-utility/app/models/app-object.model.mjs +47 -84
  25. package/esm2022/lib/tab-core-utility/app/models/app-screen.model.mjs +13 -24
  26. package/esm2022/lib/tab-core-utility/app/models/data-source-query.model.mjs +23 -57
  27. package/esm2022/lib/tab-core-utility/app/models/filter.model.mjs +10 -21
  28. package/esm2022/lib/tab-core-utility/app/models/parameter.model.mjs +6 -12
  29. package/esm2022/lib/tab-core-utility/app/models/sort.model.mjs +4 -11
  30. package/esm2022/lib/tab-core-utility/app/utils/json.util.mjs +16 -17
  31. package/esm2022/lib/tab-core-utility/app/utils/req-res.util.mjs +55 -1
  32. package/esm2022/lib/tab-core-utility/app/utils/tab-app.util.mjs +164 -1
  33. package/esm2022/lib/tab-core-utility/core/http-client/api.service.mjs +1 -78
  34. package/index.d.ts +0 -4
  35. package/lib/tab-core-utility/app/constants/api-constants.d.ts +12 -19
  36. package/lib/tab-core-utility/app/constants/common.d.ts +0 -9
  37. package/lib/tab-core-utility/app/constants/storage-constants.d.ts +2 -1
  38. package/lib/tab-core-utility/app/crud/tab-blueprint.service.d.ts +2 -2
  39. package/lib/tab-core-utility/app/crud/tab-crud.service.d.ts +1 -8
  40. package/lib/tab-core-utility/app/crud/tab-delete.service.d.ts +10 -20
  41. package/lib/tab-core-utility/app/crud/tab-formio.service.d.ts +6 -33
  42. package/lib/tab-core-utility/app/crud/tab-get.service.d.ts +6 -48
  43. package/lib/tab-core-utility/app/crud/tab-insert.service.d.ts +21 -16
  44. package/lib/tab-core-utility/app/crud/tab-update.service.d.ts +19 -34
  45. package/lib/tab-core-utility/app/enums/query.enum.d.ts +6 -3
  46. package/lib/tab-core-utility/app/helpers/common/app.helpers.d.ts +9 -6
  47. package/lib/tab-core-utility/app/helpers/common/dsq.helpers.d.ts +0 -3
  48. package/lib/tab-core-utility/app/helpers/common/meta-data.helpers.d.ts +3 -3
  49. package/lib/tab-core-utility/app/helpers/common/req-res.helpers.d.ts +51 -7
  50. package/lib/tab-core-utility/app/helpers/common/where-clause.helpers.d.ts +0 -1
  51. package/lib/tab-core-utility/app/helpers/screen/grid.helpers.d.ts +1 -2
  52. package/lib/tab-core-utility/app/helpers/screen/media-upload.helpers.d.ts +1 -1
  53. package/lib/tab-core-utility/app/helpers/screen/screen.helpers.d.ts +0 -1
  54. package/lib/tab-core-utility/app/interfaces/common.interface.d.ts +2 -51
  55. package/lib/tab-core-utility/app/models/api-query.class.d.ts +9 -54
  56. package/lib/tab-core-utility/app/models/app-field.model.d.ts +2 -4
  57. package/lib/tab-core-utility/app/models/app-object.model.d.ts +3 -5
  58. package/lib/tab-core-utility/app/models/app-screen.model.d.ts +2 -2
  59. package/lib/tab-core-utility/app/models/data-source-query.model.d.ts +2 -7
  60. package/lib/tab-core-utility/app/models/filter.model.d.ts +2 -2
  61. package/lib/tab-core-utility/app/models/parameter.model.d.ts +2 -2
  62. package/lib/tab-core-utility/app/models/sort.model.d.ts +1 -1
  63. package/lib/tab-core-utility/app/utils/json.util.d.ts +2 -3
  64. package/lib/tab-core-utility/app/utils/req-res.util.d.ts +9 -1
  65. package/lib/tab-core-utility/app/utils/tab-app.util.d.ts +61 -0
  66. package/lib/tab-core-utility/core/http-client/api.service.d.ts +0 -46
  67. package/package.json +2 -3
  68. package/esm2022/lib/tab-core-utility/app/helpers/response.adapter.mjs +0 -38
  69. package/esm2022/lib/tab-core-utility/app/interfaces/signalr.interface.mjs +0 -42
  70. package/esm2022/lib/tab-core-utility/core/service/signalr/operation-tracker.service.mjs +0 -90
  71. package/esm2022/lib/tab-core-utility/core/service/signalr/signalr-infrastructure.service.mjs +0 -268
  72. package/esm2022/lib/tab-core-utility/core/service/signalr/signalr.service.mjs +0 -207
  73. package/lib/tab-core-utility/app/helpers/response.adapter.d.ts +0 -22
  74. package/lib/tab-core-utility/app/interfaces/signalr.interface.d.ts +0 -84
  75. package/lib/tab-core-utility/core/service/signalr/operation-tracker.service.d.ts +0 -40
  76. package/lib/tab-core-utility/core/service/signalr/signalr-infrastructure.service.d.ts +0 -73
  77. package/lib/tab-core-utility/core/service/signalr/signalr.service.d.ts +0 -122
@@ -1,13 +1,10 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import { Injectable, inject } from '@angular/core';
2
+ import { Injectable } from '@angular/core';
3
3
  import { ConjuctionClause, RelationalOperator, FilterValueType, } from '../../enums/dsq.enum';
4
4
  import { APIFilterCriteria } from '../../models/api-query.class';
5
- import { MetadataHelper } from './meta-data.helpers';
5
+ import { getAppObjectFromSystemDBTableName, getAppObject, } from '../../utils/tab-app.util';
6
6
  import * as i0 from "@angular/core";
7
7
  export class WhereClauseHelper {
8
- constructor() {
9
- this.metadataHelper = inject(MetadataHelper);
10
- }
11
8
  /**
12
9
  * Binds the where clause for deleting records based on field, value, field name, and CRUD table name
13
10
  * @param fields The fields to bind the where clause
@@ -17,9 +14,9 @@ export class WhereClauseHelper {
17
14
  * @returns The bound where clause for delete operation
18
15
  */
19
16
  bindWhereClauseForDelete(fields, value, fieldName, crudTableName) {
20
- const appobj = this.metadataHelper.getAllAppObjects(obj => obj.SystemDBTableName === crudTableName)[0];
17
+ const appobj = getAppObjectFromSystemDBTableName(crudTableName);
21
18
  if (appobj && appobj.CRUDAppObjectId !== null) {
22
- const crudAppObj = this.metadataHelper.getAppObjectByIdOrName(appobj.CRUDAppObjectId);
19
+ const crudAppObj = getAppObject(appobj.CRUDAppObjectId);
23
20
  if (crudAppObj) {
24
21
  crudTableName = crudAppObj.SystemDBTableName;
25
22
  }
@@ -49,8 +46,8 @@ export class WhereClauseHelper {
49
46
  */
50
47
  bindWhereClauseEmpty() {
51
48
  const whereClause = new APIFilterCriteria();
52
- whereClause.filterLogic = '1';
53
- whereClause.filters = [];
49
+ whereClause.FilterLogic = '1';
50
+ whereClause.Filters = [];
54
51
  return whereClause;
55
52
  }
56
53
  /**
@@ -65,18 +62,18 @@ export class WhereClauseHelper {
65
62
  const filteredFields = fields.filter((f) => fieldName
66
63
  ? f.Field?.FieldName === fieldName
67
64
  : f.Field?.FieldName === 'Id' || f.Field?.FieldName === 'ID');
68
- const filters = filteredFields.map((field, index) => ({
69
- conjunction: ConjuctionClause.AND,
70
- fieldName: crudTableName + '.' + field.Field.FieldName,
71
- operator: RelationalOperator.EqualTo,
72
- valueType: FilterValueType.Literal,
65
+ const filters = filteredFields.map((field) => ({
66
+ ConjuctionClause: ConjuctionClause.AND,
67
+ FieldID: crudTableName + '.' + field.Field.SystemDBFieldName,
68
+ RelationalOperator: RelationalOperator.EqualTo,
69
+ ValueType: FilterValueType.Literal,
73
70
  value: value,
74
- sequence: index + 1,
75
- groupId: 0,
71
+ Sequence: 0,
72
+ GroupID: 0,
76
73
  }));
77
74
  const whereClause = new APIFilterCriteria();
78
- whereClause.filters = filters;
79
- whereClause.filterLogic = '1';
75
+ whereClause.Filters = filters;
76
+ whereClause.FilterLogic = '1';
80
77
  return whereClause;
81
78
  }
82
79
  /**
@@ -88,25 +85,25 @@ export class WhereClauseHelper {
88
85
  */
89
86
  bindWhereClauseForMultiplePrimaryKeys(data, primaryKeys, crudTableName) {
90
87
  const whereClause = new APIFilterCriteria();
91
- whereClause.filters = [];
88
+ whereClause.Filters = [];
92
89
  if (primaryKeys && primaryKeys.length > 0) {
93
- primaryKeys.forEach((element, index) => {
90
+ primaryKeys.forEach((element) => {
94
91
  const value = data[element.FieldName];
95
92
  if (value) {
96
93
  const filter = {
97
- conjunction: ConjuctionClause.AND,
98
- fieldName: crudTableName + '.' + element.FieldName,
99
- operator: RelationalOperator.EqualTo,
100
- valueType: FilterValueType.Literal,
94
+ ConjuctionClause: ConjuctionClause.AND,
95
+ FieldID: crudTableName + '.' + element.SystemDBFieldName,
96
+ RelationalOperator: RelationalOperator.EqualTo,
97
+ ValueType: FilterValueType.Literal,
101
98
  value: value,
102
- sequence: index + 1,
103
- groupId: 0,
99
+ Sequence: 0,
100
+ GroupID: 0,
104
101
  };
105
- whereClause.filters.push(filter);
102
+ whereClause.Filters.push(filter);
106
103
  }
107
104
  });
108
105
  }
109
- whereClause.filterLogic = '1';
106
+ whereClause.FilterLogic = '1';
110
107
  return whereClause;
111
108
  }
112
109
  /**
@@ -117,22 +114,22 @@ export class WhereClauseHelper {
117
114
  */
118
115
  bindWhereClauseForUpdate(tableName, queryFieldsArray) {
119
116
  const whereClause = new APIFilterCriteria();
120
- whereClause.filters = [];
117
+ whereClause.Filters = [];
121
118
  if (queryFieldsArray.length) {
122
- queryFieldsArray.forEach((element, index) => {
119
+ queryFieldsArray.forEach((element) => {
123
120
  const filter = {
124
- conjunction: ConjuctionClause.AND,
125
- fieldName: tableName + '.' + element.FieldName,
126
- operator: RelationalOperator.EqualTo,
127
- valueType: FilterValueType.Literal,
121
+ ConjuctionClause: ConjuctionClause.AND,
122
+ FieldID: tableName + '.' + element.FieldName,
123
+ RelationalOperator: RelationalOperator.EqualTo,
124
+ ValueType: FilterValueType.Literal,
128
125
  value: element.FieldValue,
129
- sequence: index + 1,
130
- groupId: 0,
126
+ Sequence: 0,
127
+ GroupID: 0,
131
128
  };
132
- whereClause.filters.push(filter);
129
+ whereClause.Filters.push(filter);
133
130
  });
134
131
  }
135
- whereClause.filterLogic = '1';
132
+ whereClause.FilterLogic = '1';
136
133
  return whereClause;
137
134
  }
138
135
  /**
@@ -144,18 +141,18 @@ export class WhereClauseHelper {
144
141
  */
145
142
  bindWhereClauseForDeleteByTable(tableName, primaryKey, primaryKeyValue) {
146
143
  const whereClause = new APIFilterCriteria();
147
- whereClause.filters = [];
144
+ whereClause.Filters = [];
148
145
  const filter = {
149
- conjunction: ConjuctionClause.AND,
150
- fieldName: tableName + '.' + primaryKey,
151
- operator: RelationalOperator.EqualTo,
152
- valueType: FilterValueType.Literal,
146
+ ConjuctionClause: ConjuctionClause.AND,
147
+ FieldID: tableName + '.' + primaryKey,
148
+ RelationalOperator: RelationalOperator.EqualTo,
149
+ ValueType: FilterValueType.Literal,
153
150
  value: primaryKeyValue,
154
- sequence: 1,
155
- groupId: 0,
151
+ Sequence: 0,
152
+ GroupID: 0,
156
153
  };
157
- whereClause.filters.push(filter);
158
- whereClause.filterLogic = '1';
154
+ whereClause.Filters.push(filter);
155
+ whereClause.FilterLogic = '1';
159
156
  return whereClause;
160
157
  }
161
158
  /**
@@ -166,26 +163,26 @@ export class WhereClauseHelper {
166
163
  * @returns The bound where clause for delete operation using IN operator and table
167
164
  */
168
165
  bindWhereClauseForDeleteUsingInOperatorByTable(tableName, primaryKey, values) {
169
- const appobj = this.metadataHelper.getAllAppObjects(obj => obj.SystemDBTableName === tableName)[0];
166
+ const appobj = getAppObjectFromSystemDBTableName(tableName);
170
167
  if (appobj?.CRUDAppObjectId !== null) {
171
- const crudAppObj = this.metadataHelper.getAppObjectByIdOrName(appobj.CRUDAppObjectId || '');
168
+ const crudAppObj = getAppObject(appobj.CRUDAppObjectId);
172
169
  if (crudAppObj) {
173
170
  tableName = crudAppObj.SystemDBTableName;
174
171
  }
175
172
  }
176
173
  const whereClause = new APIFilterCriteria();
177
- whereClause.filters = [];
174
+ whereClause.Filters = [];
178
175
  const filter = {
179
- conjunction: ConjuctionClause.AND,
180
- fieldName: tableName + '.' + primaryKey,
181
- operator: RelationalOperator.IN,
182
- valueType: FilterValueType.Literal,
176
+ ConjuctionClause: ConjuctionClause.AND,
177
+ FieldID: tableName + '.' + primaryKey,
178
+ RelationalOperator: RelationalOperator.IN,
179
+ ValueType: FilterValueType.Literal,
183
180
  value: values.join(','),
184
- sequence: 1,
185
- groupId: 0,
181
+ Sequence: 0,
182
+ GroupID: 0,
186
183
  };
187
- whereClause.filters.push(filter);
188
- whereClause.filterLogic = '1';
184
+ whereClause.Filters.push(filter);
185
+ whereClause.FilterLogic = '1';
189
186
  return whereClause;
190
187
  }
191
188
  /**
@@ -208,23 +205,23 @@ export class WhereClauseHelper {
208
205
  */
209
206
  bindWhereClauseForUpdateUsingFilters(tableName, filters, fields) {
210
207
  const whereClause = new APIFilterCriteria();
211
- whereClause.filters = [];
208
+ whereClause.Filters = [];
212
209
  if (filters.length) {
213
- filters.forEach((element, index) => {
210
+ filters.forEach((element) => {
214
211
  const field = fields.find((f) => f.ID === element.FieldID) || {};
215
212
  const filter = {
216
- conjunction: element.ConjuctionClause,
217
- fieldName: tableName + '.' + field.FieldName,
218
- operator: element.RelationalOperator,
219
- valueType: element.ValueType,
213
+ ConjuctionClause: element.ConjuctionClause,
214
+ FieldID: `${tableName}.${field.FieldName}`,
215
+ RelationalOperator: element.RelationalOperator,
216
+ ValueType: element.ValueType,
220
217
  value: element.Value,
221
- sequence: element.Sequence || index + 1,
222
- groupId: element.GroupID,
218
+ Sequence: element.Sequence,
219
+ GroupID: element.GroupID,
223
220
  };
224
- whereClause.filters.push(filter);
221
+ whereClause.Filters.push(filter);
225
222
  });
226
223
  }
227
- whereClause.filterLogic = '1';
224
+ whereClause.FilterLogic = '1';
228
225
  return whereClause;
229
226
  }
230
227
  /**
@@ -235,23 +232,23 @@ export class WhereClauseHelper {
235
232
  */
236
233
  bindWhereClauseForDynamicDelete(tableName, keyValuePairs) {
237
234
  const whereClause = new APIFilterCriteria();
238
- whereClause.filters = [];
235
+ whereClause.Filters = [];
239
236
  // Loop through the key value pairs and add them to the where clause
240
- // The conjuction clause is AND for all items
237
+ // The conjuction clause is AND for the first item and OR for the rest
241
238
  keyValuePairs.forEach((pair, index) => {
242
239
  const filter = {
243
- conjunction: index === 0 ? ConjuctionClause.AND : ConjuctionClause.AND,
244
- fieldName: tableName + '.' + pair.key,
245
- operator: RelationalOperator.EqualTo,
246
- valueType: FilterValueType.Literal,
240
+ ConjuctionClause: index === 0 ? ConjuctionClause.AND : ConjuctionClause.AND,
241
+ FieldID: `${tableName}.${pair.key}`,
242
+ RelationalOperator: RelationalOperator.EqualTo,
243
+ ValueType: FilterValueType.Literal,
247
244
  value: pair.value,
248
- sequence: index + 1,
249
- groupId: 0
245
+ Sequence: index,
246
+ GroupID: 0
250
247
  };
251
- whereClause.filters.push(filter);
248
+ whereClause.Filters.push(filter);
252
249
  });
253
250
  // The filter logic is always '1' for dynamic delete
254
- whereClause.filterLogic = '1';
251
+ whereClause.FilterLogic = '1';
255
252
  return whereClause;
256
253
  }
257
254
  static { this.ɵfac = function WhereClauseHelper_Factory(t) { return new (t || WhereClauseHelper)(); }; }
@@ -261,4 +258,4 @@ export class WhereClauseHelper {
261
258
  type: Injectable,
262
259
  args: [{ providedIn: 'root' }]
263
260
  }], null, null); })();
264
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2hlcmUtY2xhdXNlLmhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL3NyYy9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvaGVscGVycy9jb21tb24vd2hlcmUtY2xhdXNlLmhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBRXZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsa0JBQWtCLEVBQ2xCLGVBQWUsR0FDaEIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBR3JELE1BQU0sT0FBTyxpQkFBaUI7SUFEOUI7UUFFbUIsbUJBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7S0F1VDFEO0lBdFRDOzs7Ozs7O09BT0c7SUFDSCx3QkFBd0IsQ0FDdEIsTUFBVyxFQUNYLEtBQVUsRUFDVixTQUFpQixFQUNqQixhQUFxQjtRQUVyQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLGlCQUFpQixLQUFLLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZHLElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxlQUFlLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDOUMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDdEYsSUFBSSxVQUFVLEVBQUUsQ0FBQztnQkFDZixhQUFhLEdBQUcsVUFBVSxDQUFDLGlCQUFp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LEVBQUUsZUFBZSxDQUFDLE9BQU87Z0JBQ2xDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztnQkFDakIsUUFBUSxFQUFFLEtBQUssR0FBRyxDQUFDO2dCQUNuQixPQUFPLEVBQUUsQ0FBQzthQUNYLENBQUM7WUFDRixXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNuQyxDQUFDLENBQUMsQ0FBQztRQUVILG9EQUFvRDtRQUNwRCxXQUFXLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQztRQUM5QixPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO2tGQXZUVSxpQkFBaUI7dUVBQWpCLGlCQUFpQixXQUFqQixpQkFBaUIsbUJBREosTUFBTTs7aUZBQ25CLGlCQUFpQjtjQUQ3QixVQUFVO2VBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xyXG5cclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQge1xyXG4gIENvbmp1Y3Rpb25DbGF1c2UsXHJcbiAgUmVsYXRpb25hbE9wZXJhdG9yLFxyXG4gIEZpbHRlclZhbHVlVHlwZSxcclxufSBmcm9tICcuLi8uLi9lbnVtcy9kc3EuZW51bSc7XHJcbmltcG9ydCB7IEFQSUZpbHRlckNyaXRlcmlhIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FwaS1xdWVyeS5jbGFzcyc7XHJcbmltcG9ydCB7IE1ldGFkYXRhSGVscGVyIH0gZnJvbSAnLi9tZXRhLWRhdGEuaGVscGVycyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgV2hlcmVDbGF1c2VIZWxwZXIge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgbWV0YWRhdGFIZWxwZXIgPSBpbmplY3QoTWV0YWRhdGFIZWxwZXIpO1xyXG4gIC8qKlxyXG4gICAqIEJpbmRzIHRoZSB3aGVyZSBjbGF1c2UgZm9yIGRlbGV0aW5nIHJlY29yZHMgYmFzZWQgb24gZmllbGQsIHZhbHVlLCBmaWVsZCBuYW1lLCBhbmQgQ1JVRCB0YWJsZSBuYW1lXHJcbiAgICogQHBhcmFtIGZpZWxkcyBUaGUgZmllbGRzIHRvIGJpbmQgdGhlIHdoZXJlIGNsYXVzZVxyXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgdG8gbWF0Y2ggaW4gdGhlIHdoZXJlIGNsYXVzZVxyXG4gICAqIEBwYXJhbSBmaWVsZE5hbWUgVGhlIGZpZWxkIG5hbWUgdG8gbWF0Y2ggaW4gdGhlIHdoZXJlIGNsYXVzZVxyXG4gICAqIEBwYXJhbSBjcnVkVGFibGVOYW1lIFRoZSBDUlVEIHRhYmxlIG5hbWUgZm9yIHRoZSB3aGVyZSBjbGF1c2VcclxuICAgKiBAcmV0dXJucyBUaGUgYm91bmQgd2hlcmUgY2xhdXNlIGZvciBkZWxldGUgb3BlcmF0aW9uXHJcbiAgICovXHJcbiAgYmluZFdoZXJlQ2xhdXNlRm9yRGVsZXRlKFxyXG4gICAgZmllbGRzOiBhbnksXHJcbiAgICB2YWx1ZTogYW55LFxyXG4gICAgZmllbGROYW1lOiBzdHJpbmcsXHJcbiAgICBjcnVkVGFibGVOYW1lOiBzdHJpbmdcclxuICApIHtcclxuICAgIGNvbnN0IGFwcG9iaiA9IHRoaXMubWV0YWRhdGFIZWxwZXIuZ2V0QWxsQXBwT2JqZWN0cyhvYmogPT4gb2JqLlN5c3RlbURCVGFibGVOYW1lID09PSBjcnVkVGFibGVOYW1lKVswXTtcclxuICAgIGlmIChhcHBvYmogJiYgYXBwb2JqLkNSVURBcHBPYmplY3RJZCAhPT0gbnVsbCkge1xyXG4gICAgICBjb25zdCBjcnVkQXBwT2JqID0gdGhpcy5tZXRhZGF0YUhlbHBlci5nZXRBcHBPYmplY3RCeUlkT3JOYW1lKGFwcG9iai5DUlVEQXBwT2JqZWN0SWQpO1xyXG4gICAgICBpZiAoY3J1ZEFwcE9iaikge1xyXG4gICAgICAgIGNydWRUYWJsZU5hbWUgPSBjcnVkQXBwT2JqLlN5c3RlbURCVGFibGVOYW1lO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5iaW5kV2hlcmVDbGF1c2UoZmllbGRzLCB2YWx1ZSwgZmllbGROYW1lLCBjcnVkVGFibGVOYW1lKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEJpbmRzIHRoZSB3aGVyZSBjbGF1c2UgZm9yIGRlbGV0aW5nIHJlY29yZHMgd2l0aCBtdWx0aXBsZSBwcmltYXJ5IGtleXNcclxuICAgKiBAcGFyYW0gZGF0YSBUaGUgZGF0YSBjb250YWluaW5nIHByaW1hcnkga2V5IHZhbHVlc1xyXG4gICAqIEBwYXJhbSBmaWVsZE5hbWUgVGhlIGZpZWxkIG5hbWUgb2YgdGhlIHByaW1hcnkga2V5XHJcbiAgICogQHBhcmFtIGNydWRUYWJsZU5hbWUgVGhlIENSVUQgdGFibGUgbmFtZSBmb3IgdGhlIHdoZXJlIGNsYXVzZVxyXG4gICAqIEByZXR1cm5zIFRoZSBib3VuZCB3aGVyZSBjbGF1c2UgZm9yIGRlbGV0ZSBvcGVyYXRpb24gd2l0aCBtdWx0aXBsZSBwcmltYXJ5IGtleXNcclxuICAgKi9cclxuICBiaW5kV2hlcmVDbGF1c2VGb3JEZWxldGVXaXRoTXVsdGlwbGVQcmltYXJ5S2V5cyhcclxuICAgIGRhdGE6IGFueSxcclxuICAgIGZpZWxkTmFtZTogc3RyaW5nLFxyXG4gICAgY3J1ZFRhYmxlTmFtZTogc3RyaW5nXHJcbiAgKSB7XHJcbiAgICByZXR1cm4gdGhpcy5iaW5kV2hlcmVDbGF1c2VGb3JNdWx0aXBsZVByaW1hcnlLZXlzKFxyXG4gICAgICBkYXRhLFxyXG4gICAgICBmaWVsZE5hbWUsXHJcbiAgICAgIGNydWRUYWJsZU5hbWVcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBCaW5kcyB0aGUgd2hlcmUgY2xhdXNlIGZvciBhbiBpbnNlcnQgb3BlcmF0aW9uXHJcbiAgICogQHJldHVybnMgVGhlIGJvdW5kIHdoZXJlIGNsYXVzZSBmb3IgaW5zZXJ0IG9wZXJhdGlvblxyXG4gICAqL1xyXG4gIGJpbmRXaGVyZUNsYXVzZUZvckluc2VydCgpIHtcclxuICAgIHJldHVybiB0aGlzLmJpbmRXaGVyZUNsYXVzZUVtcHR5KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBCaW5kcyBhbiBlbXB0eSB3aGVyZSBjbGF1c2VcclxuICAgKiBAcmV0dXJucyBUaGUgYm91bmQgZW1wdHkgd2hlcmUgY2xhdXNlXHJcbiAgICovXHJcbiAgYmluZFdoZXJlQ2xhdXNlRW1wdHkoKSB7XHJcbiAgICBjb25zdCB3aGVyZUNsYXVzZSA9IG5ldyBBUElGaWx0ZXJDcml0ZXJpYSgpO1xyXG4gICAgd2hlcmVDbGF1c2UuZmlsdGVyTG9naWMgPSAnMSc7XHJcbiAgICB3aGVyZUNsYXVzZS5maWx0ZXJzID0gW107XHJcbiAgICByZXR1cm4gd2hlcmVDbGF1c2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBCaW5kcyB0aGUgd2hlcmUgY2xhdXNlIGJhc2VkIG9uIHByb3ZpZGVkIHBhcmFtZXRlcnNcclxuICAgKiBAcGFyYW0gZmllbGRzIFRoZSBmaWVsZHMgdG8gYmluZCB0aGUgd2hlcmUgY2xhdXNlXHJcbiAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byBtYXRjaCBpbiB0aGUgd2hlcmUgY2xhdXNlXHJcbiAgICogQHBhcmFtIGZpZWxkTmFtZSBUaGUgZmllbGQgbmFtZSB0byBtYXRjaCBpbiB0aGUgd2hlcmUgY2xhdXNlXHJcbiAgICogQHBhcmFtIGNydWRUYWJsZU5hbWUgVGhlIENSVUQgdGFibGUgbmFtZSBmb3IgdGhlIHdoZXJlIGNsYXVzZVxyXG4gICAqIEByZXR1cm5zIFRoZSBib3VuZCB3aGVyZSBjbGF1c2VcclxuICAgKi9cclxuICBwcml2YXRlIGJpbmRXaGVyZUNsYXVzZShcclxuICAgIGZpZWxkczogYW55W10sXHJcbiAgICB2YWx1ZTogYW55LFxyXG4gICAgZmllbGROYW1lOiBzdHJpbmcsXHJcbiAgICBjcnVkVGFibGVOYW1lOiBzdHJpbmdcclxuICApOiBBUElGaWx0ZXJDcml0ZXJpYSB7XHJcbiAgICBjb25zdCBmaWx0ZXJlZEZpZWxkcyA9IGZpZWxkcy5maWx0ZXIoKGY6IGFueSkgPT5cclxuICAgICAgZmllbGROYW1lXHJcbiAgICAgICAgPyBmLkZpZWxkPy5GaWVsZE5hbWUgPT09IGZpZWxkTmFtZVxyXG4gICAgICAgIDogZi5GaWVsZD8uRmllbGROYW1lID09PSAnSWQnIHx8IGYuRmllbGQ/LkZpZWxkTmFtZSA9PT0gJ0lEJ1xyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCBmaWx0ZXJzID0gZmlsdGVyZWRGaWVsZHMubWFwKChmaWVsZDogYW55LCBpbmRleDogbnVtYmVyKSA9PiAoe1xyXG4gICAgICBjb25qdW5jdGlvbjogQ29uanVjdGlvbkNsYXVzZS5BTkQsXHJcbiAgICAgIGZpZWxkTmFtZTogY3J1ZFRhYmxlTmFtZSArICcuJyArIGZpZWxkLkZpZWxkLkZpZWxkTmFtZSxcclxuICAgICAgb3BlcmF0b3I6IFJlbGF0aW9uYWxPcGVyYXRvci5FcXVhbFRvLFxyXG4gICAgICB2YWx1ZVR5cGU6IEZpbHRlclZhbHVlVHlwZS5MaXRlcmFsLFxyXG4gICAgICB2YWx1ZTogdmFsdWUsXHJcbiAgICAgIHNlcXVlbmNlOiBpbmRleCArIDEsXHJcbiAgICAgIGdyb3VwSWQ6IDAsXHJcbiAgICB9KSk7XHJcblxyXG4gICAgY29uc3Qgd2hlcmVDbGF1c2UgPSBuZXcgQVBJRmlsdGVyQ3JpdGVyaWEoKTtcclxuICAgIHdoZXJlQ2xhdXNlLmZpbHRlcnMgPSBmaWx0ZXJzO1xyXG4gICAgd2hlcmVDbGF1c2UuZmlsdGVyTG9naWMgPSAnMSc7XHJcblxyXG4gICAgcmV0dXJuIHdoZXJlQ2xhdXNlO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIEJpbmRzIHRoZSB3aGVyZSBjbGF1c2UgZm9yIGRlbGV0aW5nIHJlY29yZHMgd2l0aCBtdWx0aXBsZSBwcmltYXJ5IGtleXNcclxuICAgKiBAcGFyYW0gZGF0YSBUaGUgZGF0YSBjb250YWluaW5nIHByaW1hcnkga2V5IHZhbHVlc1xyXG4gICAqIEBwYXJhbSBwcmltYXJ5S2V5cyBUaGUgYXJyYXkgb2YgcHJpbWFyeSBrZXkgZmllbGRzXHJcbiAgICogQHBhcmFtIGNydWRUYWJsZU5hbWUgVGhlIENSVUQgdGFibGUgbmFtZSBmb3IgdGhlIHdoZXJlIGNsYXVzZVxyXG4gICAqIEByZXR1cm5zIFRoZSBib3VuZCB3aGVyZSBjbGF1c2UgZm9yIGRlbGV0ZSBvcGVyYXRpb24gd2l0aCBtdWx0aXBsZSBwcmltYXJ5IGtleXNcclxuICAgKi9cclxuICBiaW5kV2hlcmVDbGF1c2VGb3JNdWx0aXBsZVByaW1hcnlLZXlzKFxyXG4gICAgZGF0YTogYW55LFxyXG4gICAgcHJpbWFyeUtleXM6IGFueSxcclxuICAgIGNydWRUYWJsZU5hbWU6IHN0cmluZ1xyXG4gICkge1xyXG4gICAgY29uc3Qgd2hlcmVDbGF1c2UgPSBuZXcgQVBJRmlsdGVyQ3JpdGVyaWEoKTtcclxuICAgIHdoZXJlQ2xhdXNlLmZpbHRlcnMgPSBbXTtcclxuICAgIGlmIChwcmltYXJ5S2V5cyAmJiBwcmltYXJ5S2V5cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHByaW1hcnlLZXlzLmZvckVhY2goKGVsZW1lbnQ6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgIGNvbnN0IHZhbHVlID0gZGF0YVtlbGVtZW50LkZpZWxkTmFtZV07XHJcbiAgICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgICBjb25zdCBmaWx0ZXI6IGFueSA9IHtcclxuICAgICAgICAgICAgY29uanVuY3Rpb246IENvbmp1Y3Rpb25DbGF1c2UuQU5ELFxyXG4gICAgICAgICAgICBmaWVsZE5hbWU6IGNydWRUYWJsZU5hbWUgKyAnLicgKyBlbGVtZW50LkZpZWxkTmFtZSxcclxuICAgICAgICAgICAgb3BlcmF0b3I6IFJlbGF0aW9uYWxPcGVyYXRvci5FcXVhbFRvLFxyXG4gICAgICAgICAgICB2YWx1ZVR5cGU6IEZpbHRlclZhbHVlVHlwZS5MaXRlcmFsLFxyXG4gICAgICAgICAgICB2YWx1ZTogdmFsdWUsXHJcbiAgICAgICAgICAgIHNlcXVlbmNlOiBpbmRleCArIDEsXHJcbiAgICAgICAgICAgIGdyb3VwSWQ6IDAsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgd2hlcmVDbGF1c2UuZmlsdGVycy5wdXNoKGZpbHRlcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHdoZXJlQ2xhdXNlLmZpbHRlckxvZ2ljID0gJzEnO1xyXG4gICAgcmV0dXJuIHdoZXJlQ2xhdXNlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQmluZHMgdGhlIHdoZXJlIGNsYXVzZSBmb3IgdXBkYXRpbmcgcmVjb3Jkc1xyXG4gICAqIEBwYXJhbSB0YWJsZU5hbWUgVGhlIG5hbWUgb2YgdGhlIHRhYmxlIHRvIHVwZGF0ZVxyXG4gICAqIEBwYXJhbSBxdWVyeUZpZWxkc0FycmF5IFRoZSBhcnJheSBvZiBmaWVsZHMgYW5kIHZhbHVlcyBmb3IgdGhlIHVwZGF0ZSBxdWVyeVxyXG4gICAqIEByZXR1cm5zIFRoZSBib3VuZCB3aGVyZSBjbGF1c2UgZm9yIHVwZGF0ZSBvcGVyYXRpb25cclxuICAgKi9cclxuICBiaW5kV2hlcmVDbGF1c2VGb3JVcGRhdGUodGFibGVOYW1lOiBzdHJpbmcsIHF1ZXJ5RmllbGRzQXJyYXk6IGFueSkge1xyXG4gICAgY29uc3Qgd2hlcmVDbGF1c2UgPSBuZXcgQVBJRmlsdGVyQ3JpdGVyaWEoKTtcclxuICAgIHdoZXJlQ2xhdXNlLmZpbHRlcnMgPSBbXTtcclxuICAgIGlmIChxdWVyeUZpZWxkc0FycmF5Lmxlbmd0aCkge1xyXG4gICAgICBxdWVyeUZpZWxkc0FycmF5LmZvckVhY2goKGVsZW1lbnQ6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgIGNvbnN0IGZpbHRlcjogYW55ID0ge1xyXG4gICAgICAgICAgY29uanVuY3Rpb246IENvbmp1Y3Rpb25DbGF1c2UuQU5ELFxyXG4gICAgICAgICAgZmllbGROYW1lOiB0YWJsZU5hbWUgKyAnLicgKyBlbGVtZW50LkZpZWxkTmFtZSxcclxuICAgICAgICAgIG9wZXJhdG9yOiBSZWxhdGlvbmFsT3BlcmF0b3IuRXF1YWxUbyxcclxuICAgICAgICAgIHZhbHVlVHlwZTogRmlsdGVyVmFsdWVUeXBlLkxpdGVyYWwsXHJcbiAgICAgICAgICB2YWx1ZTogZWxlbWVudC5GaWVsZFZhbHVlLFxyXG4gICAgICAgICAgc2VxdWVuY2U6IGluZGV4ICsgMSxcclxuICAgICAgICAgIGdyb3VwSWQ6IDAsXHJcbiAgICAgICAgfTtcclxuICAgICAgICB3aGVyZUNsYXVzZS5maWx0ZXJzLnB1c2goZmlsdGVyKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB3aGVyZUNsYXVzZS5maWx0ZXJMb2dpYyA9ICcxJztcclxuICAgIHJldHVybiB3aGVyZUNsYXVzZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEJpbmRzIHRoZSB3aGVyZSBjbGF1c2UgZm9yIGRlbGV0aW5nIHJlY29yZHMgYnkgdGFibGUgYW5kIHByaW1hcnkga2V5XHJcbiAgICogQHBhcmFtIHRhYmxlTmFtZSBUaGUgbmFtZSBvZiB0aGUgdGFibGUgZnJvbSB3aGljaCB0byBkZWxldGUgcmVjb3Jkc1xyXG4gICAqIEBwYXJhbSBwcmltYXJ5S2V5IFRoZSBuYW1lIG9mIHRoZSBwcmltYXJ5IGtleSBmaWVsZFxyXG4gICAqIEBwYXJhbSBwcmltYXJ5S2V5VmFsdWUgVGhlIHZhbHVlIG9mIHRoZSBwcmltYXJ5IGtleVxyXG4gICAqIEByZXR1cm5zIFRoZSBib3VuZCB3aGVyZSBjbGF1c2UgZm9yIGRlbGV0ZSBvcGVyYXRpb24gdXNpbmcgdGFibGUgYW5kIHByaW1hcnkga2V5XHJcbiAgICovXHJcbiAgYmluZFdoZXJlQ2xhdXNlRm9yRGVsZXRlQnlUYWJsZShcclxuICAgIHRhYmxlTmFtZTogc3RyaW5nLFxyXG4gICAgcHJpbWFyeUtleTogc3RyaW5nLFxyXG4gICAgcHJpbWFyeUtleVZhbHVlOiBzdHJpbmdcclxuICApIHtcclxuICAgIGNvbnN0IHdoZXJlQ2xhdXNlID0gbmV3IEFQSUZpbHRlckNyaXRlcmlhKCk7XHJcbiAgICB3aGVyZUNsYXVzZS5maWx0ZXJzID0gW107XHJcbiAgICBjb25zdCBmaWx0ZXI6IGFueSA9IHtcclxuICAgICAgY29uanVuY3Rpb246IENvbmp1Y3Rpb25DbGF1c2UuQU5ELFxyXG4gICAgICBmaWVsZE5hbWU6IHRhYmxlTmFtZSArICcuJyArIHByaW1hcnlLZXksXHJcbiAgICAgIG9wZXJhdG9yOiBSZWxhdGlvbmFsT3BlcmF0b3IuRXF1YWxUbyxcclxuICAgICAgdmFsdWVUeXBlOiBGaWx0ZXJWYWx1ZVR5cGUuTGl0ZXJhbCxcclxuICAgICAgdmFsdWU6IHByaW1hcnlLZXlWYWx1ZSxcclxuICAgICAgc2VxdWVuY2U6IDEsXHJcbiAgICAgIGdyb3VwSWQ6IDAsXHJcbiAgICB9O1xyXG4gICAgd2hlcmVDbGF1c2UuZmlsdGVycy5wdXNoKGZpbHRlcik7XHJcbiAgICB3aGVyZUNsYXVzZS5maWx0ZXJMb2dpYyA9ICcxJztcclxuICAgIHJldHVybiB3aGVyZUNsYXVzZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEJpbmRzIHRoZSB3aGVyZSBjbGF1c2UgZm9yIGRlbGV0aW5nIHJlY29yZHMgdXNpbmcgSU4gb3BlcmF0b3IgYnkgdGFibGVcclxuICAgKiBAcGFyYW0gdGFibGVOYW1lIFRoZSBuYW1lIG9mIHRoZSB0YWJsZSBmcm9tIHdoaWNoIHRvIGRlbGV0ZSByZWNvcmRzXHJcbiAgICogQHBhcmFtIHByaW1hcnlLZXkgVGhlIG5hbWUgb2YgdGhlIHByaW1hcnkga2V5IGZpZWxkXHJcbiAgICogQHBhcmFtIHZhbHVlcyBUaGUgYXJyYXkgb2YgdmFsdWVzIGZvciB0aGUgSU4gb3BlcmF0b3JcclxuICAgKiBAcmV0dXJucyBUaGUgYm91bmQgd2hlcmUgY2xhdXNlIGZvciBkZWxldGUgb3BlcmF0aW9uIHVzaW5nIElOIG9wZXJhdG9yIGFuZCB0YWJsZVxyXG4gICAqL1xyXG4gIGJpbmRXaGVyZUNsYXVzZUZvckRlbGV0ZVVzaW5nSW5PcGVyYXRvckJ5VGFibGUoXHJcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcclxuICAgIHByaW1hcnlLZXk6IHN0cmluZyxcclxuICAgIHZhbHVlczogW11cclxuICApIHtcclxuICAgIGNvbnN0IGFwcG9iaiA9IHRoaXMubWV0YWRhdGFIZWxwZXIuZ2V0QWxsQXBwT2JqZWN0cyhvYmogPT4gb2JqLlN5c3RlbURCVGFibGVOYW1lID09PSB0YWJsZU5hbWUpWzBdO1xyXG4gICAgaWYgKGFwcG9iaj8uQ1JVREFwcE9iamVjdElkICE9PSBudWxsKSB7XHJcbiAgICAgIGNvbnN0IGNydWRBcHBPYmogPSB0aGlzLm1ldGFkYXRhSGVscGVyLmdldEFwcE9iamVjdEJ5SWRPck5hbWUoYXBwb2JqLkNSVURBcHBPYmplY3RJZCB8fCAnJyk7XHJcbiAgICAgIGlmIChjcnVkQXBwT2JqKSB7XHJcbiAgICAgICAgdGFibGVOYW1lID0gY3J1ZEFwcE9iai5TeXN0ZW1EQlRhYmxlTmFtZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3Qgd2hlcmVDbGF1c2UgPSBuZXcgQVBJRmlsdGVyQ3JpdGVyaWEoKTtcclxuICAgIHdoZXJlQ2xhdXNlLmZpbHRlcnMgPSBbXTtcclxuICAgIGNvbnN0IGZpbHRlcjogYW55ID0ge1xyXG4gICAgICBjb25qdW5jdGlvbjogQ29uanVjdGlvbkNsYXVzZS5BTkQsXHJcbiAgICAgIGZpZWxkTmFtZTogdGFibGVOYW1lICsgJy4nICsgcHJpbWFyeUtleSxcclxuICAgICAgb3BlcmF0b3I6IFJlbGF0aW9uYWxPcGVyYXRvci5JTixcclxuICAgICAgdmFsdWVUeXBlOiBGaWx0ZXJWYWx1ZVR5cGUuTGl0ZXJhbCxcclxuICAgICAgdmFsdWU6IHZhbHVlcy5qb2luKCcsJyksXHJcbiAgICAgIHNlcXVlbmNlOiAxLFxyXG4gICAgICBncm91cElkOiAwLFxyXG4gICAgfTtcclxuICAgIHdoZXJlQ2xhdXNlLmZpbHRlcnMucHVzaChmaWx0ZXIpO1xyXG4gICAgd2hlcmVDbGF1c2UuZmlsdGVyTG9naWMgPSAnMSc7XHJcbiAgICByZXR1cm4gd2hlcmVDbGF1c2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBCaW5kcyB0aGUgd2hlcmUgY2xhdXNlIGZvciB1cGRhdGluZyByZWNvcmRzIGluIGEgZ3JpZFxyXG4gICAqIEBwYXJhbSBGaWVsZHMgVGhlIGZpZWxkcyB0byBiaW5kIHRoZSB3aGVyZSBjbGF1c2VcclxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIG1hdGNoIGluIHRoZSB3aGVyZSBjbGF1c2VcclxuICAgKiBAcGFyYW0gZmllbGROYW1lIFRoZSBmaWVsZCBuYW1lIHRvIG1hdGNoIGluIHRoZSB3aGVyZSBjbGF1c2VcclxuICAgKiBAcGFyYW0gY3J1ZFRhYmxlTmFtZSBUaGUgQ1JVRCB0YWJsZSBuYW1lIGZvciB0aGUgd2hlcmUgY2xhdXNlXHJcbiAgICogQHJldHVybnMgVGhlIGJvdW5kIHdoZXJlIGNsYXVzZSBmb3IgdXBkYXRlIG9wZXJhdGlvbiBpbiBhIGdyaWRcclxuICAgKi9cclxuICBiaW5kV2hlcmVDbGF1c2VGb3JVcGRhdGVHcmlkKFxyXG4gICAgRmllbGRzOiBhbnksXHJcbiAgICB2YWx1ZTogYW55LFxyXG4gICAgZmllbGROYW1lOiBzdHJpbmcsXHJcbiAgICBjcnVkVGFibGVOYW1lOiBzdHJpbmdcclxuICApIHtcclxuICAgIHJldHVybiB0aGlzLmJpbmRXaGVyZUNsYXVzZShGaWVsZHMsIHZhbHVlLCBmaWVsZE5hbWUsIGNydWRUYWJsZU5hbWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQmluZHMgdGhlIHdoZXJlIGNsYXVzZSBmb3IgdXBkYXRpbmcgcmVjb3JkcyB1c2luZyBmaWx0ZXJzXHJcbiAgICogQHBhcmFtIHRhYmxlTmFtZSBUaGUgbmFtZSBvZiB0aGUgdGFibGUgdG8gdXBkYXRlXHJcbiAgICogQHBhcmFtIGZpbHRlcnMgVGhlIGFycmF5IG9mIGZpbHRlcnMgZm9yIHRoZSB1cGRhdGUgcXVlcnlcclxuICAgKiBAcGFyYW0gZmllbGRzIFRoZSBhcnJheSBvZiBmaWVsZHMgZnJvbSB0aGUgYXBwIG9iamVjdCB0byBtYXAgd2l0aCBmaWVsZCBJRCAtIHVzZWQgaW4gcmVwbGFjaW5nIElEIFdpdGggbmFtZVxyXG4gICAqIEByZXR1cm5zIFRoZSBib3VuZCB3aGVyZSBjbGF1c2UgZm9yIHVwZGF0ZSBvcGVyYXRpb25cclxuICAgKi9cclxuICBiaW5kV2hlcmVDbGF1c2VGb3JVcGRhdGVVc2luZ0ZpbHRlcnMoXHJcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcclxuICAgIGZpbHRlcnM6IGFueSxcclxuICAgIGZpZWxkczogYW55W11cclxuICApIHtcclxuICAgIGNvbnN0IHdoZXJlQ2xhdXNlID0gbmV3IEFQSUZpbHRlckNyaXRlcmlhKCk7XHJcbiAgICB3aGVyZUNsYXVzZS5maWx0ZXJzID0gW107XHJcbiAgICBpZiAoZmlsdGVycy5sZW5ndGgpIHtcclxuICAgICAgZmlsdGVycy5mb3JFYWNoKChlbGVtZW50OiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICBjb25zdCBmaWVsZCA9IGZpZWxkcy5maW5kKChmKSA9PiBmLklEID09PSBlbGVtZW50LkZpZWxkSUQpIHx8IHt9O1xyXG5cclxuICAgICAgICBjb25zdCBmaWx0ZXIgPSB7XHJcbiAgICAgICAgICBjb25qdW5jdGlvbjogZWxlbWVudC5Db25qdWN0aW9uQ2xhdXNlLFxyXG4gICAgICAgICAgZmllbGROYW1lOiB0YWJsZU5hbWUgKyAnLicgKyBmaWVsZC5GaWVsZE5hbWUsXHJcbiAgICAgICAgICBvcGVyYXRvcjogZWxlbWVudC5SZWxhdGlvbmFsT3BlcmF0b3IsXHJcbiAgICAgICAgICB2YWx1ZVR5cGU6IGVsZW1lbnQuVmFsdWVUeXBlLFxyXG4gICAgICAgICAgdmFsdWU6IGVsZW1lbnQuVmFsdWUsXHJcbiAgICAgICAgICBzZXF1ZW5jZTogZWxlbWVudC5TZXF1ZW5jZSB8fCBpbmRleCArIDEsXHJcbiAgICAgICAgICBncm91cElkOiBlbGVtZW50Lkdyb3VwSUQsXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgd2hlcmVDbGF1c2UuZmlsdGVycy5wdXNoKGZpbHRlcik7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHdoZXJlQ2xhdXNlLmZpbHRlckxvZ2ljID0gJzEnO1xyXG4gICAgcmV0dXJuIHdoZXJlQ2xhdXNlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQmluZHMgdGhlIHdoZXJlIGNsYXVzZSBmb3IgZGVsZXRpbmcgcmVjb3JkcyB1c2luZyBhIHNldCBvZiBrZXkgdmFsdWUgcGFpcnNcclxuICAgKiBAcGFyYW0gdGFibGVOYW1lIFRoZSBuYW1lIG9mIHRoZSB0YWJsZSBmcm9tIHdoaWNoIHRvIGRlbGV0ZSByZWNvcmRzXHJcbiAgICogQHBhcmFtIGtleVZhbHVlUGFpcnMgVGhlIGFycmF5IG9mIGtleSB2YWx1ZSBwYWlycyB0byB1c2UgaW4gdGhlIGRlbGV0ZSB3aGVyZSBjbGF1c2VcclxuICAgKiBAcmV0dXJucyBUaGUgYm91bmQgd2hlcmUgY2xhdXNlIGZvciBkZWxldGUgb3BlcmF0aW9uIHVzaW5nIGtleSB2YWx1ZSBwYWlyc1xyXG4gICAqL1xyXG4gIGJpbmRXaGVyZUNsYXVzZUZvckR5bmFtaWNEZWxldGUoXHJcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcclxuICAgIGtleVZhbHVlUGFpcnM6IGFueVtdXHJcbiAgKTogQVBJRmlsdGVyQ3JpdGVyaWEge1xyXG4gICAgY29uc3Qgd2hlcmVDbGF1c2UgPSBuZXcgQVBJRmlsdGVyQ3JpdGVyaWEoKTtcclxuICAgIHdoZXJlQ2xhdXNlLmZpbHRlcnMgPSBbXTtcclxuXHJcbiAgICAvLyBMb29wIHRocm91Z2ggdGhlIGtleSB2YWx1ZSBwYWlycyBhbmQgYWRkIHRoZW0gdG8gdGhlIHdoZXJlIGNsYXVzZVxyXG4gICAgLy8gVGhlIGNvbmp1Y3Rpb24gY2xhdXNlIGlzIEFORCBmb3IgYWxsIGl0ZW1zXHJcbiAgICBrZXlWYWx1ZVBhaXJzLmZvckVhY2goKHBhaXIsIGluZGV4KSA9PiB7XHJcbiAgICAgIGNvbnN0IGZpbHRlciA9IHtcclxuICAgICAgICBjb25qdW5jdGlvbjogaW5kZXggPT09IDAgPyBDb25qdWN0aW9uQ2xhdXNlLkFORCA6IENvbmp1Y3Rpb25DbGF1c2UuQU5ELFxyXG4gICAgICAgIGZpZWxkTmFtZTogdGFibGVOYW1lICsgJy4nICsgcGFpci5rZXksXHJcbiAgICAgICAgb3BlcmF0b3I6IFJlbGF0aW9uYWxPcGVyYXRvci5FcXVhbFRvLFxyXG4gICAgICAgIHZhbHVlVHlwZTogRmlsdGVyVmFsdWVUeXBlLkxpdGVyYWwsXHJcbiAgICAgICAgdmFsdWU6IHBhaXIudmFsdWUsXHJcbiAgICAgICAgc2VxdWVuY2U6IGluZGV4ICsgMSxcclxuICAgICAgICBncm91cElkOiAwXHJcbiAgICAgIH07XHJcbiAgICAgIHdoZXJlQ2xhdXNlLmZpbHRlcnMucHVzaChmaWx0ZXIpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gVGhlIGZpbHRlciBsb2dpYyBpcyBhbHdheXMgJzEnIGZvciBkeW5hbWljIGRlbGV0ZVxyXG4gICAgd2hlcmVDbGF1c2UuZmlsdGVyTG9naWMgPSAnMSc7XHJcbiAgICByZXR1cm4gd2hlcmVDbGF1c2U7XHJcbiAgfVxyXG59XHJcbiJdfQ==
261
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2hlcmUtY2xhdXNlLmhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL3NyYy9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvaGVscGVycy9jb21tb24vd2hlcmUtY2xhdXNlLmhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBRXZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsZUFBZSxHQUNoQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2pFLE9BQU8sRUFDTCxpQ0FBaUMsRUFDakMsWUFBWSxHQUNiLE1BQU0sMEJBQTBCLENBQUM7O0FBR2xDLE1BQU0sT0FBTyxpQkFBaUI7SUFDNUI7Ozs7Ozs7T0FPRztJQUNILHdCQUF3QixDQUN0QixNQUFXLEVBQ1gsS0FBVSxFQUNWLFNBQWlCLEVBQ2pCLGFBQXFCO1FBRXJCLE1BQU0sTUFBTSxHQUFHLGlDQUFpQyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2hFLElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxlQUFlLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDOUMsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUN4RCxJQUFJLFVBQVUsRUFBRSxDQUFDO2dCQUNmLGFBQWEsR0FBRyxVQUFVLENBQUMsaUJBQWlCLENBQUM7WUFDL0MsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILCtDQUErQyxDQUM3QyxJQUFTLEVBQ1QsU0FBaUIsRUFDakIsYUFBcUI7UUFFckIsT0FBTyxJQUFJLENBQUMscUNBQXFDLENBQy9DLElBQUksRUFDSixTQUFTLEVBQ1QsYUFBYSxDQUNkLENBQUM7SUFDSixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsd0JBQXdCO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVEOzs7T0FHRztJQUNILG9CQUFvQjtRQUNsQixNQUFNLFdBQVcsR0FBRyxJQUFJLGlCQUFpQixFQUFFLENBQUM7UUFDNUMsV0FBVyxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUM7UUFDOUIsV0FBVyxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDekIsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSyxlQUFlLENBQ3JCLE1BQWEsRUFDYixLQUFVLEVBQ1YsU0FBaUIsRUFDakIsYUFBcUI7UUFFckIsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQzlDLFNBQVM7WUFDUCxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxTQUFTLEtBQUssU0FBUztZQUNsQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxTQUFTLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxLQUFLLElBQUksQ0FDL0QsQ0FBQztRQUVGLE1BQU0sT0FBTyxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDbEQsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUMsR0FBRztZQUN0QyxPQUFPLEVBQUUsYUFBYSxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLGlCQUFpQjtZQUM1RCxrQkFBa0IsRUFBRSxrQkFBa0IsQ0FBQyxPQUFPO1lBQzlDLFNBQVMsRUFBRSxlQUFlLENBQUMsT0FBTztZQUNsQyxLQUFLLEVBQUUsS0FBSztZQUNaLFFBQVEsRUFBRSxDQUFDO1lBQ1gsT0FBTyxFQUFFLENBQUM7U0FDWCxDQUFDLENBQUMsQ0FBQztRQUVKLE1BQU0sV0FBVyxHQUFHLElBQUksaUJBQWlCLEVBQUUsQ0FBQztRQUM1QyxXQUFXLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUM5QixXQUFXLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQztRQUU5QixPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBR0Q7Ozs7OztPQU1HO0lBQ0gscUNBQXFDLENBQ25DLElBQVMsRUFDVCxXQUFnQixFQUNoQixhQUFxQjtRQUVyQixNQUFNLFdBQVcsR0FBRyxJQUFJLGlCQUFpQixFQUFFLENBQUM7UUFDNUMsV0FBVyxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDekIsSUFBSSxXQUFXLElBQUksV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMxQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBWSxFQUFFLEVBQUU7Z0JBQ25DLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ3RDLElBQUksS0FBSyxFQUFFLENBQUM7b0JBQ1YsTUFBTSxNQUFNLEdBQVE7d0JBQ2xCLGdCQUFnQixFQUFFLGdCQUFnQixDQUFDLEdBQUc7d0JBQ3RDLE9BQU8sRUFBRSxhQUFhLEdBQUcsR0FBRyxHQUFHLE9BQU8sQ0FBQyxpQkFBaUI7d0JBQ3hELGtCQUFrQixFQUFFLGtCQUFrQixDQUFDLE9BQU87d0JBQzlDLFNBQVMsRUFBRSxlQUFlLENBQUMsT0FBTzt3QkFDbEMsS0FBSyxFQUFFLEtBQUs7d0JBQ1osUUFBUSxFQUFFLENBQUM7d0JBQ1gsT0FBTyxFQUFFLENBQUM7cUJBQ1gsQ0FBQztvQkFDRixXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDbkMsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUNELFdBQVcsQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDO1FBQzlCLE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILHdCQUF3QixDQUFDLFNBQWlCLEVBQUUsZ0JBQXFCO1FBQy9ELE1BQU0sV0FBVyxHQUFHLElBQUksaUJBQWlCLEVBQUUsQ0FBQztRQUM1QyxXQUFXLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUN6QixJQUFJLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzVCLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQVksRUFBRSxFQUFFO2dCQUN4QyxNQUFNLE1BQU0sR0FBUTtvQkFDbEIsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUMsR0FBRztvQkFDdEMsT0FBTyxFQUFFLFNBQVMsR0FBRyxHQUFHLEdBQUcsT0FBTyxDQUFDLFNBQVM7b0JBQzVDLGtCQUFrQixFQUFFLGtCQUFrQixDQUFDLE9BQU87b0JBQzlDLFNBQVMsRUFBRSxlQUFlLENBQUMsT0FBTztvQkFDbEMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxVQUFVO29CQUN6QixRQUFRLEVBQUUsQ0FBQztvQkFDWCxPQUFPLEVBQUUsQ0FBQztpQkFDWCxDQUFDO2dCQUNGLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ25DLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUNELFdBQVcsQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDO1FBQzlCLE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCwrQkFBK0IsQ0FDN0IsU0FBaUIsRUFDakIsVUFBa0IsRUFDbEIsZUFBdUI7UUFFdkIsTUFBTSxXQUFXLEdBQUcsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1FBQzVDLFdBQVcsQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sTUFBTSxHQUFRO1lBQ2xCLGdCQUFnQixFQUFFLGdCQUFnQixDQUFDLEdBQUc7WUFDdEMsT0FBTyxFQUFFLFNBQVMsR0FBRyxHQUFHLEdBQUcsVUFBVTtZQUNyQyxrQkFBa0IsRUFBRSxrQkFBa0IsQ0FBQyxPQUFPO1lBQzlDLFNBQVMsRUFBRSxlQUFlLENBQUMsT0FBTztZQUNsQyxLQUFLLEVBQUUsZUFBZTtZQUN0QixRQUFRLEVBQUUsQ0FBQztZQUNYLE9BQU8sRUFBRSxDQUFDO1NBQ1gsQ0FBQztRQUNGLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pDLFdBQVcsQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDO1FBQzlCLE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCw4Q0FBOEMsQ0FDNUMsU0FBaUIsRUFDakIsVUFBa0IsRUFDbEIsTUFBVTtRQUVWLE1BQU0sTUFBTSxHQUFHLGlDQUFpQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzVELElBQUksTUFBTSxFQUFFLGVBQWUsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUNyQyxNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ3hELElBQUksVUFBVSxFQUFFLENBQUM7Z0JBQ2YsU0FBUyxHQUFHLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQztZQUMzQyxDQUFDO1FBQ0gsQ0FBQztRQUNELE1BQU0sV0FBVyxHQUFHLElBQUksaUJBQWlCLEVBQUUsQ0FBQztRQUM1QyxXQUFXLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUN6QixNQUFNLE1BQU0sR0FBUTtZQUNsQixnQkFBZ0IsRUFBRSxnQkFBZ0IsQ0FBQyxHQUFHO1lBQ3RDLE9BQU8sRUFBRSxTQUFTLEdBQUcsR0FBRyxHQUFHLFVBQVU7WUFDckMsa0JBQWtCLEVBQUUsa0JBQWtCLENBQUMsRUFBRTtZQUN6QyxTQUFTLEVBQUUsZUFBZSxDQUFDLE9BQU87WUFDbEMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO1lBQ3ZCLFFBQVEsRUFBRSxDQUFDO1lBQ1gsT0FBTyxFQUFFLENBQUM7U0FDWCxDQUFDO1FBQ0YsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDakMsV0FBVyxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUM7UUFDOUIsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCw0QkFBNEIsQ0FDMUIsTUFBVyxFQUNYLEtBQVUsRUFDVixTQUFpQixFQUNqQixhQUFxQjtRQUVyQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILG9DQUFvQyxDQUNsQyxTQUFpQixFQUNqQixPQUFZLEVBQ1osTUFBYTtRQUViLE1BQU0sV0FBVyxHQUFHLElBQUksaUJBQWlCLEVBQUUsQ0FBQztRQUM1QyxXQUFXLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUN6QixJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNuQixPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBWSxFQUFFLEVBQUU7Z0JBQy9CLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFFakUsTUFBTSxNQUFNLEdBQUc7b0JBQ2IsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLGdCQUFnQjtvQkFDMUMsT0FBTyxFQUFFLEdBQUcsU0FBUyxJQUFJLEtBQUssQ0FBQyxTQUFTLEVBQUU7b0JBQzFDLGtCQUFrQixFQUFFLE9BQU8sQ0FBQyxrQkFBa0I7b0JBQzlDLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUztvQkFDNUIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO29CQUNwQixRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVE7b0JBQzFCLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztpQkFDekIsQ0FBQztnQkFFRixXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNuQyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxXQUFXLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQztRQUM5QixPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCwrQkFBK0IsQ0FDN0IsU0FBaUIsRUFDakIsYUFBb0I7UUFFcEIsTUFBTSxXQUFXLEdBQUcsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1FBQzVDLFdBQVcsQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBRXpCLG9FQUFvRTtRQUNwRSxzRUFBc0U7UUFDdEUsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUNwQyxNQUFNLE1BQU0sR0FBRztnQkFDYixnQkFBZ0IsRUFBRSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLEdBQUc7Z0JBQzNFLE9BQU8sRUFBRSxHQUFHLFNBQVMsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUNuQyxrQkFBa0IsRUFBRSxrQkFBa0IsQ0FBQyxPQUFPO2dCQUM5QyxTQUFTLEVBQUUsZUFBZSxDQUFDLE9BQU87Z0JBQ2xDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztnQkFDakIsUUFBUSxFQUFFLEtBQUs7Z0JBQ2YsT0FBTyxFQUFFLENBQUM7YUFDWCxDQUFDO1lBQ0YsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbkMsQ0FBQyxDQUFDLENBQUM7UUFFSCxvREFBb0Q7UUFDcEQsV0FBVyxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUM7UUFDOUIsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztrRkF0VFUsaUJBQWlCO3VFQUFqQixpQkFBaUIsV0FBakIsaUJBQWlCLG1CQURKLE1BQU07O2lGQUNuQixpQkFBaUI7Y0FEN0IsVUFBVTtlQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cclxuXHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7XHJcbiAgQ29uanVjdGlvbkNsYXVzZSxcclxuICBSZWxhdGlvbmFsT3BlcmF0b3IsXHJcbiAgRmlsdGVyVmFsdWVUeXBlLFxyXG59IGZyb20gJy4uLy4uL2VudW1zL2RzcS5lbnVtJztcclxuaW1wb3J0IHsgQVBJRmlsdGVyQ3JpdGVyaWEgfSBmcm9tICcuLi8uLi9tb2RlbHMvYXBpLXF1ZXJ5LmNsYXNzJztcclxuaW1wb3J0IHtcclxuICBnZXRBcHBPYmplY3RGcm9tU3lzdGVtREJUYWJsZU5hbWUsXHJcbiAgZ2V0QXBwT2JqZWN0LFxyXG59IGZyb20gJy4uLy4uL3V0aWxzL3RhYi1hcHAudXRpbCc7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgV2hlcmVDbGF1c2VIZWxwZXIge1xyXG4gIC8qKlxyXG4gICAqIEJpbmRzIHRoZSB3aGVyZSBjbGF1c2UgZm9yIGRlbGV0aW5nIHJlY29yZHMgYmFzZWQgb24gZmllbGQsIHZhbHVlLCBmaWVsZCBuYW1lLCBhbmQgQ1JVRCB0YWJsZSBuYW1lXHJcbiAgICogQHBhcmFtIGZpZWxkcyBUaGUgZmllbGRzIHRvIGJpbmQgdGhlIHdoZXJlIGNsYXVzZVxyXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgdG8gbWF0Y2ggaW4gdGhlIHdoZXJlIGNsYXVzZVxyXG4gICAqIEBwYXJhbSBmaWVsZE5hbWUgVGhlIGZpZWxkIG5hbWUgdG8gbWF0Y2ggaW4gdGhlIHdoZXJlIGNsYXVzZVxyXG4gICAqIEBwYXJhbSBjcnVkVGFibGVOYW1lIFRoZSBDUlVEIHRhYmxlIG5hbWUgZm9yIHRoZSB3aGVyZSBjbGF1c2VcclxuICAgKiBAcmV0dXJucyBUaGUgYm91bmQgd2hlcmUgY2xhdXNlIGZvciBkZWxldGUgb3BlcmF0aW9uXHJcbiAgICovXHJcbiAgYmluZFdoZXJlQ2xhdXNlRm9yRGVsZXRlKFxyXG4gICAgZmllbGRzOiBhbnksXHJcbiAgICB2YWx1ZTogYW55LFxyXG4gICAgZmllbGROYW1lOiBzdHJpbmcsXHJcbiAgICBjcnVkVGFibGVOYW1lOiBzdHJpbmdcclxuICApIHtcclxuICAgIGNvbnN0IGFwcG9iaiA9IGdldEFwcE9iamVjdEZyb21TeXN0ZW1EQlRhYmxlTmFtZShjcnVkVGFibGVOYW1lKTtcclxuICAgIGlmIChhcHBvYmogJiYgYXBwb2JqLkNSVURBcHBPYmplY3RJZCAhPT0gbnVsbCkge1xyXG4gICAgICBjb25zdCBjcnVkQXBwT2JqID0gZ2V0QXBwT2JqZWN0KGFwcG9iai5DUlVEQXBwT2JqZWN0SWQpO1xyXG4gICAgICBpZiAoY3J1ZEFwcE9iaikge1xyXG4gICAgICAgIGNydWRUYWJsZU5hbWUgPSBjcnVkQXBwT2JqLlN5c3RlbURCVGFibGVOYW1lO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5iaW5kV2hlcmVDbGF1c2UoZmllbGRzLCB2YWx1ZSwgZmllbGROYW1lLCBjcnVkVGFibGVOYW1lKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEJpbmRzIHRoZSB3aGVyZSBjbGF1c2UgZm9yIGRlbGV0aW5nIHJlY29yZHMgd2l0aCBtdWx0aXBsZSBwcmltYXJ5IGtleXNcclxuICAgKiBAcGFyYW0gZGF0YSBUaGUgZGF0YSBjb250YWluaW5nIHByaW1hcnkga2V5IHZhbHVlc1xyXG4gICAqIEBwYXJhbSBmaWVsZE5hbWUgVGhlIGZpZWxkIG5hbWUgb2YgdGhlIHByaW1hcnkga2V5XHJcbiAgICogQHBhcmFtIGNydWRUYWJsZU5hbWUgVGhlIENSVUQgdGFibGUgbmFtZSBmb3IgdGhlIHdoZXJlIGNsYXVzZVxyXG4gICAqIEByZXR1cm5zIFRoZSBib3VuZCB3aGVyZSBjbGF1c2UgZm9yIGRlbGV0ZSBvcGVyYXRpb24gd2l0aCBtdWx0aXBsZSBwcmltYXJ5IGtleXNcclxuICAgKi9cclxuICBiaW5kV2hlcmVDbGF1c2VGb3JEZWxldGVXaXRoTXVsdGlwbGVQcmltYXJ5S2V5cyhcclxuICAgIGRhdGE6IGFueSxcclxuICAgIGZpZWxkTmFtZTogc3RyaW5nLFxyXG4gICAgY3J1ZFRhYmxlTmFtZTogc3RyaW5nXHJcbiAgKSB7XHJcbiAgICByZXR1cm4gdGhpcy5iaW5kV2hlcmVDbGF1c2VGb3JNdWx0aXBsZVByaW1hcnlLZXlzKFxyXG4gICAgICBkYXRhLFxyXG4gICAgICBmaWVsZE5hbWUsXHJcbiAgICAgIGNydWRUYWJsZU5hbWVcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBCaW5kcyB0aGUgd2hlcmUgY2xhdXNlIGZvciBhbiBpbnNlcnQgb3BlcmF0aW9uXHJcbiAgICogQHJldHVybnMgVGhlIGJvdW5kIHdoZXJlIGNsYXVzZSBmb3IgaW5zZXJ0IG9wZXJhdGlvblxyXG4gICAqL1xyXG4gIGJpbmRXaGVyZUNsYXVzZUZvckluc2VydCgpIHtcclxuICAgIHJldHVybiB0aGlzLmJpbmRXaGVyZUNsYXVzZUVtcHR5KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBCaW5kcyBhbiBlbXB0eSB3aGVyZSBjbGF1c2VcclxuICAgKiBAcmV0dXJucyBUaGUgYm91bmQgZW1wdHkgd2hlcmUgY2xhdXNlXHJcbiAgICovXHJcbiAgYmluZFdoZXJlQ2xhdXNlRW1wdHkoKSB7XHJcbiAgICBjb25zdCB3aGVyZUNsYXVzZSA9IG5ldyBBUElGaWx0ZXJDcml0ZXJpYSgpO1xyXG4gICAgd2hlcmVDbGF1c2UuRmlsdGVyTG9naWMgPSAnMSc7XHJcbiAgICB3aGVyZUNsYXVzZS5GaWx0ZXJzID0gW107XHJcbiAgICByZXR1cm4gd2hlcmVDbGF1c2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBCaW5kcyB0aGUgd2hlcmUgY2xhdXNlIGJhc2VkIG9uIHByb3ZpZGVkIHBhcmFtZXRlcnNcclxuICAgKiBAcGFyYW0gZmllbGRzIFRoZSBmaWVsZHMgdG8gYmluZCB0aGUgd2hlcmUgY2xhdXNlXHJcbiAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byBtYXRjaCBpbiB0aGUgd2hlcmUgY2xhdXNlXHJcbiAgICogQHBhcmFtIGZpZWxkTmFtZSBUaGUgZmllbGQgbmFtZSB0byBtYXRjaCBpbiB0aGUgd2hlcmUgY2xhdXNlXHJcbiAgICogQHBhcmFtIGNydWRUYWJsZU5hbWUgVGhlIENSVUQgdGFibGUgbmFtZSBmb3IgdGhlIHdoZXJlIGNsYXVzZVxyXG4gICAqIEByZXR1cm5zIFRoZSBib3VuZCB3aGVyZSBjbGF1c2VcclxuICAgKi9cclxuICBwcml2YXRlIGJpbmRXaGVyZUNsYXVzZShcclxuICAgIGZpZWxkczogYW55W10sXHJcbiAgICB2YWx1ZTogYW55LFxyXG4gICAgZmllbGROYW1lOiBzdHJpbmcsXHJcbiAgICBjcnVkVGFibGVOYW1lOiBzdHJpbmdcclxuICApOiBBUElGaWx0ZXJDcml0ZXJpYSB7XHJcbiAgICBjb25zdCBmaWx0ZXJlZEZpZWxkcyA9IGZpZWxkcy5maWx0ZXIoKGY6IGFueSkgPT5cclxuICAgICAgZmllbGROYW1lXHJcbiAgICAgICAgPyBmLkZpZWxkPy5GaWVsZE5hbWUgPT09IGZpZWxkTmFtZVxyXG4gICAgICAgIDogZi5GaWVsZD8uRmllbGROYW1lID09PSAnSWQnIHx8IGYuRmllbGQ/LkZpZWxkTmFtZSA9PT0gJ0lEJ1xyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCBmaWx0ZXJzID0gZmlsdGVyZWRGaWVsZHMubWFwKChmaWVsZDogYW55KSA9PiAoe1xyXG4gICAgICBDb25qdWN0aW9uQ2xhdXNlOiBDb25qdWN0aW9uQ2xhdXNlLkFORCxcclxuICAgICAgRmllbGRJRDogY3J1ZFRhYmxlTmFtZSArICcuJyArIGZpZWxkLkZpZWxkLlN5c3RlbURCRmllbGROYW1lLFxyXG4gICAgICBSZWxhdGlvbmFsT3BlcmF0b3I6IFJlbGF0aW9uYWxPcGVyYXRvci5FcXVhbFRvLFxyXG4gICAgICBWYWx1ZVR5cGU6IEZpbHRlclZhbHVlVHlwZS5MaXRlcmFsLFxyXG4gICAgICB2YWx1ZTogdmFsdWUsXHJcbiAgICAgIFNlcXVlbmNlOiAwLFxyXG4gICAgICBHcm91cElEOiAwLFxyXG4gICAgfSkpO1xyXG5cclxuICAgIGNvbnN0IHdoZXJlQ2xhdXNlID0gbmV3IEFQSUZpbHRlckNyaXRlcmlhKCk7XHJcbiAgICB3aGVyZUNsYXVzZS5GaWx0ZXJzID0gZmlsdGVycztcclxuICAgIHdoZXJlQ2xhdXNlLkZpbHRlckxvZ2ljID0gJzEnO1xyXG5cclxuICAgIHJldHVybiB3aGVyZUNsYXVzZTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBCaW5kcyB0aGUgd2hlcmUgY2xhdXNlIGZvciBkZWxldGluZyByZWNvcmRzIHdpdGggbXVsdGlwbGUgcHJpbWFyeSBrZXlzXHJcbiAgICogQHBhcmFtIGRhdGEgVGhlIGRhdGEgY29udGFpbmluZyBwcmltYXJ5IGtleSB2YWx1ZXNcclxuICAgKiBAcGFyYW0gcHJpbWFyeUtleXMgVGhlIGFycmF5IG9mIHByaW1hcnkga2V5IGZpZWxkc1xyXG4gICAqIEBwYXJhbSBjcnVkVGFibGVOYW1lIFRoZSBDUlVEIHRhYmxlIG5hbWUgZm9yIHRoZSB3aGVyZSBjbGF1c2VcclxuICAgKiBAcmV0dXJucyBUaGUgYm91bmQgd2hlcmUgY2xhdXNlIGZvciBkZWxldGUgb3BlcmF0aW9uIHdpdGggbXVsdGlwbGUgcHJpbWFyeSBrZXlzXHJcbiAgICovXHJcbiAgYmluZFdoZXJlQ2xhdXNlRm9yTXVsdGlwbGVQcmltYXJ5S2V5cyhcclxuICAgIGRhdGE6IGFueSxcclxuICAgIHByaW1hcnlLZXlzOiBhbnksXHJcbiAgICBjcnVkVGFibGVOYW1lOiBzdHJpbmdcclxuICApIHtcclxuICAgIGNvbnN0IHdoZXJlQ2xhdXNlID0gbmV3IEFQSUZpbHRlckNyaXRlcmlhKCk7XHJcbiAgICB3aGVyZUNsYXVzZS5GaWx0ZXJzID0gW107XHJcbiAgICBpZiAocHJpbWFyeUtleXMgJiYgcHJpbWFyeUtleXMubGVuZ3RoID4gMCkge1xyXG4gICAgICBwcmltYXJ5S2V5cy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCB2YWx1ZSA9IGRhdGFbZWxlbWVudC5GaWVsZE5hbWVdO1xyXG4gICAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgICAgY29uc3QgZmlsdGVyOiBhbnkgPSB7XHJcbiAgICAgICAgICAgIENvbmp1Y3Rpb25DbGF1c2U6IENvbmp1Y3Rpb25DbGF1c2UuQU5ELFxyXG4gICAgICAgICAgICBGaWVsZElEOiBjcnVkVGFibGVOYW1lICsgJy4nICsgZWxlbWVudC5TeXN0ZW1EQkZpZWxkTmFtZSxcclxuICAgICAgICAgICAgUmVsYXRpb25hbE9wZXJhdG9yOiBSZWxhdGlvbmFsT3BlcmF0b3IuRXF1YWxUbyxcclxuICAgICAgICAgICAgVmFsdWVUeXBlOiBGaWx0ZXJWYWx1ZVR5cGUuTGl0ZXJhbCxcclxuICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxyXG4gICAgICAgICAgICBTZXF1ZW5jZTogMCxcclxuICAgICAgICAgICAgR3JvdXBJRDogMCxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICB3aGVyZUNsYXVzZS5GaWx0ZXJzLnB1c2goZmlsdGVyKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgd2hlcmVDbGF1c2UuRmlsdGVyTG9naWMgPSAnMSc7XHJcbiAgICByZXR1cm4gd2hlcmVDbGF1c2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBCaW5kcyB0aGUgd2hlcmUgY2xhdXNlIGZvciB1cGRhdGluZyByZWNvcmRzXHJcbiAgICogQHBhcmFtIHRhYmxlTmFtZSBUaGUgbmFtZSBvZiB0aGUgdGFibGUgdG8gdXBkYXRlXHJcbiAgICogQHBhcmFtIHF1ZXJ5RmllbGRzQXJyYXkgVGhlIGFycmF5IG9mIGZpZWxkcyBhbmQgdmFsdWVzIGZvciB0aGUgdXBkYXRlIHF1ZXJ5XHJcbiAgICogQHJldHVybnMgVGhlIGJvdW5kIHdoZXJlIGNsYXVzZSBmb3IgdXBkYXRlIG9wZXJhdGlvblxyXG4gICAqL1xyXG4gIGJpbmRXaGVyZUNsYXVzZUZvclVwZGF0ZSh0YWJsZU5hbWU6IHN0cmluZywgcXVlcnlGaWVsZHNBcnJheTogYW55KSB7XHJcbiAgICBjb25zdCB3aGVyZUNsYXVzZSA9IG5ldyBBUElGaWx0ZXJDcml0ZXJpYSgpO1xyXG4gICAgd2hlcmVDbGF1c2UuRmlsdGVycyA9IFtdO1xyXG4gICAgaWYgKHF1ZXJ5RmllbGRzQXJyYXkubGVuZ3RoKSB7XHJcbiAgICAgIHF1ZXJ5RmllbGRzQXJyYXkuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgZmlsdGVyOiBhbnkgPSB7XHJcbiAgICAgICAgICBDb25qdWN0aW9uQ2xhdXNlOiBDb25qdWN0aW9uQ2xhdXNlLkFORCxcclxuICAgICAgICAgIEZpZWxkSUQ6IHRhYmxlTmFtZSArICcuJyArIGVsZW1lbnQuRmllbGROYW1lLFxyXG4gICAgICAgICAgUmVsYXRpb25hbE9wZXJhdG9yOiBSZWxhdGlvbmFsT3BlcmF0b3IuRXF1YWxUbyxcclxuICAgICAgICAgIFZhbHVlVHlwZTogRmlsdGVyVmFsdWVUeXBlLkxpdGVyYWwsXHJcbiAgICAgICAgICB2YWx1ZTogZWxlbWVudC5GaWVsZFZhbHVlLFxyXG4gICAgICAgICAgU2VxdWVuY2U6IDAsXHJcbiAgICAgICAgICBHcm91cElEOiAwLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgd2hlcmVDbGF1c2UuRmlsdGVycy5wdXNoKGZpbHRlcik7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgd2hlcmVDbGF1c2UuRmlsdGVyTG9naWMgPSAnMSc7XHJcbiAgICByZXR1cm4gd2hlcmVDbGF1c2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBCaW5kcyB0aGUgd2hlcmUgY2xhdXNlIGZvciBkZWxldGluZyByZWNvcmRzIGJ5IHRhYmxlIGFuZCBwcmltYXJ5IGtleVxyXG4gICAqIEBwYXJhbSB0YWJsZU5hbWUgVGhlIG5hbWUgb2YgdGhlIHRhYmxlIGZyb20gd2hpY2ggdG8gZGVsZXRlIHJlY29yZHNcclxuICAgKiBAcGFyYW0gcHJpbWFyeUtleSBUaGUgbmFtZSBvZiB0aGUgcHJpbWFyeSBrZXkgZmllbGRcclxuICAgKiBAcGFyYW0gcHJpbWFyeUtleVZhbHVlIFRoZSB2YWx1ZSBvZiB0aGUgcHJpbWFyeSBrZXlcclxuICAgKiBAcmV0dXJucyBUaGUgYm91bmQgd2hlcmUgY2xhdXNlIGZvciBkZWxldGUgb3BlcmF0aW9uIHVzaW5nIHRhYmxlIGFuZCBwcmltYXJ5IGtleVxyXG4gICAqL1xyXG4gIGJpbmRXaGVyZUNsYXVzZUZvckRlbGV0ZUJ5VGFibGUoXHJcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcclxuICAgIHByaW1hcnlLZXk6IHN0cmluZyxcclxuICAgIHByaW1hcnlLZXlWYWx1ZTogc3RyaW5nXHJcbiAgKSB7XHJcbiAgICBjb25zdCB3aGVyZUNsYXVzZSA9IG5ldyBBUElGaWx0ZXJDcml0ZXJpYSgpO1xyXG4gICAgd2hlcmVDbGF1c2UuRmlsdGVycyA9IFtdO1xyXG4gICAgY29uc3QgZmlsdGVyOiBhbnkgPSB7XHJcbiAgICAgIENvbmp1Y3Rpb25DbGF1c2U6IENvbmp1Y3Rpb25DbGF1c2UuQU5ELFxyXG4gICAgICBGaWVsZElEOiB0YWJsZU5hbWUgKyAnLicgKyBwcmltYXJ5S2V5LFxyXG4gICAgICBSZWxhdGlvbmFsT3BlcmF0b3I6IFJlbGF0aW9uYWxPcGVyYXRvci5FcXVhbFRvLFxyXG4gICAgICBWYWx1ZVR5cGU6IEZpbHRlclZhbHVlVHlwZS5MaXRlcmFsLFxyXG4gICAgICB2YWx1ZTogcHJpbWFyeUtleVZhbHVlLFxyXG4gICAgICBTZXF1ZW5jZTogMCxcclxuICAgICAgR3JvdXBJRDogMCxcclxuICAgIH07XHJcbiAgICB3aGVyZUNsYXVzZS5GaWx0ZXJzLnB1c2goZmlsdGVyKTtcclxuICAgIHdoZXJlQ2xhdXNlLkZpbHRlckxvZ2ljID0gJzEnO1xyXG4gICAgcmV0dXJuIHdoZXJlQ2xhdXNlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQmluZHMgdGhlIHdoZXJlIGNsYXVzZSBmb3IgZGVsZXRpbmcgcmVjb3JkcyB1c2luZyBJTiBvcGVyYXRvciBieSB0YWJsZVxyXG4gICAqIEBwYXJhbSB0YWJsZU5hbWUgVGhlIG5hbWUgb2YgdGhlIHRhYmxlIGZyb20gd2hpY2ggdG8gZGVsZXRlIHJlY29yZHNcclxuICAgKiBAcGFyYW0gcHJpbWFyeUtleSBUaGUgbmFtZSBvZiB0aGUgcHJpbWFyeSBrZXkgZmllbGRcclxuICAgKiBAcGFyYW0gdmFsdWVzIFRoZSBhcnJheSBvZiB2YWx1ZXMgZm9yIHRoZSBJTiBvcGVyYXRvclxyXG4gICAqIEByZXR1cm5zIFRoZSBib3VuZCB3aGVyZSBjbGF1c2UgZm9yIGRlbGV0ZSBvcGVyYXRpb24gdXNpbmcgSU4gb3BlcmF0b3IgYW5kIHRhYmxlXHJcbiAgICovXHJcbiAgYmluZFdoZXJlQ2xhdXNlRm9yRGVsZXRlVXNpbmdJbk9wZXJhdG9yQnlUYWJsZShcclxuICAgIHRhYmxlTmFtZTogc3RyaW5nLFxyXG4gICAgcHJpbWFyeUtleTogc3RyaW5nLFxyXG4gICAgdmFsdWVzOiBbXVxyXG4gICkge1xyXG4gICAgY29uc3QgYXBwb2JqID0gZ2V0QXBwT2JqZWN0RnJvbVN5c3RlbURCVGFibGVOYW1lKHRhYmxlTmFtZSk7XHJcbiAgICBpZiAoYXBwb2JqPy5DUlVEQXBwT2JqZWN0SWQgIT09IG51bGwpIHtcclxuICAgICAgY29uc3QgY3J1ZEFwcE9iaiA9IGdldEFwcE9iamVjdChhcHBvYmouQ1JVREFwcE9iamVjdElkKTtcclxuICAgICAgaWYgKGNydWRBcHBPYmopIHtcclxuICAgICAgICB0YWJsZU5hbWUgPSBjcnVkQXBwT2JqLlN5c3RlbURCVGFibGVOYW1lO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCB3aGVyZUNsYXVzZSA9IG5ldyBBUElGaWx0ZXJDcml0ZXJpYSgpO1xyXG4gICAgd2hlcmVDbGF1c2UuRmlsdGVycyA9IFtdO1xyXG4gICAgY29uc3QgZmlsdGVyOiBhbnkgPSB7XHJcbiAgICAgIENvbmp1Y3Rpb25DbGF1c2U6IENvbmp1Y3Rpb25DbGF1c2UuQU5ELFxyXG4gICAgICBGaWVsZElEOiB0YWJsZU5hbWUgKyAnLicgKyBwcmltYXJ5S2V5LFxyXG4gICAgICBSZWxhdGlvbmFsT3BlcmF0b3I6IFJlbGF0aW9uYWxPcGVyYXRvci5JTixcclxuICAgICAgVmFsdWVUeXBlOiBGaWx0ZXJWYWx1ZVR5cGUuTGl0ZXJhbCxcclxuICAgICAgdmFsdWU6IHZhbHVlcy5qb2luKCcsJyksXHJcbiAgICAgIFNlcXVlbmNlOiAwLFxyXG4gICAgICBHcm91cElEOiAwLFxyXG4gICAgfTtcclxuICAgIHdoZXJlQ2xhdXNlLkZpbHRlcnMucHVzaChmaWx0ZXIpO1xyXG4gICAgd2hlcmVDbGF1c2UuRmlsdGVyTG9naWMgPSAnMSc7XHJcbiAgICByZXR1cm4gd2hlcmVDbGF1c2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBCaW5kcyB0aGUgd2hlcmUgY2xhdXNlIGZvciB1cGRhdGluZyByZWNvcmRzIGluIGEgZ3JpZFxyXG4gICAqIEBwYXJhbSBGaWVsZHMgVGhlIGZpZWxkcyB0byBiaW5kIHRoZSB3aGVyZSBjbGF1c2VcclxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIG1hdGNoIGluIHRoZSB3aGVyZSBjbGF1c2VcclxuICAgKiBAcGFyYW0gZmllbGROYW1lIFRoZSBmaWVsZCBuYW1lIHRvIG1hdGNoIGluIHRoZSB3aGVyZSBjbGF1c2VcclxuICAgKiBAcGFyYW0gY3J1ZFRhYmxlTmFtZSBUaGUgQ1JVRCB0YWJsZSBuYW1lIGZvciB0aGUgd2hlcmUgY2xhdXNlXHJcbiAgICogQHJldHVybnMgVGhlIGJvdW5kIHdoZXJlIGNsYXVzZSBmb3IgdXBkYXRlIG9wZXJhdGlvbiBpbiBhIGdyaWRcclxuICAgKi9cclxuICBiaW5kV2hlcmVDbGF1c2VGb3JVcGRhdGVHcmlkKFxyXG4gICAgRmllbGRzOiBhbnksXHJcbiAgICB2YWx1ZTogYW55LFxyXG4gICAgZmllbGROYW1lOiBzdHJpbmcsXHJcbiAgICBjcnVkVGFibGVOYW1lOiBzdHJpbmdcclxuICApIHtcclxuICAgIHJldHVybiB0aGlzLmJpbmRXaGVyZUNsYXVzZShGaWVsZHMsIHZhbHVlLCBmaWVsZE5hbWUsIGNydWRUYWJsZU5hbWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQmluZHMgdGhlIHdoZXJlIGNsYXVzZSBmb3IgdXBkYXRpbmcgcmVjb3JkcyB1c2luZyBmaWx0ZXJzXHJcbiAgICogQHBhcmFtIHRhYmxlTmFtZSBUaGUgbmFtZSBvZiB0aGUgdGFibGUgdG8gdXBkYXRlXHJcbiAgICogQHBhcmFtIGZpbHRlcnMgVGhlIGFycmF5IG9mIGZpbHRlcnMgZm9yIHRoZSB1cGRhdGUgcXVlcnlcclxuICAgKiBAcGFyYW0gZmllbGRzIFRoZSBhcnJheSBvZiBmaWVsZHMgZnJvbSB0aGUgYXBwIG9iamVjdCB0byBtYXAgd2l0aCBmaWVsZCBJRCAtIHVzZWQgaW4gcmVwbGFjaW5nIElEIFdpdGggbmFtZVxyXG4gICAqIEByZXR1cm5zIFRoZSBib3VuZCB3aGVyZSBjbGF1c2UgZm9yIHVwZGF0ZSBvcGVyYXRpb25cclxuICAgKi9cclxuICBiaW5kV2hlcmVDbGF1c2VGb3JVcGRhdGVVc2luZ0ZpbHRlcnMoXHJcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcclxuICAgIGZpbHRlcnM6IGFueSxcclxuICAgIGZpZWxkczogYW55W11cclxuICApIHtcclxuICAgIGNvbnN0IHdoZXJlQ2xhdXNlID0gbmV3IEFQSUZpbHRlckNyaXRlcmlhKCk7XHJcbiAgICB3aGVyZUNsYXVzZS5GaWx0ZXJzID0gW107XHJcbiAgICBpZiAoZmlsdGVycy5sZW5ndGgpIHtcclxuICAgICAgZmlsdGVycy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCBmaWVsZCA9IGZpZWxkcy5maW5kKChmKSA9PiBmLklEID09PSBlbGVtZW50LkZpZWxkSUQpIHx8IHt9O1xyXG5cclxuICAgICAgICBjb25zdCBmaWx0ZXIgPSB7XHJcbiAgICAgICAgICBDb25qdWN0aW9uQ2xhdXNlOiBlbGVtZW50LkNvbmp1Y3Rpb25DbGF1c2UsXHJcbiAgICAgICAgICBGaWVsZElEOiBgJHt0YWJsZU5hbWV9LiR7ZmllbGQuRmllbGROYW1lfWAsXHJcbiAgICAgICAgICBSZWxhdGlvbmFsT3BlcmF0b3I6IGVsZW1lbnQuUmVsYXRpb25hbE9wZXJhdG9yLFxyXG4gICAgICAgICAgVmFsdWVUeXBlOiBlbGVtZW50LlZhbHVlVHlwZSxcclxuICAgICAgICAgIHZhbHVlOiBlbGVtZW50LlZhbHVlLFxyXG4gICAgICAgICAgU2VxdWVuY2U6IGVsZW1lbnQuU2VxdWVuY2UsXHJcbiAgICAgICAgICBHcm91cElEOiBlbGVtZW50Lkdyb3VwSUQsXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgd2hlcmVDbGF1c2UuRmlsdGVycy5wdXNoKGZpbHRlcik7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHdoZXJlQ2xhdXNlLkZpbHRlckxvZ2ljID0gJzEnO1xyXG4gICAgcmV0dXJuIHdoZXJlQ2xhdXNlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQmluZHMgdGhlIHdoZXJlIGNsYXVzZSBmb3IgZGVsZXRpbmcgcmVjb3JkcyB1c2luZyBhIHNldCBvZiBrZXkgdmFsdWUgcGFpcnNcclxuICAgKiBAcGFyYW0gdGFibGVOYW1lIFRoZSBuYW1lIG9mIHRoZSB0YWJsZSBmcm9tIHdoaWNoIHRvIGRlbGV0ZSByZWNvcmRzXHJcbiAgICogQHBhcmFtIGtleVZhbHVlUGFpcnMgVGhlIGFycmF5IG9mIGtleSB2YWx1ZSBwYWlycyB0byB1c2UgaW4gdGhlIGRlbGV0ZSB3aGVyZSBjbGF1c2VcclxuICAgKiBAcmV0dXJucyBUaGUgYm91bmQgd2hlcmUgY2xhdXNlIGZvciBkZWxldGUgb3BlcmF0aW9uIHVzaW5nIGtleSB2YWx1ZSBwYWlyc1xyXG4gICAqL1xyXG4gIGJpbmRXaGVyZUNsYXVzZUZvckR5bmFtaWNEZWxldGUoXHJcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcclxuICAgIGtleVZhbHVlUGFpcnM6IGFueVtdXHJcbiAgKTogQVBJRmlsdGVyQ3JpdGVyaWEge1xyXG4gICAgY29uc3Qgd2hlcmVDbGF1c2UgPSBuZXcgQVBJRmlsdGVyQ3JpdGVyaWEoKTtcclxuICAgIHdoZXJlQ2xhdXNlLkZpbHRlcnMgPSBbXTtcclxuXHJcbiAgICAvLyBMb29wIHRocm91Z2ggdGhlIGtleSB2YWx1ZSBwYWlycyBhbmQgYWRkIHRoZW0gdG8gdGhlIHdoZXJlIGNsYXVzZVxyXG4gICAgLy8gVGhlIGNvbmp1Y3Rpb24gY2xhdXNlIGlzIEFORCBmb3IgdGhlIGZpcnN0IGl0ZW0gYW5kIE9SIGZvciB0aGUgcmVzdFxyXG4gICAga2V5VmFsdWVQYWlycy5mb3JFYWNoKChwYWlyLCBpbmRleCkgPT4ge1xyXG4gICAgICBjb25zdCBmaWx0ZXIgPSB7XHJcbiAgICAgICAgQ29uanVjdGlvbkNsYXVzZTogaW5kZXggPT09IDAgPyBDb25qdWN0aW9uQ2xhdXNlLkFORCA6IENvbmp1Y3Rpb25DbGF1c2UuQU5ELFxyXG4gICAgICAgIEZpZWxkSUQ6IGAke3RhYmxlTmFtZX0uJHtwYWlyLmtleX1gLFxyXG4gICAgICAgIFJlbGF0aW9uYWxPcGVyYXRvcjogUmVsYXRpb25hbE9wZXJhdG9yLkVxdWFsVG8sXHJcbiAgICAgICAgVmFsdWVUeXBlOiBGaWx0ZXJWYWx1ZVR5cGUuTGl0ZXJhbCxcclxuICAgICAgICB2YWx1ZTogcGFpci52YWx1ZSxcclxuICAgICAgICBTZXF1ZW5jZTogaW5kZXgsXHJcbiAgICAgICAgR3JvdXBJRDogMFxyXG4gICAgICB9O1xyXG4gICAgICB3aGVyZUNsYXVzZS5GaWx0ZXJzLnB1c2goZmlsdGVyKTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIFRoZSBmaWx0ZXIgbG9naWMgaXMgYWx3YXlzICcxJyBmb3IgZHluYW1pYyBkZWxldGVcclxuICAgIHdoZXJlQ2xhdXNlLkZpbHRlckxvZ2ljID0gJzEnO1xyXG4gICAgcmV0dXJuIHdoZXJlQ2xhdXNlO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,13 +1,10 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import { inject, Injectable } from '@angular/core';
3
- import { MetadataHelper } from '../common/meta-data.helpers';
2
+ import { Injectable } from '@angular/core';
3
+ import { getDsqIDFromQueryName } from '../../utils/tab-app.util';
4
4
  import { of } from 'rxjs';
5
5
  import { Common } from '../../constants/common';
6
6
  import * as i0 from "@angular/core";
7
7
  export class GridHelper {
8
- constructor() {
9
- this.metadataHelper = inject(MetadataHelper);
10
- }
11
8
  /**
12
9
  * Generates a grid schema for the master app object.
13
10
  * @param masterAppObj The master app object.
@@ -36,8 +33,7 @@ export class GridHelper {
36
33
  childRel.childDetails.LookupObject +
37
34
  '_' +
38
35
  masterAppObj.SystemDBTableName;
39
- const appObjectModel = this.metadataHelper.getAllAppObjects(obj => obj.SystemDBTableName === childRel.childDetails.LookupObject)[0];
40
- const dsqObject = appObjectModel?.dataSourceQuery(dsqNameString);
36
+ const dsqObject = getDsqIDFromQueryName(childRel.childDetails.LookupObject, dsqNameString);
41
37
  if (dsqObject) {
42
38
  return {
43
39
  label: childRel?.childDetails?.LookupObject,
@@ -136,4 +132,4 @@ export class GridHelper {
136
132
  type: Injectable,
137
133
  args: [{ providedIn: 'root' }]
138
134
  }], null, null); })();
139
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9zcmMvbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL2hlbHBlcnMvc2NyZWVuL2dyaWQuaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQUloRCxNQUFNLE9BQU8sVUFBVTtJQUR2QjtRQUVtQixtQkFBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztLQW1IMUQ7SUFsSEM7Ozs7O09BS0c7SUFDSCxrQkFBa0IsQ0FBQyxZQUF1QixFQUFFLEtBQVU7UUFDcEQsTUFBTSxNQUFNLEdBQUc7WUFDYixLQUFLLEVBQUUsWUFBWSxFQUFFLGlCQUFpQjtZQUN0QyxJQUFJLEVBQUUsWUFBWTtZQUNsQixHQUFHLEVBQUUsWUFBWSxFQUFFLGlCQUFpQjtZQUNwQyxLQUFLLEVBQUUsSUFBSTtZQUNYLFFBQVEsRUFBRSxZQUFZLEVBQUUsaUJBQWlCO1lBQ3pDLGlDQUFpQyxFQUFFLEtBQUs7U0FDekMsQ0FBQztRQUNGLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILHVCQUF1QixDQUFDLFFBQWEsRUFBRSxZQUF1QjtRQUM1RCxNQUFNLGFBQWEsR0FDakIsS0FBSztZQUNMLFFBQVEsQ0FBQyxZQUFZLENBQUMsWUFBWTtZQUNsQyxHQUFHO1lBQ0gsWUFBWSxDQUFDLGlCQUFpQixDQUFDO1FBQ2pDLE1BQU0sY0FBYyxHQUFHLElB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LElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLFFBQVEsS0FBSyxFQUFFLENBQUM7WUFBRSxPQUFPLGFBQWEsQ0FBQzthQUMxRSxJQUFJLFFBQVEsS0FBSyxDQUFDLElBQUksUUFBUSxLQUFLLENBQUMsSUFBSSxRQUFRLEtBQUssRUFBRTtZQUFFLE9BQU8sYUFBYSxDQUFDO2FBQzlFLElBQUksUUFBUSxLQUFLLENBQUM7WUFBRSxPQUFPLGFBQWEsQ0FBQzthQUN6QyxJQUFJLFFBQVEsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLFFBQVEsSUFBSSxFQUFFLENBQUM7WUFBRSxPQUFPLGFBQWEsQ0FBQzthQUM5RSxJQUFJLFFBQVEsS0FBSyxDQUFDO1lBQUUsT0FBTyxnQkFBZ0IsQ0FBQyxDQUFHLG1CQUFtQjthQUNsRSxJQUFJLFFBQVEsS0FBSyxDQUFDO1lBQUUsT0FBTyxvQkFBb0IsQ0FBQyxDQUFDLG9CQUFvQjthQUNyRSxJQUFJLFFBQVEsS0FBSyxFQUFFO1lBQUUsT0FBTyxjQUFjLENBQUM7O1lBQzNDLE9BQU8sYUFBYSxDQUFDO0lBQzVCLENBQUM7MkVBbkhVLFVBQVU7dUVBQVYsVUFBVSxXQUFWLFVBQVUsbUJBREcsTUFBTTs7aUZBQ25CLFVBQVU7Y0FEdEIsVUFBVTtlQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cclxuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFwcE9iamVjdCB9IGZyb20gJy4uLy4uL21vZGVscy9hcHAtb2JqZWN0LmNsYXNzJztcclxuaW1wb3J0IHsgTWV0YWRhdGFIZWxwZXIgfSBmcm9tICcuLi9jb21tb24vbWV0YS1kYXRhLmhlbHBlcnMnO1xyXG5pbXBvcnQgeyBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDb21tb24gfSBmcm9tICcuLi8uLi9jb25zdGFudHMvY29tbW9uJztcclxuaW1wb3J0IHsgSnFXaWRnaHRNb2RlbCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZ3JpZC5pbnRlcmZhY2UnO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIEdyaWRIZWxwZXIge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgbWV0YWRhdGFIZWxwZXIgPSBpbmplY3QoTWV0YWRhdGFIZWxwZXIpO1xyXG4gIC8qKlxyXG4gICAqIEdlbmVyYXRlcyBhIGdyaWQgc2NoZW1hIGZvciB0aGUgbWFzdGVyIGFwcCBvYmplY3QuXHJcbiAgICogQHBhcmFtIG1hc3RlckFwcE9iaiBUaGUgbWFzdGVyIGFwcCBvYmplY3QuXHJcbiAgICogQHBhcmFtIGRzcUlEIFRoZSBkYXRhIHNvdXJjZSBxdWVyeSBJRC5cclxuICAgKiBAcmV0dXJucyBUaGUgZ2VuZXJhdGVkIGdyaWQgc2NoZW1hLlxyXG4gICAqL1xyXG4gIGdlbmVyYXRlR3JpZFNjaGVtYShtYXN0ZXJBcHBPYmo6IEFwcE9iamVjdCwgZHNxSUQ6IGFueSkge1xyXG4gICAgY29uc3Qgc2NoZW1hID0ge1xyXG4gICAgICBsYWJlbDogbWFzdGVyQXBwT2JqPy5TeXN0ZW1EQlRhYmxlTmFtZSxcclxuICAgICAgdHlwZTogJ2N1c3RvbUdyaWQnLFxyXG4gICAgICBrZXk6IG1hc3RlckFwcE9iaj8uU3lzdGVtREJUYWJsZU5hbWUsXHJcbiAgICAgIGlucHV0OiB0cnVlLFxyXG4gICAgICByZWRyYXdPbjogbWFzdGVyQXBwT2JqPy5TeXN0ZW1EQlRhYmxlTmFtZSxcclxuICAgICAgJ2N1c3RvbU9wdGlvbnMuZGF0YVNvdXJjZVF1ZXJ5SWQnOiBkc3FJRCxcclxuICAgIH07XHJcbiAgICByZXR1cm4gc2NoZW1hO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2VuZXJhdGVzIGEgZ3JpZCBzY2hlbWEgZm9yIHRoZSBjaGlsZCByZWxhdGlvbnNoaXAuXHJcbiAgICogQHBhcmFtIGNoaWxkUmVsIFRoZSBjaGlsZCByZWxhdGlvbnNoaXAuXHJcbiAgICogQHBhcmFtIG1hc3RlckFwcE9iaiBUaGUgbWFzdGVyIGFwcCBvYmplY3QuXHJcbiAgICogQHJldHVybnMgVGhlIGdlbmVyYXRlZCBjaGlsZCBncmlkIHNjaGVtYS5cclxuICAgKi9cclxuICBnZW5lcmF0ZUNoaWxkR3JpZFNjaGVtYShjaGlsZFJlbDogYW55LCBtYXN0ZXJBcHBPYmo6IEFwcE9iamVjdCkge1xyXG4gICAgY29uc3QgZHNxTmFtZVN0cmluZyA9XHJcbiAgICAgICdGS18nICtcclxuICAgICAgY2hpbGRSZWwuY2hpbGREZXRhaWxzLkxvb2t1cE9iamVjdCArXHJcbiAgICAgICdfJyArXHJcbiAgICAgIG1hc3RlckFwcE9iai5TeXN0ZW1EQlRhYmxlTmFtZTtcclxuICAgIGNvbnN0IGFwcE9iamVjdE1vZGVsID0gdGhpcy5tZXRhZGF0YUhlbHBlci5nZXRBbGxBcHBPYmplY3RzKG9iaiA9PiBvYmouU3lzdGVtREJUYWJsZU5hbWUgPT09IGNoaWxkUmVsLmNoaWxkRGV0YWlscy5Mb29rdXBPYmplY3QpWzBdO1xyXG4gICAgY29uc3QgZHNxT2JqZWN0ID0gYXBwT2JqZWN0TW9kZWw/LmRhdGFTb3VyY2VRdWVyeShkc3FOYW1lU3RyaW5nKTtcclxuICAgIGlmIChkc3FPYmplY3QpIHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBsYWJlbDogY2hpbGRSZWw/LmNoaWxkRGV0YWlscz8uTG9va3VwT2JqZWN0LFxyXG4gICAgICAgIHR5cGU6ICdjdXN0b21HcmlkJyxcclxuICAgICAgICBrZXk6IGNoaWxkUmVsPy5jaGlsZERldGFpbHM/Lkxvb2t1cE9iamVjdCxcclxuICAgICAgICBpbnB1dDogdHJ1ZSxcclxuICAgICAgICByZWRyYXdPbjogbWFzdGVyQXBwT2JqPy5TeXN0ZW1EQlRhYmxlTmFtZSxcclxuICAgICAgICAnY3VzdG9tT3B0aW9ucy5kYXRhU291cmNlUXVlcnlJZCc6IGRzcU9iamVjdCA/IGRzcU9iamVjdC5JRCA6ICcnLFxyXG4gICAgICAgIGxvZ2ljOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6ICdVcGRhdGUgRmllbGRzJyxcclxuICAgICAgICAgICAgdHJpZ2dlcjoge1xyXG4gICAgICAgICAgICAgIHR5cGU6ICdqYXZhc2NyaXB0JyxcclxuICAgICAgICAgICAgICBqYXZhc2NyaXB0OiAncmVzdWx0PXRydWU7JyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgYWN0aW9uczogW1xyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIG5hbWU6XHJcbiAgICAgICAgICAgICAgICAgICdSZWZyZXNoICcgKyBjaGlsZFJlbD8uY2hpbGREZXRhaWxzPy5Mb29rdXBPYmplY3QgKyAnIEdyaWQnLFxyXG4gICAgICAgICAgICAgICAgdHlwZTogJ3Byb3BlcnR5JyxcclxuICAgICAgICAgICAgICAgIHByb3BlcnR5OiB7XHJcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiAncGFyYW1ldGVycycsXHJcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiAnY3VzdG9tT3B0aW9ucy5wYXJhbWV0ZXJzJyxcclxuICAgICAgICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgdGV4dDogJ3t7ZGF0YS4nICsgbWFzdGVyQXBwT2JqPy5TeXN0ZW1EQlRhYmxlTmFtZSArICd9fScsXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgXSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgXSxcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIHJldHVybiBvZih7fSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgdGhlIGRlZmF1bHQgZ3JpZCBjb25maWd1cmF0aW9uLlxyXG4gICAqIEByZXR1cm5zIFRoZSBkZWZhdWx0IGdyaWQgY29uZmlndXJhdGlvbi5cclxuICAgKi9cclxuICBnZXREZWZhdWx0R3JpZENvbmZpZ3VyYXRpb24oKTogSnFXaWRnaHRNb2RlbCB8IG51bGwge1xyXG4gICAgY29uc3QgdGFiRGF0YTogYW55ID0gQ29tbW9uLnRhYkpzb247XHJcbiAgICBpZiAodGFiRGF0YSkge1xyXG4gICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gdGFiRGF0YT8uQXBwQ29uZmlndXJhdGlvbnMuZmluZChcclxuICAgICAgICAoYzogYW55KSA9PiBjLlNldHRpbmdfS2V5ID09PSAnR3JpZENvbmZpZydcclxuICAgICAgKTtcclxuICAgICAgaWYgKGNvbmZpZ3VyYXRpb24pIHtcclxuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShjb25maWd1cmF0aW9uLlZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZXRlcm1pbmVzIHRoZSBjb2x1bW4gdHlwZSBiYXNlZCBvbiB0aGUgZGF0YSB0eXBlLlxyXG4gICAqIEBwYXJhbSBkYXRhVHlwZSBUaGUgZGF0YSB0eXBlLlxyXG4gICAqIEByZXR1cm5zIFRoZSBjb2x1bW4gdHlwZS5cclxuICAgKi9cclxuICBnZXRDb2x1bW5UeXBlKGRhdGFUeXBlOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgaWYgKGRhdGFUeXBlID09PSAxIHx8IChkYXRhVHlwZSA+PSA3ICYmIGRhdGFUeXBlID09PSAxNSkpIHJldHVybiAnc3RyaW5nJztcclxuICAgIGVsc2UgaWYgKGRhdGFUeXBlID09PSAyIHx8IGRhdGFUeXBlID09PSA0IHx8IGRhdGFUeXBlID09PSAxNikgcmV0dXJuICdudW1iZXInO1xyXG4gICAgZWxzZSBpZiAoZGF0YVR5cGUgPT09IDMpIHJldHVybiAnYm9vbGVhbic7XHJcbiAgICBlbHNlIGlmIChkYXRhVHlwZSA9PT0gNCB8fCAoZGF0YVR5cGUgPj0gNyAmJiBkYXRhVHlwZSA8PSAxNSkpIHJldHVybiAnc3RyaW5nJztcclxuICAgIGVsc2UgaWYgKGRhdGFUeXBlID09PSA1KSByZXR1cm4gJ2RhdGUnOyAgLy9kYXRlXHJcbiAgICBlbHNlIGlmIChkYXRhVHlwZSA9PT0gNikgcmV0dXJuICdkYXRlVGltZSc7IC8vIGRhdGVUaW1lXHJcbiAgICBlbHNlIHJldHVybiAnc3RyaW5nJztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlZmluZXMgdGhlIHR5cGUgb2YgY29tcG9uZW50IGZvciBlZGl0YWJsZS5cclxuICAgKlxyXG4gICAqIEBkZWZhdWx0ICdzdHJpbmdlZGl0J1xyXG4gICAqL1xyXG4gIGdldENvbHVtbkNvbXBvbmVudFR5cGVGb3JFZGl0YWJsZShkYXRhVHlwZTogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGlmIChkYXRhVHlwZSA9PT0gMSB8fCAoZGF0YVR5cGUgPj0gNyAmJiBkYXRhVHlwZSA9PT0gMTUpKSByZXR1cm4gJ2RlZmF1bHRFZGl0JztcclxuICAgIGVsc2UgaWYgKGRhdGFUeXBlID09PSAyIHx8IGRhdGFUeXBlID09PSA0IHx8IGRhdGFUeXBlID09PSAxNikgcmV0dXJuICdudW1lcmljRWRpdCc7XHJcbiAgICBlbHNlIGlmIChkYXRhVHlwZSA9PT0gMykgcmV0dXJuICdib29sZWFuRWRpdCc7XHJcbiAgICBlbHNlIGlmIChkYXRhVHlwZSA9PT0gNCB8fCAoZGF0YVR5cGUgPj0gNyAmJiBkYXRhVHlwZSA8PSAxNSkpIHJldHVybiAnZGVmYXVsdEVkaXQnO1xyXG4gICAgZWxzZSBpZiAoZGF0YVR5cGUgPT09IDUpIHJldHVybiAnZGF0ZVBpY2tlckVkaXQnOyAgIC8vIGRhdGVQaWNrZXJFZGl0JztcclxuICAgIGVsc2UgaWYgKGRhdGFUeXBlID09PSA2KSByZXR1cm4gJ2RhdGVUaW1lUGlja2VyRWRpdCc7IC8vZGF0ZVRpbWVQaWNrZXJFZGl0XHJcbiAgICBlbHNlIGlmIChkYXRhVHlwZSA9PT0gMTcpIHJldHVybiAnZHJvcERvd25FZGl0JztcclxuICAgIGVsc2UgcmV0dXJuICdkZWZhdWx0RWRpdCc7XHJcbiAgfVxyXG59XHJcbiJdfQ==
135
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9zcmMvbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL2hlbHBlcnMvc2NyZWVuL2dyaWQuaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFJaEQsTUFBTSxPQUFPLFVBQVU7SUFDckI7Ozs7O09BS0c7SUFDSCxrQkFBa0IsQ0FBQyxZQUF1QixFQUFFLEtBQVU7UUFDcEQsTUFBTSxNQUFNLEdBQUc7WUFDYixLQUFLLEVBQUUsWUFBWSxFQUFFLGlCQUFpQjtZQUN0QyxJQUFJLEVBQUUsWUFBWTtZQUNsQixHQUFHLEVBQUUsWUFBWSxFQUFFLGlCQUFpQjtZQUNwQyxLQUFLLEVBQUUsSUFBSTtZQUNYLFFBQVEsRUFBRSxZQUFZLEVBQUUsaUJBQWlCO1lBQ3pDLGlDQUFpQyxFQUFFLEtBQUs7U0FDekMsQ0FBQztRQUNGLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILHVCQUF1QixDQUFDLFFBQWEsRUFBRSxZQUF1QjtRQUM1RCxNQUFNLGFBQWEsR0FDakIsS0FBSztZQUNMLFFBQVEsQ0FBQyxZQUFZLENBQUMsWUFBWTtZQUNsQyxHQUFHO1lBQ0gsWUFBWSxDQUFDLGlCQUFpQixDQUFDO1FBQ2pDLE1BQU0sU0FBUyxHQUFHLHFCQUFxQixDQUNyQyxRQUFRLENBQUMsWUFBWSxDQUFDLFlBQVksRUFDbEMsYUFBYSxDQUNkLENBQUM7UUFDRixJ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QUUsT0FBTyxhQUFhLENBQUM7YUFDekMsSUFBSSxRQUFRLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxRQUFRLElBQUksRUFBRSxDQUFDO1lBQUUsT0FBTyxhQUFhLENBQUM7YUFDOUUsSUFBSSxRQUFRLEtBQUssQ0FBQztZQUFFLE9BQU8sZ0JBQWdCLENBQUMsQ0FBRyxtQkFBbUI7YUFDbEUsSUFBSSxRQUFRLEtBQUssQ0FBQztZQUFFLE9BQU8sb0JBQW9CLENBQUMsQ0FBQyxvQkFBb0I7YUFDckUsSUFBSSxRQUFRLEtBQUssRUFBRTtZQUFFLE9BQU8sY0FBYyxDQUFDOztZQUMzQyxPQUFPLGFBQWEsQ0FBQztJQUM1QixDQUFDOzJFQXBIVSxVQUFVO3VFQUFWLFVBQVUsV0FBVixVQUFVLG1CQURHLE1BQU07O2lGQUNuQixVQUFVO2NBRHRCLFVBQVU7ZUFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQXBwT2JqZWN0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FwcC1vYmplY3QuY2xhc3MnO1xyXG5pbXBvcnQgeyBnZXREc3FJREZyb21RdWVyeU5hbWUgfSBmcm9tICcuLi8uLi91dGlscy90YWItYXBwLnV0aWwnO1xyXG5pbXBvcnQgeyBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDb21tb24gfSBmcm9tICcuLi8uLi9jb25zdGFudHMvY29tbW9uJztcclxuaW1wb3J0IHsgSnFXaWRnaHRNb2RlbCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZ3JpZC5pbnRlcmZhY2UnO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIEdyaWRIZWxwZXIge1xyXG4gIC8qKlxyXG4gICAqIEdlbmVyYXRlcyBhIGdyaWQgc2NoZW1hIGZvciB0aGUgbWFzdGVyIGFwcCBvYmplY3QuXHJcbiAgICogQHBhcmFtIG1hc3RlckFwcE9iaiBUaGUgbWFzdGVyIGFwcCBvYmplY3QuXHJcbiAgICogQHBhcmFtIGRzcUlEIFRoZSBkYXRhIHNvdXJjZSBxdWVyeSBJRC5cclxuICAgKiBAcmV0dXJucyBUaGUgZ2VuZXJhdGVkIGdyaWQgc2NoZW1hLlxyXG4gICAqL1xyXG4gIGdlbmVyYXRlR3JpZFNjaGVtYShtYXN0ZXJBcHBPYmo6IEFwcE9iamVjdCwgZHNxSUQ6IGFueSkge1xyXG4gICAgY29uc3Qgc2NoZW1hID0ge1xyXG4gICAgICBsYWJlbDogbWFzdGVyQXBwT2JqPy5TeXN0ZW1EQlRhYmxlTmFtZSxcclxuICAgICAgdHlwZTogJ2N1c3RvbUdyaWQnLFxyXG4gICAgICBrZXk6IG1hc3RlckFwcE9iaj8uU3lzdGVtREJUYWJsZU5hbWUsXHJcbiAgICAgIGlucHV0OiB0cnVlLFxyXG4gICAgICByZWRyYXdPbjogbWFzdGVyQXBwT2JqPy5TeXN0ZW1EQlRhYmxlTmFtZSxcclxuICAgICAgJ2N1c3RvbU9wdGlvbnMuZGF0YVNvdXJjZVF1ZXJ5SWQnOiBkc3FJRCxcclxuICAgIH07XHJcbiAgICByZXR1cm4gc2NoZW1hO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2VuZXJhdGVzIGEgZ3JpZCBzY2hlbWEgZm9yIHRoZSBjaGlsZCByZWxhdGlvbnNoaXAuXHJcbiAgICogQHBhcmFtIGNoaWxkUmVsIFRoZSBjaGlsZCByZWxhdGlvbnNoaXAuXHJcbiAgICogQHBhcmFtIG1hc3RlckFwcE9iaiBUaGUgbWFzdGVyIGFwcCBvYmplY3QuXHJcbiAgICogQHJldHVybnMgVGhlIGdlbmVyYXRlZCBjaGlsZCBncmlkIHNjaGVtYS5cclxuICAgKi9cclxuICBnZW5lcmF0ZUNoaWxkR3JpZFNjaGVtYShjaGlsZFJlbDogYW55LCBtYXN0ZXJBcHBPYmo6IEFwcE9iamVjdCkge1xyXG4gICAgY29uc3QgZHNxTmFtZVN0cmluZyA9XHJcbiAgICAgICdGS18nICtcclxuICAgICAgY2hpbGRSZWwuY2hpbGREZXRhaWxzLkxvb2t1cE9iamVjdCArXHJcbiAgICAgICdfJyArXHJcbiAgICAgIG1hc3RlckFwcE9iai5TeXN0ZW1EQlRhYmxlTmFtZTtcclxuICAgIGNvbnN0IGRzcU9iamVjdCA9IGdldERzcUlERnJvbVF1ZXJ5TmFtZShcclxuICAgICAgY2hpbGRSZWwuY2hpbGREZXRhaWxzLkxvb2t1cE9iamVjdCxcclxuICAgICAgZHNxTmFtZVN0cmluZ1xyXG4gICAgKTtcclxuICAgIGlmIChkc3FPYmplY3QpIHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBsYWJlbDogY2hpbGRSZWw/LmNoaWxkRGV0YWlscz8uTG9va3VwT2JqZWN0LFxyXG4gICAgICAgIHR5cGU6ICdjdXN0b21HcmlkJyxcclxuICAgICAgICBrZXk6IGNoaWxkUmVsPy5jaGlsZERldGFpbHM/Lkxvb2t1cE9iamVjdCxcclxuICAgICAgICBpbnB1dDogdHJ1ZSxcclxuICAgICAgICByZWRyYXdPbjogbWFzdGVyQXBwT2JqPy5TeXN0ZW1EQlRhYmxlTmFtZSxcclxuICAgICAgICAnY3VzdG9tT3B0aW9ucy5kYXRhU291cmNlUXVlcnlJZCc6IGRzcU9iamVjdCA/IGRzcU9iamVjdC5JRCA6ICcnLFxyXG4gICAgICAgIGxvZ2ljOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6ICdVcGRhdGUgRmllbGRzJyxcclxuICAgICAgICAgICAgdHJpZ2dlcjoge1xyXG4gICAgICAgICAgICAgIHR5cGU6ICdqYXZhc2NyaXB0JyxcclxuICAgICAgICAgICAgICBqYXZhc2NyaXB0OiAncmVzdWx0PXRydWU7JyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgYWN0aW9uczogW1xyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIG5hbWU6XHJcbiAgICAgICAgICAgICAgICAgICdSZWZyZXNoICcgKyBjaGlsZFJlbD8uY2hpbGREZXRhaWxzPy5Mb29rdXBPYmplY3QgKyAnIEdyaWQnLFxyXG4gICAgICAgICAgICAgICAgdHlwZTogJ3Byb3BlcnR5JyxcclxuICAgICAgICAgICAgICAgIHByb3BlcnR5OiB7XHJcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiAncGFyYW1ldGVycycsXHJcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiAnY3VzdG9tT3B0aW9ucy5wYXJhbWV0ZXJzJyxcclxuICAgICAgICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgdGV4dDogJ3t7ZGF0YS4nICsgbWFzdGVyQXBwT2JqPy5TeXN0ZW1EQlRhYmxlTmFtZSArICd9fScsXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgXSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgXSxcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIHJldHVybiBvZih7fSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgdGhlIGRlZmF1bHQgZ3JpZCBjb25maWd1cmF0aW9uLlxyXG4gICAqIEByZXR1cm5zIFRoZSBkZWZhdWx0IGdyaWQgY29uZmlndXJhdGlvbi5cclxuICAgKi9cclxuICBnZXREZWZhdWx0R3JpZENvbmZpZ3VyYXRpb24oKTogSnFXaWRnaHRNb2RlbCB8IG51bGwge1xyXG4gICAgY29uc3QgdGFiRGF0YTogYW55ID0gQ29tbW9uLnRhYkpzb247XHJcbiAgICBpZiAodGFiRGF0YSkge1xyXG4gICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gdGFiRGF0YT8uQXBwQ29uZmlndXJhdGlvbnMuZmluZChcclxuICAgICAgICAoYzogYW55KSA9PiBjLlNldHRpbmdfS2V5ID09PSAnR3JpZENvbmZpZydcclxuICAgICAgKTtcclxuICAgICAgaWYgKGNvbmZpZ3VyYXRpb24pIHtcclxuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShjb25maWd1cmF0aW9uLlZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZXRlcm1pbmVzIHRoZSBjb2x1bW4gdHlwZSBiYXNlZCBvbiB0aGUgZGF0YSB0eXBlLlxyXG4gICAqIEBwYXJhbSBkYXRhVHlwZSBUaGUgZGF0YSB0eXBlLlxyXG4gICAqIEByZXR1cm5zIFRoZSBjb2x1bW4gdHlwZS5cclxuICAgKi9cclxuICBnZXRDb2x1bW5UeXBlKGRhdGFUeXBlOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgaWYgKGRhdGFUeXBlID09PSAxIHx8IChkYXRhVHlwZSA+PSA3ICYmIGRhdGFUeXBlID09PSAxNSkpIHJldHVybiAnc3RyaW5nJztcclxuICAgIGVsc2UgaWYgKGRhdGFUeXBlID09PSAyIHx8IGRhdGFUeXBlID09PSA0IHx8IGRhdGFUeXBlID09PSAxNikgcmV0dXJuICdudW1iZXInO1xyXG4gICAgZWxzZSBpZiAoZGF0YVR5cGUgPT09IDMpIHJldHVybiAnYm9vbGVhbic7XHJcbiAgICBlbHNlIGlmIChkYXRhVHlwZSA9PT0gNCB8fCAoZGF0YVR5cGUgPj0gNyAmJiBkYXRhVHlwZSA8PSAxNSkpIHJldHVybiAnc3RyaW5nJztcclxuICAgIGVsc2UgaWYgKGRhdGFUeXBlID09PSA1KSByZXR1cm4gJ2RhdGUnOyAgLy9kYXRlXHJcbiAgICBlbHNlIGlmIChkYXRhVHlwZSA9PT0gNikgcmV0dXJuICdkYXRlVGltZSc7IC8vIGRhdGVUaW1lXHJcbiAgICBlbHNlIHJldHVybiAnc3RyaW5nJztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlZmluZXMgdGhlIHR5cGUgb2YgY29tcG9uZW50IGZvciBlZGl0YWJsZS5cclxuICAgKlxyXG4gICAqIEBkZWZhdWx0ICdzdHJpbmdlZGl0J1xyXG4gICAqL1xyXG4gIGdldENvbHVtbkNvbXBvbmVudFR5cGVGb3JFZGl0YWJsZShkYXRhVHlwZTogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGlmIChkYXRhVHlwZSA9PT0gMSB8fCAoZGF0YVR5cGUgPj0gNyAmJiBkYXRhVHlwZSA9PT0gMTUpKSByZXR1cm4gJ2RlZmF1bHRFZGl0JztcclxuICAgIGVsc2UgaWYgKGRhdGFUeXBlID09PSAyIHx8IGRhdGFUeXBlID09PSA0IHx8IGRhdGFUeXBlID09PSAxNikgcmV0dXJuICdudW1lcmljRWRpdCc7XHJcbiAgICBlbHNlIGlmIChkYXRhVHlwZSA9PT0gMykgcmV0dXJuICdib29sZWFuRWRpdCc7XHJcbiAgICBlbHNlIGlmIChkYXRhVHlwZSA9PT0gNCB8fCAoZGF0YVR5cGUgPj0gNyAmJiBkYXRhVHlwZSA8PSAxNSkpIHJldHVybiAnZGVmYXVsdEVkaXQnO1xyXG4gICAgZWxzZSBpZiAoZGF0YVR5cGUgPT09IDUpIHJldHVybiAnZGF0ZVBpY2tlckVkaXQnOyAgIC8vIGRhdGVQaWNrZXJFZGl0JztcclxuICAgIGVsc2UgaWYgKGRhdGFUeXBlID09PSA2KSByZXR1cm4gJ2RhdGVUaW1lUGlja2VyRWRpdCc7IC8vZGF0ZVRpbWVQaWNrZXJFZGl0XHJcbiAgICBlbHNlIGlmIChkYXRhVHlwZSA9PT0gMTcpIHJldHVybiAnZHJvcERvd25FZGl0JztcclxuICAgIGVsc2UgcmV0dXJuICdkZWZhdWx0RWRpdCc7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -84,9 +84,9 @@ export class MediaUploadHelper {
84
84
  * @param mediaId The ID of the media file to remove.
85
85
  * @returns An Observable that emits the deleted file as a Blob.
86
86
  */
87
- removeMediaFile(mediaId) {
88
- // Get the headers for the request
89
- const headers = getHeaders();
87
+ removeMediaFile(mediaId, customHeaders) {
88
+ // Get the headers for the request, merging any custom headers
89
+ const headers = getHeaders(customHeaders);
90
90
  // Construct the endpoint URL with the media ID
91
91
  const endPointName = `${API.deleteFile}?MediaId=${mediaId}`;
92
92
  // Make the GET request to delete the file and return the response as a Blob
@@ -99,4 +99,4 @@ export class MediaUploadHelper {
99
99
  type: Injectable,
100
100
  args: [{ providedIn: 'root' }]
101
101
  }], null, null); })();
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEtdXBsb2FkLmhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL3NyYy9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvaGVscGVycy9zY3JlZW4vbWVkaWEtdXBsb2FkLmhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFMUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLCtCQUErQixDQUFDOztBQUdwRCxNQUFNLE9BQU8saUJBQWlCO0lBRDlCO1FBRW1CLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7S0ErRmxEO0lBN0ZDLE1BQU07SUFDTix5Q0FBeUM7SUFDekMsb0RBQW9EO0lBQ3BELHFFQUFxRTtJQUNyRSxNQUFNO0lBQ04sdURBQXVEO0lBQ3ZELDBDQUEwQztJQUMxQyxtQkFBbUI7SUFDbkIsOEVBQThFO0lBQzlFLE1BQU07SUFDTixxQkFBcUI7SUFDckIsSUFBSTtJQUVKOzs7O09BSUc7SUFDSCxnQkFBZ0IsQ0FBQyxPQUFnQyxFQUFFLE9BQWE7UUFDOUQsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2IsK0JBQStCO1lBQy9CLE9BQU8sR0FBRyxrQkFBa0IsRUFBRSxDQUFDO1FBQ2pDLENBQUM7UUFFRCw0RUFBNEU7UUFDNUUsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQsTUFBTTtJQUNOLHVEQUF1RDtJQUN2RCwwREFBMEQ7SUFDMUQsMkRBQTJEO0lBQzNELE1BQU07SUFDTixzRUFBc0U7SUFDdEUsa0NBQWtDO0lBQ2xDLG1CQUFtQjtJQUNuQixpR0FBaUc7SUFDakcsTUFBTTtJQUNOLGlCQUFpQjtJQUNqQixJQUFJO0lBRUosTUFBTTtJQUNOLDZDQUE2QztJQUM3Qyx5REFBeUQ7SUFDekQsdUVBQXVFO0lBQ3ZFLE1BQU07SUFDTiwwREFBMEQ7SUFDMUQsa0RBQWtEO0lBQ2xELElBQUk7SUFFSixNQUFNO0lBQ04sNkNBQTZDO0lBQzdDLDZEQUE2RDtJQUM3RCwwREFBMEQ7SUFDMUQsMkVBQTJFO0lBQzNFLE1BQU07SUFDTixxRUFBcUU7SUFDckUsa0NBQWtDO0lBQ2xDLG1CQUFtQjtJQUNuQixvRUFBb0U7SUFDcEUsTUFBTTtJQUNOLGlCQUFpQjtJQUNqQixJQUFJO0lBRUosTUFBTTtJQUNOLHlEQUF5RDtJQUN6RCwwREFBMEQ7SUFDMUQsNERBQTREO0lBQzVELE1BQU07SUFDTixvRUFBb0U7SUFDcEUsa0NBQWtDO0lBQ2xDLG1CQUFtQjtJQUNuQixpRUFBaUU7SUFDakUsdUVBQXVFO0lBQ3ZFLE1BQU07SUFDTixpQkFBaUI7SUFDakIsSUFBSTtJQUVKOzs7O09BSUc7SUFDSCxlQUFlLENBQUMsT0FBZTtRQUM3QixrQ0FBa0M7UUFDbEMsTUFBTSxPQUFPLEdBQUcsVUFBVSxFQUFFLENBQUM7UUFFN0IsK0NBQStDO1FBQy9DLE1BQU0sWUFBWSxHQUFHLEdBQUcsR0FBRyxDQUFDLFVBQVUsWUFBWSxPQUFPLEVBQUUsQ0FBQztRQUU1RCw0RUFBNEU7UUFDNUUsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2hFLENBQUM7a0ZBL0ZVLGlCQUFpQjt1RUFBakIsaUJBQWlCLFdBQWpCLGlCQUFpQixtQkFESixNQUFNOztpRkFDbkIsaUJBQWlCO2NBRDdCLFVBQVU7ZUFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXHJcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBcGlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9odHRwLWNsaWVudC9hcGkuc2VydmljZSc7XHJcbmltcG9ydCB7IGdldEZvcm1EYXRhSGVhZGVycywgZ2V0SGVhZGVycyB9IGZyb20gJy4uLy4uL3V0aWxzL3JlcS1yZXMudXRpbCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQVBJIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2FwaS1jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBDb21tb25BcGlSZXNwb25zZSwgVXBsb2FkTWVkaWFGaWxlc1BheWxvYWQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2NvbW1vbi5pbnRlcmZhY2UnO1xyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgTWVkaWFVcGxvYWRIZWxwZXIge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgYXBpU2VydmljZSA9IGluamVjdChBcGlTZXJ2aWNlKTtcclxuXHJcbiAgLy8gLyoqXHJcbiAgLy8gICogVXBsb2FkcyBtZWRpYSBvYmplY3QgdG8gdGhlIHNlcnZlci5cclxuICAvLyAgKiBAcGFyYW0gbWVkaWFPYmplY3QgVGhlIG1lZGlhIG9iamVjdCB0byB1cGxvYWQuXHJcbiAgLy8gICogQHJldHVybnMgQW4gT2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSByZXNwb25zZSBmcm9tIHRoZSBzZXJ2ZXIuXHJcbiAgLy8gICovXHJcbiAgLy8gdXBsb2FkTWVkaWFGaWxlKG1lZGlhT2JqZWN0OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gIC8vICAgY29uc3QgaGVhZGVycyA9IGdldEZvcm1EYXRhSGVhZGVycygpO1xyXG4gIC8vICAgaWYgKGhlYWRlcnMpIHtcclxuICAvLyAgICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0KGAke0FQSS5maWxlVXBsb2FkfWAsIG1lZGlhT2JqZWN0LCBoZWFkZXJzKTtcclxuICAvLyAgIH1cclxuICAvLyAgIHJldHVybiBvZihudWxsKTtcclxuICAvLyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwbG9hZHMgbXVsdGlwbGUgbWVkaWEgb2JqZWN0cyB0byB0aGUgc2VydmVyLlxyXG4gICAqIEBwYXJhbSBwYXlsb2FkIEFuIGFycmF5IG9mIG1lZGlhIG9iamVjdHMgdG8gdXBsb2FkLlxyXG4gICAqIEByZXR1cm5zIEFuIE9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgcmVzcG9uc2UgZnJvbSB0aGUgc2VydmVyLlxyXG4gICAqL1xyXG4gIHVwbG9hZE1lZGlhRmlsZXMocGF5bG9hZDogVXBsb2FkTWVkaWFGaWxlc1BheWxvYWQsIGhlYWRlcnM/OiBhbnkpOiBPYnNlcnZhYmxlPENvbW1vbkFwaVJlc3BvbnNlPiB7XHJcbiAgICBpZiAoIWhlYWRlcnMpIHtcclxuICAgICAgLy8gR2V0IHRoZSBoZWFkZXJzIGZvciBGb3JtRGF0YVxyXG4gICAgICBoZWFkZXJzID0gZ2V0Rm9ybURhdGFIZWFkZXJzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSWYgaGVhZGVycyBhcmUgYXZhaWxhYmxlLCBtYWtlIGEgUE9TVCByZXF1ZXN0IHRvIHVwbG9hZCB0aGUgbWVkaWEgb2JqZWN0c1xyXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0KGAke0FQSS5tdWx0aXBsZUZpbGVVcGxvYWR9YCwgcGF5bG9hZCwgaGVhZGVycyk7XHJcbiAgfVxyXG5cclxuICAvLyAvKipcclxuICAvLyAgKiBSZXRyaWV2ZXMgYSBmaWxlIGZyb20gdGhlIHNlcnZlciBieSBpdHMgbWVkaWEgSUQuXHJcbiAgLy8gICogQHBhcmFtIG1lZGlhSWQgVGhlIElEIG9mIHRoZSBtZWRpYSBmaWxlIHRvIHJldHJpZXZlLlxyXG4gIC8vICAqIEByZXR1cm5zIEFuIE9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgZmlsZSBhcyBhIEJsb2IuXHJcbiAgLy8gICovXHJcbiAgLy8gZ2V0RmlsZUJ5TWVkaWFJZChtZWRpYUlkOiBudW1iZXIsIHBhcmFtcz86IGFueSk6IE9ic2VydmFibGU8QmxvYj4ge1xyXG4gIC8vICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuICAvLyAgIGlmIChoZWFkZXJzKSB7XHJcbiAgLy8gICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UuZ2V0QmxvYihgJHtBUEkuZ2V0TWVkaWFGaWxlfT9tZWRpYUlkPSR7bWVkaWFJZH1gLCBwYXJhbXMsIGhlYWRlcnMpO1xyXG4gIC8vICAgfVxyXG4gIC8vICAgcmV0dXJuIG9mKCk7XHJcbiAgLy8gfVxyXG5cclxuICAvLyAvKipcclxuICAvLyAgKiBEb3dubG9hZHMgYWxsIGZpbGVzIGZyb20gdGhlIGdpdmVuIFVSTC5cclxuICAvLyAgKiBAcGFyYW0gZW5kUG9pbnROYW1lIFRoZSBVUkwgdG8gZG93bmxvYWQgZmlsZXMgZnJvbS5cclxuICAvLyAgKiBAcmV0dXJucyBBbiBPYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIGRvd25sb2FkZWQgZmlsZXMgYXMgYSBCbG9iLlxyXG4gIC8vICAqL1xyXG4gIC8vIGRvd25sb2FkQWxsRmlsZXMoZW5kUG9pbnROYW1lOiBhbnkpOiBPYnNlcnZhYmxlPEJsb2I+IHtcclxuICAvLyAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UuZ2V0QmxvYihlbmRQb2ludE5hbWUpO1xyXG4gIC8vIH1cclxuXHJcbiAgLy8gLyoqXHJcbiAgLy8gICogRG93bmxvYWRzIFBERiBmaWxlcyBmcm9tIHRoZSBnaXZlbiBVUkwuXHJcbiAgLy8gICogQHBhcmFtIGVuZFBvaW50TmFtZSBUaGUgVVJMIHRvIGRvd25sb2FkIFBERiBmaWxlcyBmcm9tLlxyXG4gIC8vICAqIEBwYXJhbSBkYXRhIFRoZSBkYXRhIHRvIHNlbmQgYWxvbmcgd2l0aCB0aGUgcmVxdWVzdC5cclxuICAvLyAgKiBAcmV0dXJucyBBbiBPYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIGRvd25sb2FkZWQgUERGIGZpbGVzIGFzIGEgQmxvYi5cclxuICAvLyAgKi9cclxuICAvLyBkb3dubG9hZFBkZkZpbGVzKGVuZFBvaW50TmFtZTogYW55LCBkYXRhOiBhbnkpOiBPYnNlcnZhYmxlPEJsb2I+IHtcclxuICAvLyAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcbiAgLy8gICBpZiAoaGVhZGVycykge1xyXG4gIC8vICAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3RCbG9iKGVuZFBvaW50TmFtZSwgZGF0YSwgaGVhZGVycyk7XHJcbiAgLy8gICB9XHJcbiAgLy8gICByZXR1cm4gb2YoKTtcclxuICAvLyB9XHJcblxyXG4gIC8vIC8qKlxyXG4gIC8vICAqIFJldHJpZXZlcyBhbiBpbWFnZSBmcm9tIHRoZSBzZXJ2ZXIgYnkgaXRzIG1lZGlhIElELlxyXG4gIC8vICAqIEBwYXJhbSBtZWRpYUlkIFRoZSBJRCBvZiB0aGUgbWVkaWEgZmlsZSB0byByZXRyaWV2ZS5cclxuICAvLyAgKiBAcmV0dXJucyBBbiBPYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIGltYWdlIGFzIGEgQmxvYi5cclxuICAvLyAgKi9cclxuICAvLyBnZXRJbWFnZUJ5TWVkaWFJZChtZWRpYUlkOiBhbnksIHBhcmFtcz86IGFueSk6IE9ic2VydmFibGU8QmxvYj4ge1xyXG4gIC8vICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuICAvLyAgIGlmIChoZWFkZXJzKSB7XHJcbiAgLy8gICAgIGNvbnN0IGVuZFBvaW50TmFtZSA9IGAke0FQSS5nZXRJbWFnZX0/bWVkaWFJZD0ke21lZGlhSWR9YDtcclxuICAvLyAgICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5nZXQ8QmxvYj4oZW5kUG9pbnROYW1lLCBwYXJhbXMsIGhlYWRlcnMpO1xyXG4gIC8vICAgfVxyXG4gIC8vICAgcmV0dXJuIG9mKCk7XHJcbiAgLy8gfVxyXG5cclxuICAvKipcclxuICAgKiBSZW1vdmVzIGEgZmlsZSBmcm9tIHRoZSBzZXJ2ZXIgYnkgaXRzIG1lZGlhIElELlxyXG4gICAqIEBwYXJhbSBtZWRpYUlkIFRoZSBJRCBvZiB0aGUgbWVkaWEgZmlsZSB0byByZW1vdmUuXHJcbiAgICogQHJldHVybnMgQW4gT2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSBkZWxldGVkIGZpbGUgYXMgYSBCbG9iLlxyXG4gICAqL1xyXG4gIHJlbW92ZU1lZGlhRmlsZShtZWRpYUlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPENvbW1vbkFwaVJlc3BvbnNlPiB7XHJcbiAgICAvLyBHZXQgdGhlIGhlYWRlcnMgZm9yIHRoZSByZXF1ZXN0XHJcbiAgICBjb25zdCBoZWFkZXJzID0gZ2V0SGVhZGVycygpO1xyXG5cclxuICAgIC8vIENvbnN0cnVjdCB0aGUgZW5kcG9pbnQgVVJMIHdpdGggdGhlIG1lZGlhIElEXHJcbiAgICBjb25zdCBlbmRQb2ludE5hbWUgPSBgJHtBUEkuZGVsZXRlRmlsZX0/TWVkaWFJZD0ke21lZGlhSWR9YDtcclxuXHJcbiAgICAvLyBNYWtlIHRoZSBHRVQgcmVxdWVzdCB0byBkZWxldGUgdGhlIGZpbGUgYW5kIHJldHVybiB0aGUgcmVzcG9uc2UgYXMgYSBCbG9iXHJcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3QoZW5kUG9pbnROYW1lLCB1bmRlZmluZWQsIGhlYWRlcnMpO1xyXG4gIH1cclxufSJdfQ==
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEtdXBsb2FkLmhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL3NyYy9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvaGVscGVycy9zY3JlZW4vbWVkaWEtdXBsb2FkLmhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFMUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLCtCQUErQixDQUFDOztBQUdwRCxNQUFNLE9BQU8saUJBQWlCO0lBRDlCO1FBRW1CLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7S0ErRmxEO0lBN0ZDLE1BQU07SUFDTix5Q0FBeUM7SUFDekMsb0RBQW9EO0lBQ3BELHFFQUFxRTtJQUNyRSxNQUFNO0lBQ04sdURBQXVEO0lBQ3ZELDBDQUEwQztJQUMxQyxtQkFBbUI7SUFDbkIsOEVBQThFO0lBQzlFLE1BQU07SUFDTixxQkFBcUI7SUFDckIsSUFBSTtJQUVKOzs7O09BSUc7SUFDSCxnQkFBZ0IsQ0FBQyxPQUFnQyxFQUFFLE9BQWE7UUFDOUQsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2IsK0JBQStCO1lBQy9CLE9BQU8sR0FBRyxrQkFBa0IsRUFBRSxDQUFDO1FBQ2pDLENBQUM7UUFFRCw0RUFBNEU7UUFDNUUsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQsTUFBTTtJQUNOLHVEQUF1RDtJQUN2RCwwREFBMEQ7SUFDMUQsMkRBQTJEO0lBQzNELE1BQU07SUFDTixzRUFBc0U7SUFDdEUsa0NBQWtDO0lBQ2xDLG1CQUFtQjtJQUNuQixpR0FBaUc7SUFDakcsTUFBTTtJQUNOLGlCQUFpQjtJQUNqQixJQUFJO0lBRUosTUFBTTtJQUNOLDZDQUE2QztJQUM3Qyx5REFBeUQ7SUFDekQsdUVBQXVFO0lBQ3ZFLE1BQU07SUFDTiwwREFBMEQ7SUFDMUQsa0RBQWtEO0lBQ2xELElBQUk7SUFFSixNQUFNO0lBQ04sNkNBQTZDO0lBQzdDLDZEQUE2RDtJQUM3RCwwREFBMEQ7SUFDMUQsMkVBQTJFO0lBQzNFLE1BQU07SUFDTixxRUFBcUU7SUFDckUsa0NBQWtDO0lBQ2xDLG1CQUFtQjtJQUNuQixvRUFBb0U7SUFDcEUsTUFBTTtJQUNOLGlCQUFpQjtJQUNqQixJQUFJO0lBRUosTUFBTTtJQUNOLHlEQUF5RDtJQUN6RCwwREFBMEQ7SUFDMUQsNERBQTREO0lBQzVELE1BQU07SUFDTixvRUFBb0U7SUFDcEUsa0NBQWtDO0lBQ2xDLG1CQUFtQjtJQUNuQixpRUFBaUU7SUFDakUsdUVBQXVFO0lBQ3ZFLE1BQU07SUFDTixpQkFBaUI7SUFDakIsSUFBSTtJQUVKOzs7O09BSUc7SUFDSCxlQUFlLENBQUMsT0FBZSxFQUFFLGFBQW1CO1FBQ2xELDhEQUE4RDtRQUM5RCxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFMUMsK0NBQStDO1FBQy9DLE1BQU0sWUFBWSxHQUFHLEdBQUcsR0FBRyxDQUFDLFVBQVUsWUFBWSxPQUFPLEVBQUUsQ0FBQztRQUU1RCw0RUFBNEU7UUFDNUUsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2hFLENBQUM7a0ZBL0ZVLGlCQUFpQjt1RUFBakIsaUJBQWlCLFdBQWpCLGlCQUFpQixtQkFESixNQUFNOztpRkFDbkIsaUJBQWlCO2NBRDdCLFVBQVU7ZUFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXHJcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBcGlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9odHRwLWNsaWVudC9hcGkuc2VydmljZSc7XHJcbmltcG9ydCB7IGdldEZvcm1EYXRhSGVhZGVycywgZ2V0SGVhZGVycyB9IGZyb20gJy4uLy4uL3V0aWxzL3JlcS1yZXMudXRpbCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQVBJIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2FwaS1jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBDb21tb25BcGlSZXNwb25zZSwgVXBsb2FkTWVkaWFGaWxlc1BheWxvYWQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2NvbW1vbi5pbnRlcmZhY2UnO1xyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgTWVkaWFVcGxvYWRIZWxwZXIge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgYXBpU2VydmljZSA9IGluamVjdChBcGlTZXJ2aWNlKTtcclxuXHJcbiAgLy8gLyoqXHJcbiAgLy8gICogVXBsb2FkcyBtZWRpYSBvYmplY3QgdG8gdGhlIHNlcnZlci5cclxuICAvLyAgKiBAcGFyYW0gbWVkaWFPYmplY3QgVGhlIG1lZGlhIG9iamVjdCB0byB1cGxvYWQuXHJcbiAgLy8gICogQHJldHVybnMgQW4gT2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSByZXNwb25zZSBmcm9tIHRoZSBzZXJ2ZXIuXHJcbiAgLy8gICovXHJcbiAgLy8gdXBsb2FkTWVkaWFGaWxlKG1lZGlhT2JqZWN0OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gIC8vICAgY29uc3QgaGVhZGVycyA9IGdldEZvcm1EYXRhSGVhZGVycygpO1xyXG4gIC8vICAgaWYgKGhlYWRlcnMpIHtcclxuICAvLyAgICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0KGAke0FQSS5maWxlVXBsb2FkfWAsIG1lZGlhT2JqZWN0LCBoZWFkZXJzKTtcclxuICAvLyAgIH1cclxuICAvLyAgIHJldHVybiBvZihudWxsKTtcclxuICAvLyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwbG9hZHMgbXVsdGlwbGUgbWVkaWEgb2JqZWN0cyB0byB0aGUgc2VydmVyLlxyXG4gICAqIEBwYXJhbSBwYXlsb2FkIEFuIGFycmF5IG9mIG1lZGlhIG9iamVjdHMgdG8gdXBsb2FkLlxyXG4gICAqIEByZXR1cm5zIEFuIE9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgcmVzcG9uc2UgZnJvbSB0aGUgc2VydmVyLlxyXG4gICAqL1xyXG4gIHVwbG9hZE1lZGlhRmlsZXMocGF5bG9hZDogVXBsb2FkTWVkaWFGaWxlc1BheWxvYWQsIGhlYWRlcnM/OiBhbnkpOiBPYnNlcnZhYmxlPENvbW1vbkFwaVJlc3BvbnNlPiB7XHJcbiAgICBpZiAoIWhlYWRlcnMpIHtcclxuICAgICAgLy8gR2V0IHRoZSBoZWFkZXJzIGZvciBGb3JtRGF0YVxyXG4gICAgICBoZWFkZXJzID0gZ2V0Rm9ybURhdGFIZWFkZXJzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSWYgaGVhZGVycyBhcmUgYXZhaWxhYmxlLCBtYWtlIGEgUE9TVCByZXF1ZXN0IHRvIHVwbG9hZCB0aGUgbWVkaWEgb2JqZWN0c1xyXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0KGAke0FQSS5tdWx0aXBsZUZpbGVVcGxvYWR9YCwgcGF5bG9hZCwgaGVhZGVycyk7XHJcbiAgfVxyXG5cclxuICAvLyAvKipcclxuICAvLyAgKiBSZXRyaWV2ZXMgYSBmaWxlIGZyb20gdGhlIHNlcnZlciBieSBpdHMgbWVkaWEgSUQuXHJcbiAgLy8gICogQHBhcmFtIG1lZGlhSWQgVGhlIElEIG9mIHRoZSBtZWRpYSBmaWxlIHRvIHJldHJpZXZlLlxyXG4gIC8vICAqIEByZXR1cm5zIEFuIE9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgZmlsZSBhcyBhIEJsb2IuXHJcbiAgLy8gICovXHJcbiAgLy8gZ2V0RmlsZUJ5TWVkaWFJZChtZWRpYUlkOiBudW1iZXIsIHBhcmFtcz86IGFueSk6IE9ic2VydmFibGU8QmxvYj4ge1xyXG4gIC8vICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuICAvLyAgIGlmIChoZWFkZXJzKSB7XHJcbiAgLy8gICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UuZ2V0QmxvYihgJHtBUEkuZ2V0TWVkaWFGaWxlfT9tZWRpYUlkPSR7bWVkaWFJZH1gLCBwYXJhbXMsIGhlYWRlcnMpO1xyXG4gIC8vICAgfVxyXG4gIC8vICAgcmV0dXJuIG9mKCk7XHJcbiAgLy8gfVxyXG5cclxuICAvLyAvKipcclxuICAvLyAgKiBEb3dubG9hZHMgYWxsIGZpbGVzIGZyb20gdGhlIGdpdmVuIFVSTC5cclxuICAvLyAgKiBAcGFyYW0gZW5kUG9pbnROYW1lIFRoZSBVUkwgdG8gZG93bmxvYWQgZmlsZXMgZnJvbS5cclxuICAvLyAgKiBAcmV0dXJucyBBbiBPYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIGRvd25sb2FkZWQgZmlsZXMgYXMgYSBCbG9iLlxyXG4gIC8vICAqL1xyXG4gIC8vIGRvd25sb2FkQWxsRmlsZXMoZW5kUG9pbnROYW1lOiBhbnkpOiBPYnNlcnZhYmxlPEJsb2I+IHtcclxuICAvLyAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UuZ2V0QmxvYihlbmRQb2ludE5hbWUpO1xyXG4gIC8vIH1cclxuXHJcbiAgLy8gLyoqXHJcbiAgLy8gICogRG93bmxvYWRzIFBERiBmaWxlcyBmcm9tIHRoZSBnaXZlbiBVUkwuXHJcbiAgLy8gICogQHBhcmFtIGVuZFBvaW50TmFtZSBUaGUgVVJMIHRvIGRvd25sb2FkIFBERiBmaWxlcyBmcm9tLlxyXG4gIC8vICAqIEBwYXJhbSBkYXRhIFRoZSBkYXRhIHRvIHNlbmQgYWxvbmcgd2l0aCB0aGUgcmVxdWVzdC5cclxuICAvLyAgKiBAcmV0dXJucyBBbiBPYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIGRvd25sb2FkZWQgUERGIGZpbGVzIGFzIGEgQmxvYi5cclxuICAvLyAgKi9cclxuICAvLyBkb3dubG9hZFBkZkZpbGVzKGVuZFBvaW50TmFtZTogYW55LCBkYXRhOiBhbnkpOiBPYnNlcnZhYmxlPEJsb2I+IHtcclxuICAvLyAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcbiAgLy8gICBpZiAoaGVhZGVycykge1xyXG4gIC8vICAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3RCbG9iKGVuZFBvaW50TmFtZSwgZGF0YSwgaGVhZGVycyk7XHJcbiAgLy8gICB9XHJcbiAgLy8gICByZXR1cm4gb2YoKTtcclxuICAvLyB9XHJcblxyXG4gIC8vIC8qKlxyXG4gIC8vICAqIFJldHJpZXZlcyBhbiBpbWFnZSBmcm9tIHRoZSBzZXJ2ZXIgYnkgaXRzIG1lZGlhIElELlxyXG4gIC8vICAqIEBwYXJhbSBtZWRpYUlkIFRoZSBJRCBvZiB0aGUgbWVkaWEgZmlsZSB0byByZXRyaWV2ZS5cclxuICAvLyAgKiBAcmV0dXJucyBBbiBPYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIGltYWdlIGFzIGEgQmxvYi5cclxuICAvLyAgKi9cclxuICAvLyBnZXRJbWFnZUJ5TWVkaWFJZChtZWRpYUlkOiBhbnksIHBhcmFtcz86IGFueSk6IE9ic2VydmFibGU8QmxvYj4ge1xyXG4gIC8vICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuICAvLyAgIGlmIChoZWFkZXJzKSB7XHJcbiAgLy8gICAgIGNvbnN0IGVuZFBvaW50TmFtZSA9IGAke0FQSS5nZXRJbWFnZX0/bWVkaWFJZD0ke21lZGlhSWR9YDtcclxuICAvLyAgICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5nZXQ8QmxvYj4oZW5kUG9pbnROYW1lLCBwYXJhbXMsIGhlYWRlcnMpO1xyXG4gIC8vICAgfVxyXG4gIC8vICAgcmV0dXJuIG9mKCk7XHJcbiAgLy8gfVxyXG5cclxuICAvKipcclxuICAgKiBSZW1vdmVzIGEgZmlsZSBmcm9tIHRoZSBzZXJ2ZXIgYnkgaXRzIG1lZGlhIElELlxyXG4gICAqIEBwYXJhbSBtZWRpYUlkIFRoZSBJRCBvZiB0aGUgbWVkaWEgZmlsZSB0byByZW1vdmUuXHJcbiAgICogQHJldHVybnMgQW4gT2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSBkZWxldGVkIGZpbGUgYXMgYSBCbG9iLlxyXG4gICAqL1xyXG4gIHJlbW92ZU1lZGlhRmlsZShtZWRpYUlkOiBzdHJpbmcsIGN1c3RvbUhlYWRlcnM/OiBhbnkpOiBPYnNlcnZhYmxlPENvbW1vbkFwaVJlc3BvbnNlPiB7XHJcbiAgICAvLyBHZXQgdGhlIGhlYWRlcnMgZm9yIHRoZSByZXF1ZXN0LCBtZXJnaW5nIGFueSBjdXN0b20gaGVhZGVyc1xyXG4gICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoY3VzdG9tSGVhZGVycyk7XHJcblxyXG4gICAgLy8gQ29uc3RydWN0IHRoZSBlbmRwb2ludCBVUkwgd2l0aCB0aGUgbWVkaWEgSURcclxuICAgIGNvbnN0IGVuZFBvaW50TmFtZSA9IGAke0FQSS5kZWxldGVGaWxlfT9NZWRpYUlkPSR7bWVkaWFJZH1gO1xyXG5cclxuICAgIC8vIE1ha2UgdGhlIEdFVCByZXF1ZXN0IHRvIGRlbGV0ZSB0aGUgZmlsZSBhbmQgcmV0dXJuIHRoZSByZXNwb25zZSBhcyBhIEJsb2JcclxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdChlbmRQb2ludE5hbWUsIHVuZGVmaW5lZCwgaGVhZGVycyk7XHJcbiAgfVxyXG59Il19
@@ -1,21 +1,46 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import { inject, Injectable } from '@angular/core';
3
- import { MetadataHelper } from '../common/meta-data.helpers';
2
+ import { Injectable } from '@angular/core';
3
+ import { Common } from '../../constants/common';
4
4
  import * as i0 from "@angular/core";
5
5
  export class ScreenHelper {
6
- constructor() {
7
- this.metadataHelper = inject(MetadataHelper);
8
- }
6
+ // waitForData(timeout = 5000): Promise<void> {
7
+ // return new Promise((resolve, reject) => {
8
+ // const interval = 100; // Check every 100ms
9
+ // let waited = 0;
10
+ // const checkData = () => {
11
+ // if (Common.tabJson) {
12
+ // resolve();
13
+ // } else if (waited >= timeout) {
14
+ // reject(new Error('Timeout waiting for Common.tabJson'));
15
+ // } else {
16
+ // waited += interval;
17
+ // setTimeout(checkData, interval);
18
+ // }
19
+ // };
20
+ // checkData();
21
+ // });
22
+ // }
9
23
  /**
10
24
  * Retrieves screen data based on the provided screen ID.
11
25
  * @param screenId The ID of the screen to retrieve.
12
26
  * @returns The screen data if found, otherwise null.
13
27
  */
14
28
  getScreenDetailsWithoutContainer(screenId) {
15
- return this.metadataHelper.getAppScreenByIdOrName(screenId)?.toJSON() || null;
29
+ // await this.waitForData();
30
+ const tabData = Common.tabJson;
31
+ if (tabData) {
32
+ return tabData?.AppScreens.find((t) => t?.ID == screenId.toLowerCase());
33
+ }
34
+ else
35
+ return null;
16
36
  }
17
37
  getScreen(screenId) {
18
- return this.metadataHelper.getAppScreenByIdOrName(screenId)?.toJSON() || null;
38
+ const tabData = Common.tabJson;
39
+ if (tabData) {
40
+ return tabData?.AppScreens.find((t) => t?.ID == screenId.toLowerCase());
41
+ }
42
+ else
43
+ return null;
19
44
  }
20
45
  static { this.ɵfac = function ScreenHelper_Factory(t) { return new (t || ScreenHelper)(); }; }
21
46
  static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: ScreenHelper, factory: ScreenHelper.ɵfac, providedIn: 'root' }); }
@@ -24,4 +49,4 @@ export class ScreenHelper {
24
49
  type: Injectable,
25
50
  args: [{ providedIn: 'root' }]
26
51
  }], null, null); })();
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyZWVuLmhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL3NyYy9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvaGVscGVycy9zY3JlZW4vc2NyZWVuLmhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7QUFHN0QsTUFBTSxPQUFPLFlBQVk7SUFEekI7UUFFbUIsbUJBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7S0FjMUQ7SUFaQzs7OztPQUlHO0lBQ0gsZ0NBQWdDLENBQUMsUUFBZ0I7UUFDL0MsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLElBQUksQ0FBQztJQUNoRixDQUFDO0lBRUQsU0FBUyxDQUFDLFFBQWdCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxJQUFJLENBQUM7SUFDaEYsQ0FBQzs2RUFkVSxZQUFZO3VFQUFaLFlBQVksV0FBWixZQUFZLG1CQURDLE1BQU07O2lGQUNuQixZQUFZO2NBRHhCLFVBQVU7ZUFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXHJcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNZXRhZGF0YUhlbHBlciB9IGZyb20gJy4uL2NvbW1vbi9tZXRhLWRhdGEuaGVscGVycyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgU2NyZWVuSGVscGVyIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IG1ldGFkYXRhSGVscGVyID0gaW5qZWN0KE1ldGFkYXRhSGVscGVyKTtcclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIHNjcmVlbiBkYXRhIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBzY3JlZW4gSUQuXHJcbiAgICogQHBhcmFtIHNjcmVlbklkIFRoZSBJRCBvZiB0aGUgc2NyZWVuIHRvIHJldHJpZXZlLlxyXG4gICAqIEByZXR1cm5zIFRoZSBzY3JlZW4gZGF0YSBpZiBmb3VuZCwgb3RoZXJ3aXNlIG51bGwuXHJcbiAgICovXHJcbiAgZ2V0U2NyZWVuRGV0YWlsc1dpdGhvdXRDb250YWluZXIoc2NyZWVuSWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMubWV0YWRhdGFIZWxwZXIuZ2V0QXBwU2NyZWVuQnlJZE9yTmFtZShzY3JlZW5JZCk/LnRvSlNPTigpIHx8IG51bGw7XHJcbiAgfVxyXG5cclxuICBnZXRTY3JlZW4oc2NyZWVuSWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMubWV0YWRhdGFIZWxwZXIuZ2V0QXBwU2NyZWVuQnlJZE9yTmFtZShzY3JlZW5JZCk/LnRvSlNPTigpIHx8IG51bGw7XHJcbiAgfVxyXG59XHJcbiJdfQ==
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyZWVuLmhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL3NyYy9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvaGVscGVycy9zY3JlZW4vc2NyZWVuLmhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQUdoRCxNQUFNLE9BQU8sWUFBWTtJQUN2QiwrQ0FBK0M7SUFDL0MsOENBQThDO0lBQzlDLGlEQUFpRDtJQUNqRCxzQkFBc0I7SUFFdEIsZ0NBQWdDO0lBQ2hDLDhCQUE4QjtJQUM5QixxQkFBcUI7SUFDckIsd0NBQXdDO0lBQ3hDLG1FQUFtRTtJQUNuRSxpQkFBaUI7SUFDakIsOEJBQThCO0lBQzlCLDJDQUEyQztJQUMzQyxVQUFVO0lBQ1YsU0FBUztJQUVULG1CQUFtQjtJQUNuQixRQUFRO0lBQ1IsSUFBSTtJQUNKOzs7O09BSUc7SUFDSCxnQ0FBZ0MsQ0FBQyxRQUFnQjtRQUMvQyw0QkFBNEI7UUFDNUIsTUFBTSxPQUFPLEdBQVEsTUFBTSxDQUFDLE9BQU8sQ0FBQztRQUNwQyxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osT0FBTyxPQUFPLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FDN0IsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUM1QyxDQUFDO1FBQ0osQ0FBQzs7WUFBTSxPQUFPLElBQUksQ0FBQztJQUNyQixDQUFDO0lBRUQsU0FBUyxDQUFDLFFBQWdCO1FBQ3hCLE1BQU0sT0FBTyxHQUFRLE1BQU0sQ0FBQyxPQUFPLENBQUM7UUFDcEMsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLE9BQU8sT0FBTyxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQzdCLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FDNUMsQ0FBQztRQUNKLENBQUM7O1lBQU0sT0FBTyxJQUFJLENBQUM7SUFDckIsQ0FBQzs2RUExQ1UsWUFBWTt1RUFBWixZQUFZLFdBQVosWUFBWSxtQkFEQyxNQUFNOztpRkFDbkIsWUFBWTtjQUR4QixVQUFVO2VBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbiB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9jb21tb24nO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIFNjcmVlbkhlbHBlciB7XHJcbiAgLy8gd2FpdEZvckRhdGEodGltZW91dCA9IDUwMDApOiBQcm9taXNlPHZvaWQ+IHtcclxuICAvLyAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgLy8gICAgIGNvbnN0IGludGVydmFsID0gMTAwOyAvLyBDaGVjayBldmVyeSAxMDBtc1xyXG4gIC8vICAgICBsZXQgd2FpdGVkID0gMDtcclxuICBcclxuICAvLyAgICAgY29uc3QgY2hlY2tEYXRhID0gKCkgPT4ge1xyXG4gIC8vICAgICAgIGlmIChDb21tb24udGFiSnNvbikge1xyXG4gIC8vICAgICAgICAgcmVzb2x2ZSgpO1xyXG4gIC8vICAgICAgIH0gZWxzZSBpZiAod2FpdGVkID49IHRpbWVvdXQpIHtcclxuICAvLyAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ1RpbWVvdXQgd2FpdGluZyBmb3IgQ29tbW9uLnRhYkpzb24nKSk7XHJcbiAgLy8gICAgICAgfSBlbHNlIHtcclxuICAvLyAgICAgICAgIHdhaXRlZCArPSBpbnRlcnZhbDtcclxuICAvLyAgICAgICAgIHNldFRpbWVvdXQoY2hlY2tEYXRhLCBpbnRlcnZhbCk7XHJcbiAgLy8gICAgICAgfVxyXG4gIC8vICAgICB9O1xyXG4gIFxyXG4gIC8vICAgICBjaGVja0RhdGEoKTtcclxuICAvLyAgIH0pO1xyXG4gIC8vIH1cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgc2NyZWVuIGRhdGEgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHNjcmVlbiBJRC5cclxuICAgKiBAcGFyYW0gc2NyZWVuSWQgVGhlIElEIG9mIHRoZSBzY3JlZW4gdG8gcmV0cmlldmUuXHJcbiAgICogQHJldHVybnMgVGhlIHNjcmVlbiBkYXRhIGlmIGZvdW5kLCBvdGhlcndpc2UgbnVsbC5cclxuICAgKi9cclxuICBnZXRTY3JlZW5EZXRhaWxzV2l0aG91dENvbnRhaW5lcihzY3JlZW5JZDogc3RyaW5nKSB7XHJcbiAgICAvLyBhd2FpdCB0aGlzLndhaXRGb3JEYXRhKCk7XHJcbiAgICBjb25zdCB0YWJEYXRhOiBhbnkgPSBDb21tb24udGFiSnNvbjtcclxuICAgIGlmICh0YWJEYXRhKSB7XHJcbiAgICAgIHJldHVybiB0YWJEYXRhPy5BcHBTY3JlZW5zLmZpbmQoXHJcbiAgICAgICAgKHQ6IGFueSkgPT4gdD8uSUQgPT0gc2NyZWVuSWQudG9Mb3dlckNhc2UoKVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2NyZWVuKHNjcmVlbklkOiBzdHJpbmcpIHsgICAgXHJcbiAgICBjb25zdCB0YWJEYXRhOiBhbnkgPSBDb21tb24udGFiSnNvbjtcclxuICAgIGlmICh0YWJEYXRhKSB7XHJcbiAgICAgIHJldHVybiB0YWJEYXRhPy5BcHBTY3JlZW5zLmZpbmQoXHJcbiAgICAgICAgKHQ6IGFueSkgPT4gdD8uSUQgPT0gc2NyZWVuSWQudG9Mb3dlckNhc2UoKVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHJldHVybiBudWxsO1xyXG4gIH1cclxufVxyXG4iXX0=