@payloadcms/db-postgres 0.8.0 → 0.8.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (123) hide show
  1. package/dist/connect.js +1 -1
  2. package/dist/count.d.ts +3 -0
  3. package/dist/count.d.ts.map +1 -0
  4. package/dist/count.js +65 -0
  5. package/dist/create.d.ts.map +1 -1
  6. package/dist/create.js +9 -6
  7. package/dist/createGlobal.d.ts.map +1 -1
  8. package/dist/createGlobal.js +9 -6
  9. package/dist/createGlobalVersion.d.ts.map +1 -1
  10. package/dist/createGlobalVersion.js +11 -10
  11. package/dist/createMigration.js +1 -1
  12. package/dist/createVersion.d.ts.map +1 -1
  13. package/dist/createVersion.js +22 -21
  14. package/dist/deleteMany.d.ts.map +1 -1
  15. package/dist/deleteMany.js +8 -6
  16. package/dist/deleteOne.d.ts.map +1 -1
  17. package/dist/deleteOne.js +3 -6
  18. package/dist/deleteVersions.d.ts.map +1 -1
  19. package/dist/deleteVersions.js +8 -7
  20. package/dist/destroy.js +1 -1
  21. package/dist/find/buildFindManyArgs.js +1 -1
  22. package/dist/find/chainMethods.js +1 -1
  23. package/dist/find/findMany.js +1 -1
  24. package/dist/find/traverseFields.d.ts.map +1 -1
  25. package/dist/find/traverseFields.js +13 -22
  26. package/dist/find.d.ts.map +1 -1
  27. package/dist/find.js +8 -6
  28. package/dist/findGlobal.d.ts.map +1 -1
  29. package/dist/findGlobal.js +8 -6
  30. package/dist/findGlobalVersions.d.ts.map +1 -1
  31. package/dist/findGlobalVersions.js +8 -7
  32. package/dist/findOne.d.ts.map +1 -1
  33. package/dist/findOne.js +8 -6
  34. package/dist/findVersions.d.ts.map +1 -1
  35. package/dist/findVersions.js +8 -7
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +8 -8
  38. package/dist/init.d.ts.map +1 -1
  39. package/dist/init.js +10 -8
  40. package/dist/migrate.js +1 -1
  41. package/dist/migrateDown.js +1 -1
  42. package/dist/migrateFresh.js +1 -1
  43. package/dist/migrateRefresh.js +1 -1
  44. package/dist/migrateReset.js +1 -1
  45. package/dist/migrateStatus.js +1 -1
  46. package/dist/queries/buildAndOrConditions.js +1 -1
  47. package/dist/queries/buildQuery.js +1 -1
  48. package/dist/queries/createJSONQuery/convertPathToJSONTraversal.js +1 -1
  49. package/dist/queries/createJSONQuery/formatJSONPathSegment.js +1 -1
  50. package/dist/queries/createJSONQuery/index.js +1 -1
  51. package/dist/queries/getTableColumnFromPath.d.ts.map +1 -1
  52. package/dist/queries/getTableColumnFromPath.js +12 -41
  53. package/dist/queries/operatorMap.js +1 -1
  54. package/dist/queries/parseParams.js +2 -2
  55. package/dist/queries/sanitizeQueryValue.js +1 -1
  56. package/dist/queries/selectDistinct.js +1 -1
  57. package/dist/queryDrafts.d.ts.map +1 -1
  58. package/dist/queryDrafts.js +8 -7
  59. package/dist/schema/build.d.ts +4 -3
  60. package/dist/schema/build.d.ts.map +1 -1
  61. package/dist/schema/build.js +86 -45
  62. package/dist/schema/createIndex.js +1 -1
  63. package/dist/schema/{getTableName.d.ts → createTableName.d.ts} +5 -7
  64. package/dist/schema/createTableName.d.ts.map +1 -0
  65. package/dist/schema/createTableName.js +43 -0
  66. package/dist/schema/idToUUID.js +1 -1
  67. package/dist/schema/parentIDColumnMap.js +1 -1
  68. package/dist/schema/setColumnID.js +1 -1
  69. package/dist/schema/traverseFields.d.ts.map +1 -1
  70. package/dist/schema/traverseFields.js +43 -23
  71. package/dist/schema/validateExistingBlockIsIdentical.d.ts.map +1 -1
  72. package/dist/schema/validateExistingBlockIsIdentical.js +4 -4
  73. package/dist/transactions/beginTransaction.js +1 -1
  74. package/dist/transactions/commitTransaction.js +1 -1
  75. package/dist/transactions/rollbackTransaction.js +1 -1
  76. package/dist/transform/read/hasManyNumber.js +1 -1
  77. package/dist/transform/read/hasManyText.d.ts +2 -2
  78. package/dist/transform/read/hasManyText.d.ts.map +1 -1
  79. package/dist/transform/read/hasManyText.js +2 -2
  80. package/dist/transform/read/index.js +3 -3
  81. package/dist/transform/read/relationship.js +1 -1
  82. package/dist/transform/read/traverseFields.js +1 -1
  83. package/dist/transform/write/array.d.ts +2 -2
  84. package/dist/transform/write/array.d.ts.map +1 -1
  85. package/dist/transform/write/array.js +4 -4
  86. package/dist/transform/write/blocks.js +2 -2
  87. package/dist/transform/write/index.js +5 -5
  88. package/dist/transform/write/numbers.js +1 -1
  89. package/dist/transform/write/relationships.js +1 -1
  90. package/dist/transform/write/selects.js +1 -1
  91. package/dist/transform/write/texts.js +3 -3
  92. package/dist/transform/write/traverseFields.d.ts.map +1 -1
  93. package/dist/transform/write/traverseFields.js +6 -15
  94. package/dist/transform/write/types.d.ts +1 -1
  95. package/dist/transform/write/types.d.ts.map +1 -1
  96. package/dist/transform/write/types.js +1 -1
  97. package/dist/types.d.ts +3 -6
  98. package/dist/types.d.ts.map +1 -1
  99. package/dist/types.js +1 -1
  100. package/dist/update.d.ts.map +1 -1
  101. package/dist/update.js +3 -6
  102. package/dist/updateGlobal.d.ts.map +1 -1
  103. package/dist/updateGlobal.js +8 -6
  104. package/dist/updateGlobalVersion.d.ts.map +1 -1
  105. package/dist/updateGlobalVersion.js +3 -7
  106. package/dist/updateVersion.d.ts.map +1 -1
  107. package/dist/updateVersion.js +3 -7
  108. package/dist/upsertRow/deleteExistingArrayRows.js +1 -1
  109. package/dist/upsertRow/deleteExistingRowsByPath.js +1 -1
  110. package/dist/upsertRow/index.js +3 -3
  111. package/dist/upsertRow/insertArrays.js +2 -2
  112. package/dist/upsertRow/types.js +1 -1
  113. package/dist/utilities/appendPrefixToKeys.js +1 -1
  114. package/dist/utilities/createBlocksMap.js +1 -1
  115. package/dist/utilities/createMigrationTable.js +1 -1
  116. package/dist/utilities/createRelationshipMap.js +1 -1
  117. package/dist/utilities/hasLocalesTable.js +1 -1
  118. package/dist/utilities/isArrayOfRows.js +1 -1
  119. package/dist/utilities/migrationTableExists.js +1 -1
  120. package/dist/utilities/parseError.js +1 -1
  121. package/package.json +2 -2
  122. package/dist/schema/getTableName.d.ts.map +0 -1
  123. package/dist/schema/getTableName.js +0 -43
@@ -16,7 +16,7 @@ const _tosnakecase = /*#__PURE__*/ _interop_require_default(require("to-snake-ca
16
16
  const _hasLocalesTable = require("../utilities/hasLocalesTable");
17
17
  const _build = require("./build");
18
18
  const _createIndex = require("./createIndex");
19
- const _getTableName = require("./getTableName");
19
+ const _createTableName = require("./createTableName");
20
20
  const _idToUUID = require("./idToUUID");
21
21
  const _parentIDColumnMap = require("./parentIDColumnMap");
22
22
  const _validateExistingBlockIsIdentical = require("./validateExistingBlockIsIdentical");
@@ -145,14 +145,13 @@ const traverseFields = ({ adapter, buildNumbers, buildRelationships, buildTexts,
145
145
  case 'radio':
146
146
  case 'select':
147
147
  {
148
- const enumName = (0, _getTableName.getTableName)({
148
+ const enumName = (0, _createTableName.createTableName)({
149
149
  adapter,
150
150
  config: field,
151
151
  parentTableName: newTableName,
152
152
  prefix: `enum_${newTableName}_`,
153
153
  target: 'enumName',
154
- throwValidationError,
155
- versions
154
+ throwValidationError
156
155
  });
157
156
  adapter.enums[enumName] = (0, _pgcore.pgEnum)(enumName, field.options.map((option)=>{
158
157
  if ((0, _types.optionIsObject)(option)) {
@@ -161,23 +160,29 @@ const traverseFields = ({ adapter, buildNumbers, buildRelationships, buildTexts,
161
160
  return option;
162
161
  }));
163
162
  if (field.type === 'select' && field.hasMany) {
164
- const selectTableName = (0, _getTableName.getTableName)({
163
+ const selectTableName = (0, _createTableName.createTableName)({
165
164
  adapter,
166
165
  config: field,
167
166
  parentTableName: newTableName,
168
167
  prefix: `${newTableName}_`,
169
- throwValidationError,
170
- versions
168
+ throwValidationError
171
169
  });
172
170
  const baseColumns = {
173
171
  order: (0, _pgcore.integer)('order').notNull(),
174
- parent: _parentIDColumnMap.parentIDColumnMap[parentIDColType]('parent_id').references(()=>adapter.tables[parentTableName].id, {
175
- onDelete: 'cascade'
176
- }).notNull(),
172
+ parent: _parentIDColumnMap.parentIDColumnMap[parentIDColType]('parent_id').notNull(),
177
173
  value: adapter.enums[enumName]('value')
178
174
  };
179
175
  const baseExtraConfig = {
180
176
  orderIdx: (cols)=>(0, _pgcore.index)(`${selectTableName}_order_idx`).on(cols.order),
177
+ parentFk: (cols)=>(0, _pgcore.foreignKey)({
178
+ name: `${selectTableName}_parent_fk`,
179
+ columns: [
180
+ cols.parent
181
+ ],
182
+ foreignColumns: [
183
+ adapter.tables[parentTableName].id
184
+ ]
185
+ }),
181
186
  parentIdx: (cols)=>(0, _pgcore.index)(`${selectTableName}_parent_idx`).on(cols.parent)
182
187
  };
183
188
  if (field.localized) {
@@ -225,21 +230,29 @@ const traverseFields = ({ adapter, buildNumbers, buildRelationships, buildTexts,
225
230
  case 'array':
226
231
  {
227
232
  const disableNotNullFromHere = Boolean(field.admin?.condition) || disableNotNull;
228
- const arrayTableName = (0, _getTableName.getTableName)({
233
+ const arrayTableName = (0, _createTableName.createTableName)({
229
234
  adapter,
230
235
  config: field,
231
236
  parentTableName: newTableName,
232
237
  prefix: `${newTableName}_`,
233
- throwValidationError
238
+ throwValidationError,
239
+ versionsCustomName: versions
234
240
  });
235
241
  const baseColumns = {
236
242
  _order: (0, _pgcore.integer)('_order').notNull(),
237
- _parentID: _parentIDColumnMap.parentIDColumnMap[parentIDColType]('_parent_id').references(()=>adapter.tables[parentTableName].id, {
238
- onDelete: 'cascade'
239
- }).notNull()
243
+ _parentID: _parentIDColumnMap.parentIDColumnMap[parentIDColType]('_parent_id').notNull()
240
244
  };
241
245
  const baseExtraConfig = {
242
246
  _orderIdx: (cols)=>(0, _pgcore.index)(`${arrayTableName}_order_idx`).on(cols._order),
247
+ _parentIDFk: (cols)=>(0, _pgcore.foreignKey)({
248
+ name: `${arrayTableName}_parent_id_fk`,
249
+ columns: [
250
+ cols['_parentID']
251
+ ],
252
+ foreignColumns: [
253
+ adapter.tables[parentTableName].id
254
+ ]
255
+ }).onDelete('cascade'),
243
256
  _parentIDIdx: (cols)=>(0, _pgcore.index)(`${arrayTableName}_parent_id_idx`).on(cols._parentID)
244
257
  };
245
258
  if (field.localized && adapter.payload.config.localization) {
@@ -293,24 +306,32 @@ const traverseFields = ({ adapter, buildNumbers, buildRelationships, buildTexts,
293
306
  {
294
307
  const disableNotNullFromHere = Boolean(field.admin?.condition) || disableNotNull;
295
308
  field.blocks.forEach((block)=>{
296
- const blockTableName = (0, _getTableName.getTableName)({
309
+ const blockTableName = (0, _createTableName.createTableName)({
297
310
  adapter,
298
311
  config: block,
299
312
  parentTableName: rootTableName,
300
313
  prefix: `${rootTableName}_blocks_`,
301
- throwValidationError
314
+ throwValidationError,
315
+ versionsCustomName: versions
302
316
  });
303
317
  if (!adapter.tables[blockTableName]) {
304
318
  const baseColumns = {
305
319
  _order: (0, _pgcore.integer)('_order').notNull(),
306
- _parentID: _parentIDColumnMap.parentIDColumnMap[rootTableIDColType]('_parent_id').references(()=>adapter.tables[rootTableName].id, {
307
- onDelete: 'cascade'
308
- }).notNull(),
320
+ _parentID: _parentIDColumnMap.parentIDColumnMap[rootTableIDColType]('_parent_id').notNull(),
309
321
  _path: (0, _pgcore.text)('_path').notNull()
310
322
  };
311
323
  const baseExtraConfig = {
312
324
  _orderIdx: (cols)=>(0, _pgcore.index)(`${blockTableName}_order_idx`).on(cols._order),
313
325
  _parentIDIdx: (cols)=>(0, _pgcore.index)(`${blockTableName}_parent_id_idx`).on(cols._parentID),
326
+ _parentIdFk: (cols)=>(0, _pgcore.foreignKey)({
327
+ name: `${blockTableName}_parent_id_fk`,
328
+ columns: [
329
+ cols._parentID
330
+ ],
331
+ foreignColumns: [
332
+ adapter.tables[rootTableName].id
333
+ ]
334
+ }).onDelete('cascade'),
314
335
  _pathIdx: (cols)=>(0, _pgcore.index)(`${blockTableName}_path_idx`).on(cols._path)
315
336
  };
316
337
  if (field.localized && adapter.payload.config.localization) {
@@ -366,7 +387,6 @@ const traverseFields = ({ adapter, buildNumbers, buildRelationships, buildTexts,
366
387
  tableLocales: adapter.tables[`${blockTableName}${adapter.localesSuffix}`]
367
388
  });
368
389
  }
369
- adapter.blockTableNames[`${rootTableName}.${(0, _tosnakecase.default)(block.slug)}`] = blockTableName;
370
390
  rootRelationsToBuild.set(`_blocks_${block.slug}`, blockTableName);
371
391
  });
372
392
  break;
@@ -497,7 +517,7 @@ const traverseFields = ({ adapter, buildNumbers, buildRelationships, buildTexts,
497
517
  indexes,
498
518
  localesColumns,
499
519
  localesIndexes,
500
- newTableName: parentTableName,
520
+ newTableName,
501
521
  parentTableName,
502
522
  relationsToBuild,
503
523
  relationships,
@@ -543,4 +563,4 @@ const traverseFields = ({ adapter, buildNumbers, buildRelationships, buildTexts,
543
563
  };
544
564
  };
545
565
 
546
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2hlbWEvdHJhdmVyc2VGaWVsZHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCB0eXBlIHsgUmVsYXRpb24gfSBmcm9tICdkcml6emxlLW9ybSdcbmltcG9ydCB0eXBlIHsgSW5kZXhCdWlsZGVyLCBQZ0NvbHVtbkJ1aWxkZXIsIFVuaXF1ZUNvbnN0cmFpbnRCdWlsZGVyIH0gZnJvbSAnZHJpenpsZS1vcm0vcGctY29yZSdcbmltcG9ydCB0eXBlIHsgRmllbGQsIFRhYkFzRmllbGQgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgeyByZWxhdGlvbnMgfSBmcm9tICdkcml6emxlLW9ybSdcbmltcG9ydCB7XG4gIFBnTnVtZXJpY0J1aWxkZXIsXG4gIFBnVVVJREJ1aWxkZXIsXG4gIFBnVmFyY2hhckJ1aWxkZXIsXG4gIGJvb2xlYW4sXG4gIGluZGV4LFxuICBpbnRlZ2VyLFxuICBqc29uYixcbiAgbnVtZXJpYyxcbiAgcGdFbnVtLFxuICB0ZXh0LFxuICB0aW1lc3RhbXAsXG4gIHZhcmNoYXIsXG59IGZyb20gJ2RyaXp6bGUtb3JtL3BnLWNvcmUnXG5pbXBvcnQgeyBJbnZhbGlkQ29uZmlndXJhdGlvbiB9IGZyb20gJ3BheWxvYWQvZXJyb3JzJ1xuaW1wb3J0IHsgZmllbGRBZmZlY3RzRGF0YSwgb3B0aW9uSXNPYmplY3QgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuaW1wb3J0IHRvU25ha2VDYXNlIGZyb20gJ3RvLXNuYWtlLWNhc2UnXG5cbmltcG9ydCB0eXBlIHsgR2VuZXJpY0NvbHVtbnMsIElEVHlwZSwgUG9zdGdyZXNBZGFwdGVyIH0gZnJvbSAnLi4vdHlwZXMnXG5cbmltcG9ydCB7IGhhc0xvY2FsZXNUYWJsZSB9IGZyb20gJy4uL3V0aWxpdGllcy9oYXNMb2NhbGVzVGFibGUnXG5pbXBvcnQgeyBidWlsZFRhYmxlIH0gZnJvbSAnLi9idWlsZCdcbmltcG9ydCB7IGNyZWF0ZUluZGV4IH0gZnJvbSAnLi9jcmVhdGVJbmRleCdcbmltcG9ydCB7IGdldFRhYmxlTmFtZSB9IGZyb20gJy4vZ2V0VGFibGVOYW1lJ1xuaW1wb3J0IHsgaWRUb1VVSUQgfSBmcm9tICcuL2lkVG9VVUlEJ1xuaW1wb3J0IHsgcGFyZW50SURDb2x1bW5NYXAgfSBmcm9tICcuL3BhcmVudElEQ29sdW1uTWFwJ1xuaW1wb3J0IHsgdmFsaWRhdGVFeGlzdGluZ0Jsb2NrSXNJZGVudGljYWwgfSBmcm9tICcuL3ZhbGlkYXRlRXhpc3RpbmdCbG9ja0lzSWRlbnRpY2FsJ1xuXG50eXBlIEFyZ3MgPSB7XG4gIGFkYXB0ZXI6IFBvc3RncmVzQWRhcHRlclxuICBidWlsZE51bWJlcnM6IGJvb2xlYW5cbiAgYnVpbGRSZWxhdGlvbnNoaXBzOiBib29sZWFuXG4gIGJ1aWxkVGV4dHM6IGJvb2xlYW5cbiAgY29sdW1uUHJlZml4Pzogc3RyaW5nXG4gIGNvbHVtbnM6IFJlY29yZDxzdHJpbmcsIFBnQ29sdW1uQnVpbGRlcj5cbiAgZGlzYWJsZU5vdE51bGw6IGJvb2xlYW5cbiAgZGlzYWJsZVVuaXF1ZT86IGJvb2xlYW5cbiAgZmllbGRQcmVmaXg/OiBzdHJpbmdcbiAgZmllbGRzOiAoRmllbGQgfCBUYWJBc0ZpZWxkKVtdXG4gIGZvcmNlTG9jYWxpemVkPzogYm9vbGVhblxuICBpbmRleGVzOiBSZWNvcmQ8c3RyaW5nLCAoY29sczogR2VuZXJpY0NvbHVtbnMpID0+IEluZGV4QnVpbGRlcj5cbiAgbG9jYWxlc0NvbHVtbnM6IFJlY29yZDxzdHJpbmcsIFBnQ29sdW1uQnVpbGRlcj5cbiAgbG9jYWxlc0luZGV4ZXM6IFJlY29yZDxzdHJpbmcsIChjb2xzOiBHZW5lcmljQ29sdW1ucykgPT4gSW5kZXhCdWlsZGVyPlxuICBuZXdUYWJsZU5hbWU6IHN0cmluZ1xuICBwYXJlbnRUYWJsZU5hbWU6IHN0cmluZ1xuICByZWxhdGlvbnNUb0J1aWxkOiBNYXA8c3RyaW5nLCBzdHJpbmc+XG4gIHJlbGF0aW9uc2hpcHM6IFNldDxzdHJpbmc+XG4gIHJvb3RSZWxhdGlvbnNUb0J1aWxkPzogTWFwPHN0cmluZywgc3RyaW5nPlxuICByb290VGFibGVJRENvbFR5cGU6IHN0cmluZ1xuICByb290VGFibGVOYW1lOiBzdHJpbmdcbiAgdmVyc2lvbnM6IGJvb2xlYW5cbn1cblxudHlwZSBSZXN1bHQgPSB7XG4gIGhhc0xvY2FsaXplZEZpZWxkOiBib29sZWFuXG4gIGhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZDogYm9vbGVhblxuICBoYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkOiBib29sZWFuXG4gIGhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkOiBib29sZWFuXG4gIGhhc01hbnlOdW1iZXJGaWVsZDogJ2luZGV4JyB8IGJvb2xlYW5cbiAgaGFzTWFueVRleHRGaWVsZDogJ2luZGV4JyB8IGJvb2xlYW5cbn1cblxuZXhwb3J0IGNvbnN0IHRyYXZlcnNlRmllbGRzID0gKHtcbiAgYWRhcHRlcixcbiAgYnVpbGROdW1iZXJzLFxuICBidWlsZFJlbGF0aW9uc2hpcHMsXG4gIGJ1aWxkVGV4dHMsXG4gIGNvbHVtblByZWZpeCxcbiAgY29sdW1ucyxcbiAgZGlzYWJsZU5vdE51bGwsXG4gIGRpc2FibGVVbmlxdWUgPSBmYWxzZSxcbiAgZmllbGRQcmVmaXgsXG4gIGZpZWxkcyxcbiAgZm9yY2VMb2NhbGl6ZWQsXG4gIGluZGV4ZXMsXG4gIGxvY2FsZXNDb2x1bW5zLFxuICBsb2NhbGVzSW5kZXhlcyxcbiAgbmV3VGFibGVOYW1lLFxuICBwYXJlbnRUYWJsZU5hbWUsXG4gIHJlbGF0aW9uc1RvQnVpbGQsXG4gIHJlbGF0aW9uc2hpcHMsXG4gIHJvb3RSZWxhdGlvbnNUb0J1aWxkLFxuICByb290VGFibGVJRENvbFR5cGUsXG4gIHJvb3RUYWJsZU5hbWUsXG4gIHZlcnNpb25zLFxufTogQXJncyk6IFJlc3VsdCA9PiB7XG4gIGNvbnN0IHRocm93VmFsaWRhdGlvbkVycm9yID0gdHJ1ZVxuICBsZXQgaGFzTG9jYWxpemVkRmllbGQgPSBmYWxzZVxuICBsZXQgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQgPSBmYWxzZVxuICBsZXQgaGFzTWFueVRleHRGaWVsZDogJ2luZGV4JyB8IGJvb2xlYW4gPSBmYWxzZVxuICBsZXQgaGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCA9IGZhbHNlXG4gIGxldCBoYXNNYW55TnVtYmVyRmllbGQ6ICdpbmRleCcgfCBib29sZWFuID0gZmFsc2VcbiAgbGV0IGhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCA9IGZhbHNlXG5cbiAgbGV0IHBhcmVudElEQ29sVHlwZTogSURUeXBlID0gJ2ludGVnZXInXG4gIGlmIChjb2x1bW5zLmlkIGluc3RhbmNlb2YgUGdVVUlEQnVpbGRlcikgcGFyZW50SURDb2xUeXBlID0gJ3V1aWQnXG4gIGlmIChjb2x1bW5zLmlkIGluc3RhbmNlb2YgUGdOdW1lcmljQnVpbGRlcikgcGFyZW50SURDb2xUeXBlID0gJ251bWVyaWMnXG4gIGlmIChjb2x1bW5zLmlkIGluc3RhbmNlb2YgUGdWYXJjaGFyQnVpbGRlcikgcGFyZW50SURDb2xUeXBlID0gJ3ZhcmNoYXInXG5cbiAgZmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XG4gICAgaWYgKCduYW1lJyBpbiBmaWVsZCAmJiBmaWVsZC5uYW1lID09PSAnaWQnKSByZXR1cm5cbiAgICBsZXQgY29sdW1uTmFtZTogc3RyaW5nXG4gICAgbGV0IGZpZWxkTmFtZTogc3RyaW5nXG5cbiAgICBsZXQgdGFyZ2V0VGFibGUgPSBjb2x1bW5zXG4gICAgbGV0IHRhcmdldEluZGV4ZXMgPSBpbmRleGVzXG5cbiAgICBpZiAoZmllbGRBZmZlY3RzRGF0YShmaWVsZCkpIHtcbiAgICAgIGNvbHVtbk5hbWUgPSBgJHtjb2x1bW5QcmVmaXggfHwgJyd9JHtmaWVsZC5uYW1lWzBdID09PSAnXycgPyAnXycgOiAnJ30ke3RvU25ha2VDYXNlKFxuICAgICAgICBmaWVsZC5uYW1lLFxuICAgICAgKX1gXG4gICAgICBmaWVsZE5hbWUgPSBgJHtmaWVsZFByZWZpeD8ucmVwbGFjZSgnLicsICdfJykgfHwgJyd9JHtmaWVsZC5uYW1lfWBcblxuICAgICAgLy8gSWYgZmllbGQgaXMgbG9jYWxpemVkLFxuICAgICAgLy8gYWRkIHRoZSBjb2x1bW4gdG8gdGhlIGxvY2FsZSB0YWJsZSBpbnN0ZWFkIG9mIG1haW4gdGFibGVcbiAgICAgIGlmIChhZGFwdGVyLnBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbiAmJiAoZmllbGQubG9jYWxpemVkIHx8IGZvcmNlTG9jYWxpemVkKSkge1xuICAgICAgICBoYXNMb2NhbGl6ZWRGaWVsZCA9IHRydWVcbiAgICAgICAgdGFyZ2V0VGFibGUgPSBsb2NhbGVzQ29sdW1uc1xuICAgICAgICB0YXJnZXRJbmRleGVzID0gbG9jYWxlc0luZGV4ZXNcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICAoZmllbGQudW5pcXVlIHx8IGZpZWxkLmluZGV4KSAmJlxuICAgICAgICAhWydhcnJheScsICdibG9ja3MnLCAnZ3JvdXAnLCAncG9pbnQnLCAncmVsYXRpb25zaGlwJywgJ3VwbG9hZCddLmluY2x1ZGVzKGZpZWxkLnR5cGUpICYmXG4gICAgICAgICEoJ2hhc01hbnknIGluIGZpZWxkICYmIGZpZWxkLmhhc01hbnkgPT09IHRydWUpXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgdW5pcXVlID0gZGlzYWJsZVVuaXF1ZSAhPT0gdHJ1ZSAmJiBmaWVsZC51bmlxdWVcbiAgICAgICAgaWYgKHVuaXF1ZSkge1xuICAgICAgICAgIGNvbnN0IGNvbnN0cmFpbnRWYWx1ZSA9IGAke2ZpZWxkUHJlZml4IHx8ICcnfSR7ZmllbGQubmFtZX1gXG4gICAgICAgICAgaWYgKCFhZGFwdGVyLmZpZWxkQ29uc3RyYWludHM/Lltyb290VGFibGVOYW1lXSkge1xuICAgICAgICAgICAgYWRhcHRlci5maWVsZENvbnN0cmFpbnRzW3Jvb3RUYWJsZU5hbWVdID0ge31cbiAgICAgICAgICB9XG4gICAgICAgICAgYWRhcHRlci5maWVsZENvbnN0cmFpbnRzW3Jvb3RUYWJsZU5hbWVdW2Ake2NvbHVtbk5hbWV9X2lkeGBdID0gY29uc3RyYWludFZhbHVlXG4gICAgICAgIH1cbiAgICAgICAgdGFyZ2V0SW5kZXhlc1tgJHtuZXdUYWJsZU5hbWV9XyR7ZmllbGQubmFtZX1JZHhgXSA9IGNyZWF0ZUluZGV4KHtcbiAgICAgICAgICBuYW1lOiBmaWVsZE5hbWUsXG4gICAgICAgICAgY29sdW1uTmFtZSxcbiAgICAgICAgICB0YWJsZU5hbWU6IG5ld1RhYmxlTmFtZSxcbiAgICAgICAgICB1bmlxdWUsXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuXG4gICAgc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgICBjYXNlICd0ZXh0Jzoge1xuICAgICAgICBpZiAoZmllbGQuaGFzTWFueSkge1xuICAgICAgICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQpIHtcbiAgICAgICAgICAgIGhhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQgPSB0cnVlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGZpZWxkLmluZGV4KSB7XG4gICAgICAgICAgICBoYXNNYW55VGV4dEZpZWxkID0gJ2luZGV4J1xuICAgICAgICAgIH0gZWxzZSBpZiAoIWhhc01hbnlUZXh0RmllbGQpIHtcbiAgICAgICAgICAgIGhhc01hbnlUZXh0RmllbGQgPSB0cnVlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGZpZWxkLnVuaXF1ZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRDb25maWd1cmF0aW9uKFxuICAgICAgICAgICAgICAnVW5pcXVlIGlzIG5vdCBzdXBwb3J0ZWQgaW4gUG9zdGdyZXMgZm9yIGhhc01hbnkgdGV4dCBmaWVsZHMuJyxcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGFyZ2V0VGFibGVbZmllbGROYW1lXSA9IHZhcmNoYXIoY29sdW1uTmFtZSlcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgY2FzZSAnZW1haWwnOlxuICAgICAgY2FzZSAnY29kZSc6XG4gICAgICBjYXNlICd0ZXh0YXJlYSc6IHtcbiAgICAgICAgdGFyZ2V0VGFibGVbZmllbGROYW1lXSA9IHZhcmNoYXIoY29sdW1uTmFtZSlcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAnbnVtYmVyJzoge1xuICAgICAgICBpZiAoZmllbGQuaGFzTWFueSkge1xuICAgICAgICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQpIHtcbiAgICAgICAgICAgIGhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCA9IHRydWVcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoZmllbGQuaW5kZXgpIHtcbiAgICAgICAgICAgIGhhc01hbnlOdW1iZXJGaWVsZCA9ICdpbmRleCdcbiAgICAgICAgICB9IGVsc2UgaWYgKCFoYXNNYW55TnVtYmVyRmllbGQpIHtcbiAgICAgICAgICAgIGhhc01hbnlOdW1iZXJGaWVsZCA9IHRydWVcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoZmllbGQudW5pcXVlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZENvbmZpZ3VyYXRpb24oXG4gICAgICAgICAgICAgICdVbmlxdWUgaXMgbm90IHN1cHBvcnRlZCBpbiBQb3N0Z3JlcyBmb3IgaGFzTWFueSBudW1iZXIgZmllbGRzLicsXG4gICAgICAgICAgICApXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRhcmdldFRhYmxlW2ZpZWxkTmFtZV0gPSBudW1lcmljKGNvbHVtbk5hbWUpXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAncmljaFRleHQnOlxuICAgICAgY2FzZSAnanNvbic6IHtcbiAgICAgICAgdGFyZ2V0VGFibGVbZmllbGROYW1lXSA9IGpzb25iKGNvbHVtbk5hbWUpXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ2RhdGUnOiB7XG4gICAgICAgIHRhcmdldFRhYmxlW2ZpZWxkTmFtZV0gPSB0aW1lc3RhbXAoY29sdW1uTmFtZSwge1xuICAgICAgICAgIG1vZGU6ICdzdHJpbmcnLFxuICAgICAgICAgIHByZWNpc2lvbjogMyxcbiAgICAgICAgICB3aXRoVGltZXpvbmU6IHRydWUsXG4gICAgICAgIH0pXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ3BvaW50Jzoge1xuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICdyYWRpbyc6XG4gICAgICBjYXNlICdzZWxlY3QnOiB7XG4gICAgICAgIGNvbnN0IGVudW1OYW1lID0gZ2V0VGFibGVOYW1lKHtcbiAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgIGNvbmZpZzogZmllbGQsXG4gICAgICAgICAgcGFyZW50VGFibGVOYW1lOiBuZXdUYWJsZU5hbWUsXG4gICAgICAgICAgcHJlZml4OiBgZW51bV8ke25ld1RhYmxlTmFtZX1fYCxcbiAgICAgICAgICB0YXJnZXQ6ICdlbnVtTmFtZScsXG4gICAgICAgICAgdGhyb3dWYWxpZGF0aW9uRXJyb3IsXG4gICAgICAgICAgdmVyc2lvbnMsXG4gICAgICAgIH0pXG5cbiAgICAgICAgYWRhcHRlci5lbnVtc1tlbnVtTmFtZV0gPSBwZ0VudW0oXG4gICAgICAgICAgZW51bU5hbWUsXG4gICAgICAgICAgZmllbGQub3B0aW9ucy5tYXAoKG9wdGlvbikgPT4ge1xuICAgICAgICAgICAgaWYgKG9wdGlvbklzT2JqZWN0KG9wdGlvbikpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbi52YWx1ZVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gb3B0aW9uXG4gICAgICAgICAgfSkgYXMgW3N0cmluZywgLi4uc3RyaW5nW11dLFxuICAgICAgICApXG5cbiAgICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICdzZWxlY3QnICYmIGZpZWxkLmhhc01hbnkpIHtcbiAgICAgICAgICBjb25zdCBzZWxlY3RUYWJsZU5hbWUgPSBnZXRUYWJsZU5hbWUoe1xuICAgICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICAgIGNvbmZpZzogZmllbGQsXG4gICAgICAgICAgICBwYXJlbnRUYWJsZU5hbWU6IG5ld1RhYmxlTmFtZSxcbiAgICAgICAgICAgIHByZWZpeDogYCR7bmV3VGFibGVOYW1lfV9gLFxuICAgICAgICAgICAgdGhyb3dWYWxpZGF0aW9uRXJyb3IsXG4gICAgICAgICAgICB2ZXJzaW9ucyxcbiAgICAgICAgICB9KVxuICAgICAgICAgIGNvbnN0IGJhc2VDb2x1bW5zOiBSZWNvcmQ8c3RyaW5nLCBQZ0NvbHVtbkJ1aWxkZXI+ID0ge1xuICAgICAgICAgICAgb3JkZXI6IGludGVnZXIoJ29yZGVyJykubm90TnVsbCgpLFxuICAgICAgICAgICAgcGFyZW50OiBwYXJlbnRJRENvbHVtbk1hcFtwYXJlbnRJRENvbFR5cGVdKCdwYXJlbnRfaWQnKVxuICAgICAgICAgICAgICAucmVmZXJlbmNlcygoKSA9PiBhZGFwdGVyLnRhYmxlc1twYXJlbnRUYWJsZU5hbWVdLmlkLCB7IG9uRGVsZXRlOiAnY2FzY2FkZScgfSlcbiAgICAgICAgICAgICAgLm5vdE51bGwoKSxcbiAgICAgICAgICAgIHZhbHVlOiBhZGFwdGVyLmVudW1zW2VudW1OYW1lXSgndmFsdWUnKSxcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBiYXNlRXh0cmFDb25maWc6IFJlY29yZDxcbiAgICAgICAgICAgIHN0cmluZyxcbiAgICAgICAgICAgIChjb2xzOiBHZW5lcmljQ29sdW1ucykgPT4gSW5kZXhCdWlsZGVyIHwgVW5pcXVlQ29uc3RyYWludEJ1aWxkZXJcbiAgICAgICAgICA+ID0ge1xuICAgICAgICAgICAgb3JkZXJJZHg6IChjb2xzKSA9PiBpbmRleChgJHtzZWxlY3RUYWJsZU5hbWV9X29yZGVyX2lkeGApLm9uKGNvbHMub3JkZXIpLFxuICAgICAgICAgICAgcGFyZW50SWR4OiAoY29scykgPT4gaW5kZXgoYCR7c2VsZWN0VGFibGVOYW1lfV9wYXJlbnRfaWR4YCkub24oY29scy5wYXJlbnQpLFxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQpIHtcbiAgICAgICAgICAgIGJhc2VDb2x1bW5zLmxvY2FsZSA9IGFkYXB0ZXIuZW51bXMuZW51bV9fbG9jYWxlcygnbG9jYWxlJykubm90TnVsbCgpXG4gICAgICAgICAgICBiYXNlRXh0cmFDb25maWcubG9jYWxlSWR4ID0gKGNvbHMpID0+XG4gICAgICAgICAgICAgIGluZGV4KGAke3NlbGVjdFRhYmxlTmFtZX1fbG9jYWxlX2lkeGApLm9uKGNvbHMubG9jYWxlKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChmaWVsZC5pbmRleCkge1xuICAgICAgICAgICAgYmFzZUV4dHJhQ29uZmlnLnZhbHVlID0gKGNvbHMpID0+IGluZGV4KGAke3NlbGVjdFRhYmxlTmFtZX1fdmFsdWVfaWR4YCkub24oY29scy52YWx1ZSlcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBidWlsZFRhYmxlKHtcbiAgICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgICBiYXNlQ29sdW1ucyxcbiAgICAgICAgICAgIGJhc2VFeHRyYUNvbmZpZyxcbiAgICAgICAgICAgIGRpc2FibGVOb3ROdWxsLFxuICAgICAgICAgICAgZGlzYWJsZVVuaXF1ZSxcbiAgICAgICAgICAgIGZpZWxkczogW10sXG4gICAgICAgICAgICB0YWJsZU5hbWU6IHNlbGVjdFRhYmxlTmFtZSxcbiAgICAgICAgICAgIHZlcnNpb25zLFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICByZWxhdGlvbnNUb0J1aWxkLnNldChmaWVsZE5hbWUsIHNlbGVjdFRhYmxlTmFtZSlcblxuICAgICAgICAgIGNvbnN0IHNlbGVjdFRhYmxlUmVsYXRpb25zID0gcmVsYXRpb25zKGFkYXB0ZXIudGFibGVzW3NlbGVjdFRhYmxlTmFtZV0sICh7IG9uZSB9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIFJlbGF0aW9uPHN0cmluZz4+ID0ge1xuICAgICAgICAgICAgICBwYXJlbnQ6IG9uZShhZGFwdGVyLnRhYmxlc1twYXJlbnRUYWJsZU5hbWVdLCB7XG4gICAgICAgICAgICAgICAgZmllbGRzOiBbYWRhcHRlci50YWJsZXNbc2VsZWN0VGFibGVOYW1lXS5wYXJlbnRdLFxuICAgICAgICAgICAgICAgIHJlZmVyZW5jZXM6IFthZGFwdGVyLnRhYmxlc1twYXJlbnRUYWJsZU5hbWVdLmlkXSxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgYWRhcHRlci5yZWxhdGlvbnNbYHJlbGF0aW9uXyR7c2VsZWN0VGFibGVOYW1lfWBdID0gc2VsZWN0VGFibGVSZWxhdGlvbnNcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0YXJnZXRUYWJsZVtmaWVsZE5hbWVdID0gYWRhcHRlci5lbnVtc1tlbnVtTmFtZV0oZmllbGROYW1lKVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ2NoZWNrYm94Jzoge1xuICAgICAgICB0YXJnZXRUYWJsZVtmaWVsZE5hbWVdID0gYm9vbGVhbihjb2x1bW5OYW1lKVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICdhcnJheSc6IHtcbiAgICAgICAgY29uc3QgZGlzYWJsZU5vdE51bGxGcm9tSGVyZSA9IEJvb2xlYW4oZmllbGQuYWRtaW4/LmNvbmRpdGlvbikgfHwgZGlzYWJsZU5vdE51bGxcblxuICAgICAgICBjb25zdCBhcnJheVRhYmxlTmFtZSA9IGdldFRhYmxlTmFtZSh7XG4gICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICBjb25maWc6IGZpZWxkLFxuICAgICAgICAgIHBhcmVudFRhYmxlTmFtZTogbmV3VGFibGVOYW1lLFxuICAgICAgICAgIHByZWZpeDogYCR7bmV3VGFibGVOYW1lfV9gLFxuICAgICAgICAgIHRocm93VmFsaWRhdGlvbkVycm9yLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBiYXNlQ29sdW1uczogUmVjb3JkPHN0cmluZywgUGdDb2x1bW5CdWlsZGVyPiA9IHtcbiAgICAgICAgICBfb3JkZXI6IGludGVnZXIoJ19vcmRlcicpLm5vdE51bGwoKSxcbiAgICAgICAgICBfcGFyZW50SUQ6IHBhcmVudElEQ29sdW1uTWFwW3BhcmVudElEQ29sVHlwZV0oJ19wYXJlbnRfaWQnKVxuICAgICAgICAgICAgLnJlZmVyZW5jZXMoKCkgPT4gYWRhcHRlci50YWJsZXNbcGFyZW50VGFibGVOYW1lXS5pZCwgeyBvbkRlbGV0ZTogJ2Nhc2NhZGUnIH0pXG4gICAgICAgICAgICAubm90TnVsbCgpLFxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYmFzZUV4dHJhQ29uZmlnOiBSZWNvcmQ8XG4gICAgICAgICAgc3RyaW5nLFxuICAgICAgICAgIChjb2xzOiBHZW5lcmljQ29sdW1ucykgPT4gSW5kZXhCdWlsZGVyIHwgVW5pcXVlQ29uc3RyYWludEJ1aWxkZXJcbiAgICAgICAgPiA9IHtcbiAgICAgICAgICBfb3JkZXJJZHg6IChjb2xzKSA9PiBpbmRleChgJHthcnJheVRhYmxlTmFtZX1fb3JkZXJfaWR4YCkub24oY29scy5fb3JkZXIpLFxuICAgICAgICAgIF9wYXJlbnRJRElkeDogKGNvbHMpID0+IGluZGV4KGAke2FycmF5VGFibGVOYW1lfV9wYXJlbnRfaWRfaWR4YCkub24oY29scy5fcGFyZW50SUQpLFxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZpZWxkLmxvY2FsaXplZCAmJiBhZGFwdGVyLnBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbikge1xuICAgICAgICAgIGJhc2VDb2x1bW5zLl9sb2NhbGUgPSBhZGFwdGVyLmVudW1zLmVudW1fX2xvY2FsZXMoJ19sb2NhbGUnKS5ub3ROdWxsKClcbiAgICAgICAgICBiYXNlRXh0cmFDb25maWcuX2xvY2FsZUlkeCA9IChjb2xzKSA9PlxuICAgICAgICAgICAgaW5kZXgoYCR7YXJyYXlUYWJsZU5hbWV9X2xvY2FsZV9pZHhgKS5vbihjb2xzLl9sb2NhbGUpXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgaGFzTWFueU51bWJlckZpZWxkOiBzdWJIYXNNYW55TnVtYmVyRmllbGQsXG4gICAgICAgICAgaGFzTWFueVRleHRGaWVsZDogc3ViSGFzTWFueVRleHRGaWVsZCxcbiAgICAgICAgICByZWxhdGlvbnNUb0J1aWxkOiBzdWJSZWxhdGlvbnNUb0J1aWxkLFxuICAgICAgICB9ID0gYnVpbGRUYWJsZSh7XG4gICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICBiYXNlQ29sdW1ucyxcbiAgICAgICAgICBiYXNlRXh0cmFDb25maWcsXG4gICAgICAgICAgZGlzYWJsZU5vdE51bGw6IGRpc2FibGVOb3ROdWxsRnJvbUhlcmUsXG4gICAgICAgICAgZGlzYWJsZVVuaXF1ZSxcbiAgICAgICAgICBmaWVsZHM6IGRpc2FibGVVbmlxdWUgPyBpZFRvVVVJRChmaWVsZC5maWVsZHMpIDogZmllbGQuZmllbGRzLFxuICAgICAgICAgIHJvb3RSZWxhdGlvbnNUb0J1aWxkLFxuICAgICAgICAgIHJvb3RSZWxhdGlvbnNoaXBzOiByZWxhdGlvbnNoaXBzLFxuICAgICAgICAgIHJvb3RUYWJsZUlEQ29sVHlwZSxcbiAgICAgICAgICByb290VGFibGVOYW1lLFxuICAgICAgICAgIHRhYmxlTmFtZTogYXJyYXlUYWJsZU5hbWUsXG4gICAgICAgICAgdmVyc2lvbnMsXG4gICAgICAgIH0pXG5cbiAgICAgICAgaWYgKHN1Ykhhc01hbnlUZXh0RmllbGQpIHtcbiAgICAgICAgICBpZiAoIWhhc01hbnlUZXh0RmllbGQgfHwgc3ViSGFzTWFueVRleHRGaWVsZCA9PT0gJ2luZGV4JylcbiAgICAgICAgICAgIGhhc01hbnlUZXh0RmllbGQgPSBzdWJIYXNNYW55VGV4dEZpZWxkXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN1Ykhhc01hbnlOdW1iZXJGaWVsZCkge1xuICAgICAgICAgIGlmICghaGFzTWFueU51bWJlckZpZWxkIHx8IHN1Ykhhc01hbnlOdW1iZXJGaWVsZCA9PT0gJ2luZGV4JylcbiAgICAgICAgICAgIGhhc01hbnlOdW1iZXJGaWVsZCA9IHN1Ykhhc01hbnlOdW1iZXJGaWVsZFxuICAgICAgICB9XG5cbiAgICAgICAgcmVsYXRpb25zVG9CdWlsZC5zZXQoZmllbGROYW1lLCBhcnJheVRhYmxlTmFtZSlcblxuICAgICAgICBjb25zdCBhcnJheVRhYmxlUmVsYXRpb25zID0gcmVsYXRpb25zKGFkYXB0ZXIudGFibGVzW2FycmF5VGFibGVOYW1lXSwgKHsgbWFueSwgb25lIH0pID0+IHtcbiAgICAgICAgICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIFJlbGF0aW9uPHN0cmluZz4+ID0ge1xuICAgICAgICAgICAgX3BhcmVudElEOiBvbmUoYWRhcHRlci50YWJsZXNbcGFyZW50VGFibGVOYW1lXSwge1xuICAgICAgICAgICAgICBmaWVsZHM6IFthZGFwdGVyLnRhYmxlc1thcnJheVRhYmxlTmFtZV0uX3BhcmVudElEXSxcbiAgICAgICAgICAgICAgcmVmZXJlbmNlczogW2FkYXB0ZXIudGFibGVzW3BhcmVudFRhYmxlTmFtZV0uaWRdLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGhhc0xvY2FsZXNUYWJsZShmaWVsZC5maWVsZHMpKSB7XG4gICAgICAgICAgICByZXN1bHQuX2xvY2FsZXMgPSBtYW55KGFkYXB0ZXIudGFibGVzW2Ake2FycmF5VGFibGVOYW1lfSR7YWRhcHRlci5sb2NhbGVzU3VmZml4fWBdKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHN1YlJlbGF0aW9uc1RvQnVpbGQuZm9yRWFjaCgodmFsLCBrZXkpID0+IHtcbiAgICAgICAgICAgIHJlc3VsdFtrZXldID0gbWFueShhZGFwdGVyLnRhYmxlc1t2YWxdKVxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgICAgIH0pXG5cbiAgICAgICAgYWRhcHRlci5yZWxhdGlvbnNbYHJlbGF0aW9uc18ke2FycmF5VGFibGVOYW1lfWBdID0gYXJyYXlUYWJsZVJlbGF0aW9uc1xuXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ2Jsb2Nrcyc6IHtcbiAgICAgICAgY29uc3QgZGlzYWJsZU5vdE51bGxGcm9tSGVyZSA9IEJvb2xlYW4oZmllbGQuYWRtaW4/LmNvbmRpdGlvbikgfHwgZGlzYWJsZU5vdE51bGxcblxuICAgICAgICBmaWVsZC5ibG9ja3MuZm9yRWFjaCgoYmxvY2spID0+IHtcbiAgICAgICAgICBjb25zdCBibG9ja1RhYmxlTmFtZSA9IGdldFRhYmxlTmFtZSh7XG4gICAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgICAgY29uZmlnOiBibG9jayxcbiAgICAgICAgICAgIHBhcmVudFRhYmxlTmFtZTogcm9vdFRhYmxlTmFtZSxcbiAgICAgICAgICAgIHByZWZpeDogYCR7cm9vdFRhYmxlTmFtZX1fYmxvY2tzX2AsXG4gICAgICAgICAgICB0aHJvd1ZhbGlkYXRpb25FcnJvcixcbiAgICAgICAgICB9KVxuICAgICAgICAgIGlmICghYWRhcHRlci50YWJsZXNbYmxvY2tUYWJsZU5hbWVdKSB7XG4gICAgICAgICAgICBjb25zdCBiYXNlQ29sdW1uczogUmVjb3JkPHN0cmluZywgUGdDb2x1bW5CdWlsZGVyPiA9IHtcbiAgICAgICAgICAgICAgX29yZGVyOiBpbnRlZ2VyKCdfb3JkZXInKS5ub3ROdWxsKCksXG4gICAgICAgICAgICAgIF9wYXJlbnRJRDogcGFyZW50SURDb2x1bW5NYXBbcm9vdFRhYmxlSURDb2xUeXBlXSgnX3BhcmVudF9pZCcpXG4gICAgICAgICAgICAgICAgLnJlZmVyZW5jZXMoKCkgPT4gYWRhcHRlci50YWJsZXNbcm9vdFRhYmxlTmFtZV0uaWQsIHsgb25EZWxldGU6ICdjYXNjYWRlJyB9KVxuICAgICAgICAgICAgICAgIC5ub3ROdWxsKCksXG4gICAgICAgICAgICAgIF9wYXRoOiB0ZXh0KCdfcGF0aCcpLm5vdE51bGwoKSxcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgYmFzZUV4dHJhQ29uZmlnOiBSZWNvcmQ8XG4gICAgICAgICAgICAgIHN0cmluZyxcbiAgICAgICAgICAgICAgKGNvbHM6IEdlbmVyaWNDb2x1bW5zKSA9PiBJbmRleEJ1aWxkZXIgfCBVbmlxdWVDb25zdHJhaW50QnVpbGRlclxuICAgICAgICAgICAgPiA9IHtcbiAgICAgICAgICAgICAgX29yZGVySWR4OiAoY29scykgPT4gaW5kZXgoYCR7YmxvY2tUYWJsZU5hbWV9X29yZGVyX2lkeGApLm9uKGNvbHMuX29yZGVyKSxcbiAgICAgICAgICAgICAgX3BhcmVudElESWR4OiAoY29scykgPT4gaW5kZXgoYCR7YmxvY2tUYWJsZU5hbWV9X3BhcmVudF9pZF9pZHhgKS5vbihjb2xzLl9wYXJlbnRJRCksXG4gICAgICAgICAgICAgIF9wYXRoSWR4OiAoY29scykgPT4gaW5kZXgoYCR7YmxvY2tUYWJsZU5hbWV9X3BhdGhfaWR4YCkub24oY29scy5fcGF0aCksXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQgJiYgYWRhcHRlci5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb24pIHtcbiAgICAgICAgICAgICAgYmFzZUNvbHVtbnMuX2xvY2FsZSA9IGFkYXB0ZXIuZW51bXMuZW51bV9fbG9jYWxlcygnX2xvY2FsZScpLm5vdE51bGwoKVxuICAgICAgICAgICAgICBiYXNlRXh0cmFDb25maWcuX2xvY2FsZUlkeCA9IChjb2xzKSA9PlxuICAgICAgICAgICAgICAgIGluZGV4KGAke2Jsb2NrVGFibGVOYW1lfV9sb2NhbGVfaWR4YCkub24oY29scy5fbG9jYWxlKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgIGhhc01hbnlOdW1iZXJGaWVsZDogc3ViSGFzTWFueU51bWJlckZpZWxkLFxuICAgICAgICAgICAgICBoYXNNYW55VGV4dEZpZWxkOiBzdWJIYXNNYW55VGV4dEZpZWxkLFxuICAgICAgICAgICAgICByZWxhdGlvbnNUb0J1aWxkOiBzdWJSZWxhdGlvbnNUb0J1aWxkLFxuICAgICAgICAgICAgfSA9IGJ1aWxkVGFibGUoe1xuICAgICAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgICAgICBiYXNlQ29sdW1ucyxcbiAgICAgICAgICAgICAgYmFzZUV4dHJhQ29uZmlnLFxuICAgICAgICAgICAgICBkaXNhYmxlTm90TnVsbDogZGlzYWJsZU5vdE51bGxGcm9tSGVyZSxcbiAgICAgICAgICAgICAgZGlzYWJsZVVuaXF1ZSxcbiAgICAgICAgICAgICAgZmllbGRzOiBkaXNhYmxlVW5pcXVlID8gaWRUb1VVSUQoYmxvY2suZmllbGRzKSA6IGJsb2NrLmZpZWxkcyxcbiAgICAgICAgICAgICAgcm9vdFJlbGF0aW9uc1RvQnVpbGQsXG4gICAgICAgICAgICAgIHJvb3RSZWxhdGlvbnNoaXBzOiByZWxhdGlvbnNoaXBzLFxuICAgICAgICAgICAgICByb290VGFibGVJRENvbFR5cGUsXG4gICAgICAgICAgICAgIHJvb3RUYWJsZU5hbWUsXG4gICAgICAgICAgICAgIHRhYmxlTmFtZTogYmxvY2tUYWJsZU5hbWUsXG4gICAgICAgICAgICAgIHZlcnNpb25zLFxuICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgaWYgKHN1Ykhhc01hbnlUZXh0RmllbGQpIHtcbiAgICAgICAgICAgICAgaWYgKCFoYXNNYW55VGV4dEZpZWxkIHx8IHN1Ykhhc01hbnlUZXh0RmllbGQgPT09ICdpbmRleCcpXG4gICAgICAgICAgICAgICAgaGFzTWFueVRleHRGaWVsZCA9IHN1Ykhhc01hbnlUZXh0RmllbGRcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHN1Ykhhc01hbnlOdW1iZXJGaWVsZCkge1xuICAgICAgICAgICAgICBpZiAoIWhhc01hbnlOdW1iZXJGaWVsZCB8fCBzdWJIYXNNYW55TnVtYmVyRmllbGQgPT09ICdpbmRleCcpXG4gICAgICAgICAgICAgICAgaGFzTWFueU51bWJlckZpZWxkID0gc3ViSGFzTWFueU51bWJlckZpZWxkXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGJsb2NrVGFibGVSZWxhdGlvbnMgPSByZWxhdGlvbnMoXG4gICAgICAgICAgICAgIGFkYXB0ZXIudGFibGVzW2Jsb2NrVGFibGVOYW1lXSxcbiAgICAgICAgICAgICAgKHsgbWFueSwgb25lIH0pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIFJlbGF0aW9uPHN0cmluZz4+ID0ge1xuICAgICAgICAgICAgICAgICAgX3BhcmVudElEOiBvbmUoYWRhcHRlci50YWJsZXNbcm9vdFRhYmxlTmFtZV0sIHtcbiAgICAgICAgICAgICAgICAgICAgZmllbGRzOiBbYWRhcHRlci50YWJsZXNbYmxvY2tUYWJsZU5hbWVdLl9wYXJlbnRJRF0sXG4gICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZXM6IFthZGFwdGVyLnRhYmxlc1tyb290VGFibGVOYW1lXS5pZF0sXG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoaGFzTG9jYWxlc1RhYmxlKGJsb2NrLmZpZWxkcykpIHtcbiAgICAgICAgICAgICAgICAgIHJlc3VsdC5fbG9jYWxlcyA9IG1hbnkoXG4gICAgICAgICAgICAgICAgICAgIGFkYXB0ZXIudGFibGVzW2Ake2Jsb2NrVGFibGVOYW1lfSR7YWRhcHRlci5sb2NhbGVzU3VmZml4fWBdLFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHN1YlJlbGF0aW9uc1RvQnVpbGQuZm9yRWFjaCgodmFsLCBrZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgIHJlc3VsdFtrZXldID0gbWFueShhZGFwdGVyLnRhYmxlc1t2YWxdKVxuICAgICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApXG5cbiAgICAgICAgICAgIGFkYXB0ZXIucmVsYXRpb25zW2ByZWxhdGlvbnNfJHtibG9ja1RhYmxlTmFtZX1gXSA9IGJsb2NrVGFibGVSZWxhdGlvbnNcbiAgICAgICAgICB9IGVsc2UgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgIXZlcnNpb25zKSB7XG4gICAgICAgICAgICB2YWxpZGF0ZUV4aXN0aW5nQmxvY2tJc0lkZW50aWNhbCh7XG4gICAgICAgICAgICAgIGJsb2NrLFxuICAgICAgICAgICAgICBsb2NhbGl6ZWQ6IGZpZWxkLmxvY2FsaXplZCxcbiAgICAgICAgICAgICAgcm9vdFRhYmxlTmFtZSxcbiAgICAgICAgICAgICAgdGFibGU6IGFkYXB0ZXIudGFibGVzW2Jsb2NrVGFibGVOYW1lXSxcbiAgICAgICAgICAgICAgdGFibGVMb2NhbGVzOiBhZGFwdGVyLnRhYmxlc1tgJHtibG9ja1RhYmxlTmFtZX0ke2FkYXB0ZXIubG9jYWxlc1N1ZmZpeH1gXSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICAgIGFkYXB0ZXIuYmxvY2tUYWJsZU5hbWVzW2Ake3Jvb3RUYWJsZU5hbWV9LiR7dG9TbmFrZUNhc2UoYmxvY2suc2x1Zyl9YF0gPSBibG9ja1RhYmxlTmFtZVxuICAgICAgICAgIHJvb3RSZWxhdGlvbnNUb0J1aWxkLnNldChgX2Jsb2Nrc18ke2Jsb2NrLnNsdWd9YCwgYmxvY2tUYWJsZU5hbWUpXG4gICAgICAgIH0pXG5cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAndGFiJzpcbiAgICAgIGNhc2UgJ2dyb3VwJzoge1xuICAgICAgICBpZiAoISgnbmFtZScgaW4gZmllbGQpKSB7XG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgaGFzTG9jYWxpemVkRmllbGQ6IGdyb3VwSGFzTG9jYWxpemVkRmllbGQsXG4gICAgICAgICAgICBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQ6IGdyb3VwSGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkLFxuICAgICAgICAgICAgaGFzTG9jYWxpemVkTWFueVRleHRGaWVsZDogZ3JvdXBIYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkLFxuICAgICAgICAgICAgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQ6IGdyb3VwSGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQsXG4gICAgICAgICAgICBoYXNNYW55TnVtYmVyRmllbGQ6IGdyb3VwSGFzTWFueU51bWJlckZpZWxkLFxuICAgICAgICAgICAgaGFzTWFueVRleHRGaWVsZDogZ3JvdXBIYXNNYW55VGV4dEZpZWxkLFxuICAgICAgICAgIH0gPSB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgICAgYnVpbGROdW1iZXJzLFxuICAgICAgICAgICAgYnVpbGRSZWxhdGlvbnNoaXBzLFxuICAgICAgICAgICAgYnVpbGRUZXh0cyxcbiAgICAgICAgICAgIGNvbHVtblByZWZpeCxcbiAgICAgICAgICAgIGNvbHVtbnMsXG4gICAgICAgICAgICBkaXNhYmxlTm90TnVsbCxcbiAgICAgICAgICAgIGRpc2FibGVVbmlxdWUsXG4gICAgICAgICAgICBmaWVsZFByZWZpeCxcbiAgICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICAgICAgZm9yY2VMb2NhbGl6ZWQsXG4gICAgICAgICAgICBpbmRleGVzLFxuICAgICAgICAgICAgbG9jYWxlc0NvbHVtbnMsXG4gICAgICAgICAgICBsb2NhbGVzSW5kZXhlcyxcbiAgICAgICAgICAgIG5ld1RhYmxlTmFtZSxcbiAgICAgICAgICAgIHBhcmVudFRhYmxlTmFtZSxcbiAgICAgICAgICAgIHJlbGF0aW9uc1RvQnVpbGQsXG4gICAgICAgICAgICByZWxhdGlvbnNoaXBzLFxuICAgICAgICAgICAgcm9vdFJlbGF0aW9uc1RvQnVpbGQsXG4gICAgICAgICAgICByb290VGFibGVJRENvbFR5cGUsXG4gICAgICAgICAgICByb290VGFibGVOYW1lLFxuICAgICAgICAgICAgdmVyc2lvbnMsXG4gICAgICAgICAgfSlcblxuICAgICAgICAgIGlmIChncm91cEhhc0xvY2FsaXplZEZpZWxkKSBoYXNMb2NhbGl6ZWRGaWVsZCA9IHRydWVcbiAgICAgICAgICBpZiAoZ3JvdXBIYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCkgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQgPSB0cnVlXG4gICAgICAgICAgaWYgKGdyb3VwSGFzTWFueVRleHRGaWVsZCkgaGFzTWFueVRleHRGaWVsZCA9IHRydWVcbiAgICAgICAgICBpZiAoZ3JvdXBIYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkKSBoYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkID0gdHJ1ZVxuICAgICAgICAgIGlmIChncm91cEhhc01hbnlOdW1iZXJGaWVsZCkgaGFzTWFueU51bWJlckZpZWxkID0gdHJ1ZVxuICAgICAgICAgIGlmIChncm91cEhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCkgaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkID0gdHJ1ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkaXNhYmxlTm90TnVsbEZyb21IZXJlID0gQm9vbGVhbihmaWVsZC5hZG1pbj8uY29uZGl0aW9uKSB8fCBkaXNhYmxlTm90TnVsbFxuXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRGaWVsZDogZ3JvdXBIYXNMb2NhbGl6ZWRGaWVsZCxcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQ6IGdyb3VwSGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkLFxuICAgICAgICAgIGhhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQ6IGdyb3VwSGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCxcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZDogZ3JvdXBIYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCxcbiAgICAgICAgICBoYXNNYW55TnVtYmVyRmllbGQ6IGdyb3VwSGFzTWFueU51bWJlckZpZWxkLFxuICAgICAgICAgIGhhc01hbnlUZXh0RmllbGQ6IGdyb3VwSGFzTWFueVRleHRGaWVsZCxcbiAgICAgICAgfSA9IHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgIGJ1aWxkTnVtYmVycyxcbiAgICAgICAgICBidWlsZFJlbGF0aW9uc2hpcHMsXG4gICAgICAgICAgYnVpbGRUZXh0cyxcbiAgICAgICAgICBjb2x1bW5QcmVmaXg6IGAke2NvbHVtbk5hbWV9X2AsXG4gICAgICAgICAgY29sdW1ucyxcbiAgICAgICAgICBkaXNhYmxlTm90TnVsbDogZGlzYWJsZU5vdE51bGxGcm9tSGVyZSxcbiAgICAgICAgICBkaXNhYmxlVW5pcXVlLFxuICAgICAgICAgIGZpZWxkUHJlZml4OiBgJHtmaWVsZE5hbWV9LmAsXG4gICAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgICAgZm9yY2VMb2NhbGl6ZWQ6IGZpZWxkLmxvY2FsaXplZCxcbiAgICAgICAgICBpbmRleGVzLFxuICAgICAgICAgIGxvY2FsZXNDb2x1bW5zLFxuICAgICAgICAgIGxvY2FsZXNJbmRleGVzLFxuICAgICAgICAgIG5ld1RhYmxlTmFtZTogYCR7cGFyZW50VGFibGVOYW1lfV8ke2NvbHVtbk5hbWV9YCxcbiAgICAgICAgICBwYXJlbnRUYWJsZU5hbWUsXG4gICAgICAgICAgcmVsYXRpb25zVG9CdWlsZCxcbiAgICAgICAgICByZWxhdGlvbnNoaXBzLFxuICAgICAgICAgIHJvb3RSZWxhdGlvbnNUb0J1aWxkLFxuICAgICAgICAgIHJvb3RUYWJsZUlEQ29sVHlwZSxcbiAgICAgICAgICByb290VGFibGVOYW1lLFxuICAgICAgICAgIHZlcnNpb25zLFxuICAgICAgICB9KVxuXG4gICAgICAgIGlmIChncm91cEhhc0xvY2FsaXplZEZpZWxkKSBoYXNMb2NhbGl6ZWRGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKGdyb3VwSGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQpIGhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkID0gdHJ1ZVxuICAgICAgICBpZiAoZ3JvdXBIYXNNYW55VGV4dEZpZWxkKSBoYXNNYW55VGV4dEZpZWxkID0gdHJ1ZVxuICAgICAgICBpZiAoZ3JvdXBIYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkKSBoYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkID0gdHJ1ZVxuICAgICAgICBpZiAoZ3JvdXBIYXNNYW55TnVtYmVyRmllbGQpIGhhc01hbnlOdW1iZXJGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKGdyb3VwSGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkKSBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQgPSB0cnVlXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ3RhYnMnOiB7XG4gICAgICAgIGNvbnN0IGRpc2FibGVOb3ROdWxsRnJvbUhlcmUgPSBCb29sZWFuKGZpZWxkLmFkbWluPy5jb25kaXRpb24pIHx8IGRpc2FibGVOb3ROdWxsXG5cbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIGhhc0xvY2FsaXplZEZpZWxkOiB0YWJIYXNMb2NhbGl6ZWRGaWVsZCxcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQ6IHRhYkhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCxcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkOiB0YWJIYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkLFxuICAgICAgICAgIGhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkOiB0YWJIYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCxcbiAgICAgICAgICBoYXNNYW55TnVtYmVyRmllbGQ6IHRhYkhhc01hbnlOdW1iZXJGaWVsZCxcbiAgICAgICAgICBoYXNNYW55VGV4dEZpZWxkOiB0YWJIYXNNYW55VGV4dEZpZWxkLFxuICAgICAgICB9ID0gdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgYnVpbGROdW1iZXJzLFxuICAgICAgICAgIGJ1aWxkUmVsYXRpb25zaGlwcyxcbiAgICAgICAgICBidWlsZFRleHRzLFxuICAgICAgICAgIGNvbHVtblByZWZpeCxcbiAgICAgICAgICBjb2x1bW5zLFxuICAgICAgICAgIGRpc2FibGVOb3ROdWxsOiBkaXNhYmxlTm90TnVsbEZyb21IZXJlLFxuICAgICAgICAgIGRpc2FibGVVbmlxdWUsXG4gICAgICAgICAgZmllbGRQcmVmaXgsXG4gICAgICAgICAgZmllbGRzOiBmaWVsZC50YWJzLm1hcCgodGFiKSA9PiAoeyAuLi50YWIsIHR5cGU6ICd0YWInIH0pKSxcbiAgICAgICAgICBmb3JjZUxvY2FsaXplZCxcbiAgICAgICAgICBpbmRleGVzLFxuICAgICAgICAgIGxvY2FsZXNDb2x1bW5zLFxuICAgICAgICAgIGxvY2FsZXNJbmRleGVzLFxuICAgICAgICAgIG5ld1RhYmxlTmFtZSxcbiAgICAgICAgICBwYXJlbnRUYWJsZU5hbWUsXG4gICAgICAgICAgcmVsYXRpb25zVG9CdWlsZCxcbiAgICAgICAgICByZWxhdGlvbnNoaXBzLFxuICAgICAgICAgIHJvb3RSZWxhdGlvbnNUb0J1aWxkLFxuICAgICAgICAgIHJvb3RUYWJsZUlEQ29sVHlwZSxcbiAgICAgICAgICByb290VGFibGVOYW1lLFxuICAgICAgICAgIHZlcnNpb25zLFxuICAgICAgICB9KVxuXG4gICAgICAgIGlmICh0YWJIYXNMb2NhbGl6ZWRGaWVsZCkgaGFzTG9jYWxpemVkRmllbGQgPSB0cnVlXG4gICAgICAgIGlmICh0YWJIYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCkgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQgPSB0cnVlXG4gICAgICAgIGlmICh0YWJIYXNNYW55VGV4dEZpZWxkKSBoYXNNYW55VGV4dEZpZWxkID0gdHJ1ZVxuICAgICAgICBpZiAodGFiSGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCkgaGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKHRhYkhhc01hbnlOdW1iZXJGaWVsZCkgaGFzTWFueU51bWJlckZpZWxkID0gdHJ1ZVxuICAgICAgICBpZiAodGFiSGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkKSBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQgPSB0cnVlXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ3Jvdyc6XG4gICAgICBjYXNlICdjb2xsYXBzaWJsZSc6IHtcbiAgICAgICAgY29uc3QgZGlzYWJsZU5vdE51bGxGcm9tSGVyZSA9IEJvb2xlYW4oZmllbGQuYWRtaW4/LmNvbmRpdGlvbikgfHwgZGlzYWJsZU5vdE51bGxcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIGhhc0xvY2FsaXplZEZpZWxkOiByb3dIYXNMb2NhbGl6ZWRGaWVsZCxcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQ6IHJvd0hhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCxcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkOiByb3dIYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkLFxuICAgICAgICAgIGhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkOiByb3dIYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCxcbiAgICAgICAgICBoYXNNYW55TnVtYmVyRmllbGQ6IHJvd0hhc01hbnlOdW1iZXJGaWVsZCxcbiAgICAgICAgICBoYXNNYW55VGV4dEZpZWxkOiByb3dIYXNNYW55VGV4dEZpZWxkLFxuICAgICAgICB9ID0gdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgYnVpbGROdW1iZXJzLFxuICAgICAgICAgIGJ1aWxkUmVsYXRpb25zaGlwcyxcbiAgICAgICAgICBidWlsZFRleHRzLFxuICAgICAgICAgIGNvbHVtblByZWZpeCxcbiAgICAgICAgICBjb2x1bW5zLFxuICAgICAgICAgIGRpc2FibGVOb3ROdWxsOiBkaXNhYmxlTm90TnVsbEZyb21IZXJlLFxuICAgICAgICAgIGRpc2FibGVVbmlxdWUsXG4gICAgICAgICAgZmllbGRQcmVmaXgsXG4gICAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgICAgZm9yY2VMb2NhbGl6ZWQsXG4gICAgICAgICAgaW5kZXhlcyxcbiAgICAgICAgICBsb2NhbGVzQ29sdW1ucyxcbiAgICAgICAgICBsb2NhbGVzSW5kZXhlcyxcbiAgICAgICAgICBuZXdUYWJsZU5hbWU6IHBhcmVudFRhYmxlTmFtZSxcbiAgICAgICAgICBwYXJlbnRUYWJsZU5hbWUsXG4gICAgICAgICAgcmVsYXRpb25zVG9CdWlsZCxcbiAgICAgICAgICByZWxhdGlvbnNoaXBzLFxuICAgICAgICAgIHJvb3RSZWxhdGlvbnNUb0J1aWxkLFxuICAgICAgICAgIHJvb3RUYWJsZUlEQ29sVHlwZSxcbiAgICAgICAgICByb290VGFibGVOYW1lLFxuICAgICAgICAgIHZlcnNpb25zLFxuICAgICAgICB9KVxuXG4gICAgICAgIGlmIChyb3dIYXNMb2NhbGl6ZWRGaWVsZCkgaGFzTG9jYWxpemVkRmllbGQgPSB0cnVlXG4gICAgICAgIGlmIChyb3dIYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCkgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQgPSB0cnVlXG4gICAgICAgIGlmIChyb3dIYXNNYW55VGV4dEZpZWxkKSBoYXNNYW55VGV4dEZpZWxkID0gdHJ1ZVxuICAgICAgICBpZiAocm93SGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCkgaGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKHJvd0hhc01hbnlOdW1iZXJGaWVsZCkgaGFzTWFueU51bWJlckZpZWxkID0gdHJ1ZVxuICAgICAgICBpZiAocm93SGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkKSBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQgPSB0cnVlXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ3JlbGF0aW9uc2hpcCc6XG4gICAgICBjYXNlICd1cGxvYWQnOlxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShmaWVsZC5yZWxhdGlvblRvKSkge1xuICAgICAgICAgIGZpZWxkLnJlbGF0aW9uVG8uZm9yRWFjaCgocmVsYXRpb24pID0+IHJlbGF0aW9uc2hpcHMuYWRkKHJlbGF0aW9uKSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZWxhdGlvbnNoaXBzLmFkZChmaWVsZC5yZWxhdGlvblRvKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZpZWxkLmxvY2FsaXplZCAmJiBhZGFwdGVyLnBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbikge1xuICAgICAgICAgIGhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkID0gdHJ1ZVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgY29uc3QgY29uZGl0aW9uID0gZmllbGQuYWRtaW4gJiYgZmllbGQuYWRtaW4uY29uZGl0aW9uXG5cbiAgICBpZiAoXG4gICAgICAhZGlzYWJsZU5vdE51bGwgJiZcbiAgICAgIHRhcmdldFRhYmxlW2ZpZWxkTmFtZV0gJiZcbiAgICAgICdyZXF1aXJlZCcgaW4gZmllbGQgJiZcbiAgICAgIGZpZWxkLnJlcXVpcmVkICYmXG4gICAgICAhY29uZGl0aW9uXG4gICAgKSB7XG4gICAgICB0YXJnZXRUYWJsZVtmaWVsZE5hbWVdLm5vdE51bGwoKVxuICAgIH1cbiAgfSlcblxuICByZXR1cm4ge1xuICAgIGhhc0xvY2FsaXplZEZpZWxkLFxuICAgIGhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCxcbiAgICBoYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkLFxuICAgIGhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkLFxuICAgIGhhc01hbnlOdW1iZXJGaWVsZCxcbiAgICBoYXNNYW55VGV4dEZpZWxkLFxuICB9XG59XG4iXSwibmFtZXMiOlsidHJhdmVyc2VGaWVsZHMiLCJhZGFwdGVyIiwiYnVpbGROdW1iZXJzIiwiYnVpbGRSZWxhdGlvbnNoaXBzIiwiYnVpbGRUZXh0cyIsImNvbHVtblByZWZpeCIsImNvbHVtbnMiLCJkaXNhYmxlTm90TnVsbCIsImRpc2FibGVVbmlxdWUiLCJmaWVsZFByZWZpeCIsImZpZWxkcyIsImZvcmNlTG9jYWxpemVkIiwiaW5kZXhlcyIsImxvY2FsZXNDb2x1bW5zIiwibG9jYWxlc0luZGV4ZXMiLCJuZXdUYWJsZU5hbWUiLCJwYXJlbnRUYWJsZU5hbWUiLCJyZWxhdGlvbnNUb0J1aWxkIiwicmVsYXRpb25zaGlwcyIsInJvb3RSZWxhdGlvbnNUb0J1aWxkIiwicm9vdFRhYmxlSURDb2xUeXBlIiwicm9vdFRhYmxlTmFtZSIsInZlcnNpb25zIiwidGhyb3dWYWxpZGF0aW9uRXJyb3IiLCJoYXNMb2NhbGl6ZWRGaWVsZCIsImhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkIiwiaGFzTWFueVRleHRGaWVsZCIsImhhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQiLCJoYXNNYW55TnVtYmVyRmllbGQiLCJoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQiLCJwYXJlbnRJRENvbFR5cGUiLCJpZCIsIlBnVVVJREJ1aWxkZXIiLCJQZ051bWVyaWNCdWlsZGVyIiwiUGdWYXJjaGFyQnVpbGRlciIsImZvckVhY2giLCJmaWVsZCIsIm5hbWUiLCJjb2x1bW5OYW1lIiwiZmllbGROYW1lIiwidGFyZ2V0VGFibGUiLCJ0YXJnZXRJbmRleGVzIiwiZmllbGRBZmZlY3RzRGF0YSIsInRvU25ha2VDYXNlIiwicmVwbGFjZSIsInBheWxvYWQiLCJjb25maWciLCJsb2NhbGl6YXRpb24iLCJsb2NhbGl6ZWQiLCJ1bmlxdWUiLCJpbmRleCIsImluY2x1ZGVzIiwidHlwZSIsImhhc01hbnkiLCJjb25zdHJhaW50VmFsdWUiLCJmaWVsZENvbnN0cmFpbnRzIiwiY3JlYXRlSW5kZXgiLCJ0YWJsZU5hbWUiLCJJbnZhbGlkQ29uZmlndXJhdGlvbiIsInZhcmNoYXIiLCJudW1lcmljIiwianNvbmIiLCJ0aW1lc3RhbXAiLCJtb2RlIiwicHJlY2lzaW9uIiwid2l0aFRpbWV6b25lIiwiZW51bU5hbWUiLCJnZXRUYWJsZU5hbWUiLCJwcmVmaXgiLCJ0YXJnZXQiLCJlbnVtcyIsInBnRW51bSIsIm9wdGlvbnMiLCJtYXAiLCJvcHRpb24iLCJvcHRpb25Jc09iamVjdCIsInZhbHVlIiwic2VsZWN0VGFibGVOYW1lIiwiYmFzZUNvbHVtbnMiLCJvcmRlciIsImludGVnZXIiLCJub3ROdWxsIiwicGFyZW50IiwicGFyZW50SURDb2x1bW5NYXAiLCJyZWZlcmVuY2VzIiwidGFibGVzIiwib25EZWxldGUiLCJiYXNlRXh0cmFDb25maWciLCJvcmRlcklkeCIsImNvbHMiLCJvbiIsInBhcmVudElkeCIsImxvY2FsZSIsImVudW1fX2xvY2FsZXMiLCJsb2NhbGVJZHgiLCJidWlsZFRhYmxlIiwic2V0Iiwic2VsZWN0VGFibGVSZWxhdGlvbnMiLCJyZWxhdGlvbnMiLCJvbmUiLCJyZXN1bHQiLCJib29sZWFuIiwiZGlzYWJsZU5vdE51bGxGcm9tSGVyZSIsIkJvb2xlYW4iLCJhZG1pbiIsImNvbmRpdGlvbiIsImFycmF5VGFibGVOYW1lIiwiX29yZGVyIiwiX3BhcmVudElEIiwiX29yZGVySWR4IiwiX3BhcmVudElESWR4IiwiX2xvY2FsZSIsIl9sb2NhbGVJZHgiLCJzdWJIYXNNYW55TnVtYmVyRmllbGQiLCJzdWJIYXNNYW55VGV4dEZpZWxkIiwic3ViUmVsYXRpb25zVG9CdWlsZCIsImlkVG9VVUlEIiwicm9vdFJlbGF0aW9uc2hpcHMiLCJhcnJheVRhYmxlUmVsYXRpb25zIiwibWFueSIsImhhc0xvY2FsZXNUYWJsZSIsIl9sb2NhbGVzIiwibG9jYWxlc1N1ZmZpeCIsInZhbCIsImtleSIsImJsb2NrcyIsImJsb2NrIiwiYmxvY2tUYWJsZU5hbWUiLCJfcGF0aCIsInRleHQiLCJfcGF0aElkeCIsImJsb2NrVGFibGVSZWxhdGlvbnMiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJ2YWxpZGF0ZUV4aXN0aW5nQmxvY2tJc0lkZW50aWNhbCIsInRhYmxlIiwidGFibGVMb2NhbGVzIiwiYmxvY2tUYWJsZU5hbWVzIiwic2x1ZyIsImdyb3VwSGFzTG9jYWxpemVkRmllbGQiLCJncm91cEhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCIsImdyb3VwSGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCIsImdyb3VwSGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQiLCJncm91cEhhc01hbnlOdW1iZXJGaWVsZCIsImdyb3VwSGFzTWFueVRleHRGaWVsZCIsInRhYkhhc0xvY2FsaXplZEZpZWxkIiwidGFiSGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkIiwidGFiSGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCIsInRhYkhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkIiwidGFiSGFzTWFueU51bWJlckZpZWxkIiwidGFiSGFzTWFueVRleHRGaWVsZCIsInRhYnMiLCJ0YWIiLCJyb3dIYXNMb2NhbGl6ZWRGaWVsZCIsInJvd0hhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCIsInJvd0hhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQiLCJyb3dIYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCIsInJvd0hhc01hbnlOdW1iZXJGaWVsZCIsInJvd0hhc01hbnlUZXh0RmllbGQiLCJBcnJheSIsImlzQXJyYXkiLCJyZWxhdGlvblRvIiwicmVsYXRpb24iLCJhZGQiLCJyZXF1aXJlZCJdLCJyYW5nZU1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7IiwibWFwcGluZ3MiOiJBQUFBLG9DQUFvQzs7OzsrQkFvRXZCQTs7O2VBQUFBOzs7NEJBL0RhO3dCQWNuQjt3QkFDOEI7dUJBQ1k7b0VBQ3pCO2lDQUlRO3VCQUNMOzZCQUNDOzhCQUNDOzBCQUNKO21DQUNTO2tEQUNlOzs7Ozs7QUFvQzFDLE1BQU1BLGlCQUFpQixDQUFDLEVBQzdCQyxPQUFPLEVBQ1BDLFlBQVksRUFDWkMsa0JBQWtCLEVBQ2xCQyxVQUFVLEVBQ1ZDLFlBQVksRUFDWkMsT0FBTyxFQUNQQyxjQUFjLEVBQ2RDLGdCQUFnQixLQUFLLEVBQ3JCQyxXQUFXLEVBQ1hDLE1BQU0sRUFDTkMs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
566
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2hlbWEvdHJhdmVyc2VGaWVsZHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCB0eXBlIHsgUmVsYXRpb24gfSBmcm9tICdkcml6emxlLW9ybSdcbmltcG9ydCB0eXBlIHsgSW5kZXhCdWlsZGVyLCBQZ0NvbHVtbkJ1aWxkZXIgfSBmcm9tICdkcml6emxlLW9ybS9wZy1jb3JlJ1xuaW1wb3J0IHR5cGUgeyBGaWVsZCwgVGFiQXNGaWVsZCB9IGZyb20gJ3BheWxvYWQvdHlwZXMnXG5cbmltcG9ydCB7IHJlbGF0aW9ucyB9IGZyb20gJ2RyaXp6bGUtb3JtJ1xuaW1wb3J0IHtcbiAgUGdOdW1lcmljQnVpbGRlcixcbiAgUGdVVUlEQnVpbGRlcixcbiAgUGdWYXJjaGFyQnVpbGRlcixcbiAgYm9vbGVhbixcbiAgZm9yZWlnbktleSxcbiAgaW5kZXgsXG4gIGludGVnZXIsXG4gIGpzb25iLFxuICBudW1lcmljLFxuICBwZ0VudW0sXG4gIHRleHQsXG4gIHRpbWVzdGFtcCxcbiAgdmFyY2hhcixcbn0gZnJvbSAnZHJpenpsZS1vcm0vcGctY29yZSdcbmltcG9ydCB7IEludmFsaWRDb25maWd1cmF0aW9uIH0gZnJvbSAncGF5bG9hZC9lcnJvcnMnXG5pbXBvcnQgeyBmaWVsZEFmZmVjdHNEYXRhLCBvcHRpb25Jc09iamVjdCB9IGZyb20gJ3BheWxvYWQvdHlwZXMnXG5pbXBvcnQgdG9TbmFrZUNhc2UgZnJvbSAndG8tc25ha2UtY2FzZSdcblxuaW1wb3J0IHR5cGUgeyBHZW5lcmljQ29sdW1ucywgSURUeXBlLCBQb3N0Z3Jlc0FkYXB0ZXIgfSBmcm9tICcuLi90eXBlcydcbmltcG9ydCB0eXBlIHsgQmFzZUV4dHJhQ29uZmlnIH0gZnJvbSAnLi9idWlsZCdcblxuaW1wb3J0IHsgaGFzTG9jYWxlc1RhYmxlIH0gZnJvbSAnLi4vdXRpbGl0aWVzL2hhc0xvY2FsZXNUYWJsZSdcbmltcG9ydCB7IGJ1aWxkVGFibGUgfSBmcm9tICcuL2J1aWxkJ1xuaW1wb3J0IHsgY3JlYXRlSW5kZXggfSBmcm9tICcuL2NyZWF0ZUluZGV4J1xuaW1wb3J0IHsgY3JlYXRlVGFibGVOYW1lIH0gZnJvbSAnLi9jcmVhdGVUYWJsZU5hbWUnXG5pbXBvcnQgeyBpZFRvVVVJRCB9IGZyb20gJy4vaWRUb1VVSUQnXG5pbXBvcnQgeyBwYXJlbnRJRENvbHVtbk1hcCB9IGZyb20gJy4vcGFyZW50SURDb2x1bW5NYXAnXG5pbXBvcnQgeyB2YWxpZGF0ZUV4aXN0aW5nQmxvY2tJc0lkZW50aWNhbCB9IGZyb20gJy4vdmFsaWRhdGVFeGlzdGluZ0Jsb2NrSXNJZGVudGljYWwnXG5cbnR5cGUgQXJncyA9IHtcbiAgYWRhcHRlcjogUG9zdGdyZXNBZGFwdGVyXG4gIGJ1aWxkTnVtYmVyczogYm9vbGVhblxuICBidWlsZFJlbGF0aW9uc2hpcHM6IGJvb2xlYW5cbiAgYnVpbGRUZXh0czogYm9vbGVhblxuICBjb2x1bW5QcmVmaXg/OiBzdHJpbmdcbiAgY29sdW1uczogUmVjb3JkPHN0cmluZywgUGdDb2x1bW5CdWlsZGVyPlxuICBkaXNhYmxlTm90TnVsbDogYm9vbGVhblxuICBkaXNhYmxlVW5pcXVlPzogYm9vbGVhblxuICBmaWVsZFByZWZpeD86IHN0cmluZ1xuICBmaWVsZHM6IChGaWVsZCB8IFRhYkFzRmllbGQpW11cbiAgZm9yY2VMb2NhbGl6ZWQ/OiBib29sZWFuXG4gIGluZGV4ZXM6IFJlY29yZDxzdHJpbmcsIChjb2xzOiBHZW5lcmljQ29sdW1ucykgPT4gSW5kZXhCdWlsZGVyPlxuICBsb2NhbGVzQ29sdW1uczogUmVjb3JkPHN0cmluZywgUGdDb2x1bW5CdWlsZGVyPlxuICBsb2NhbGVzSW5kZXhlczogUmVjb3JkPHN0cmluZywgKGNvbHM6IEdlbmVyaWNDb2x1bW5zKSA9PiBJbmRleEJ1aWxkZXI+XG4gIG5ld1RhYmxlTmFtZTogc3RyaW5nXG4gIHBhcmVudFRhYmxlTmFtZTogc3RyaW5nXG4gIHJlbGF0aW9uc1RvQnVpbGQ6IE1hcDxzdHJpbmcsIHN0cmluZz5cbiAgcmVsYXRpb25zaGlwczogU2V0PHN0cmluZz5cbiAgcm9vdFJlbGF0aW9uc1RvQnVpbGQ/OiBNYXA8c3RyaW5nLCBzdHJpbmc+XG4gIHJvb3RUYWJsZUlEQ29sVHlwZTogc3RyaW5nXG4gIHJvb3RUYWJsZU5hbWU6IHN0cmluZ1xuICB2ZXJzaW9uczogYm9vbGVhblxufVxuXG50eXBlIFJlc3VsdCA9IHtcbiAgaGFzTG9jYWxpemVkRmllbGQ6IGJvb2xlYW5cbiAgaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkOiBib29sZWFuXG4gIGhhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQ6IGJvb2xlYW5cbiAgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQ6IGJvb2xlYW5cbiAgaGFzTWFueU51bWJlckZpZWxkOiAnaW5kZXgnIHwgYm9vbGVhblxuICBoYXNNYW55VGV4dEZpZWxkOiAnaW5kZXgnIHwgYm9vbGVhblxufVxuXG5leHBvcnQgY29uc3QgdHJhdmVyc2VGaWVsZHMgPSAoe1xuICBhZGFwdGVyLFxuICBidWlsZE51bWJlcnMsXG4gIGJ1aWxkUmVsYXRpb25zaGlwcyxcbiAgYnVpbGRUZXh0cyxcbiAgY29sdW1uUHJlZml4LFxuICBjb2x1bW5zLFxuICBkaXNhYmxlTm90TnVsbCxcbiAgZGlzYWJsZVVuaXF1ZSA9IGZhbHNlLFxuICBmaWVsZFByZWZpeCxcbiAgZmllbGRzLFxuICBmb3JjZUxvY2FsaXplZCxcbiAgaW5kZXhlcyxcbiAgbG9jYWxlc0NvbHVtbnMsXG4gIGxvY2FsZXNJbmRleGVzLFxuICBuZXdUYWJsZU5hbWUsXG4gIHBhcmVudFRhYmxlTmFtZSxcbiAgcmVsYXRpb25zVG9CdWlsZCxcbiAgcmVsYXRpb25zaGlwcyxcbiAgcm9vdFJlbGF0aW9uc1RvQnVpbGQsXG4gIHJvb3RUYWJsZUlEQ29sVHlwZSxcbiAgcm9vdFRhYmxlTmFtZSxcbiAgdmVyc2lvbnMsXG59OiBBcmdzKTogUmVzdWx0ID0+IHtcbiAgY29uc3QgdGhyb3dWYWxpZGF0aW9uRXJyb3IgPSB0cnVlXG4gIGxldCBoYXNMb2NhbGl6ZWRGaWVsZCA9IGZhbHNlXG4gIGxldCBoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCA9IGZhbHNlXG4gIGxldCBoYXNNYW55VGV4dEZpZWxkOiAnaW5kZXgnIHwgYm9vbGVhbiA9IGZhbHNlXG4gIGxldCBoYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkID0gZmFsc2VcbiAgbGV0IGhhc01hbnlOdW1iZXJGaWVsZDogJ2luZGV4JyB8IGJvb2xlYW4gPSBmYWxzZVxuICBsZXQgaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkID0gZmFsc2VcblxuICBsZXQgcGFyZW50SURDb2xUeXBlOiBJRFR5cGUgPSAnaW50ZWdlcidcbiAgaWYgKGNvbHVtbnMuaWQgaW5zdGFuY2VvZiBQZ1VVSURCdWlsZGVyKSBwYXJlbnRJRENvbFR5cGUgPSAndXVpZCdcbiAgaWYgKGNvbHVtbnMuaWQgaW5zdGFuY2VvZiBQZ051bWVyaWNCdWlsZGVyKSBwYXJlbnRJRENvbFR5cGUgPSAnbnVtZXJpYydcbiAgaWYgKGNvbHVtbnMuaWQgaW5zdGFuY2VvZiBQZ1ZhcmNoYXJCdWlsZGVyKSBwYXJlbnRJRENvbFR5cGUgPSAndmFyY2hhcidcblxuICBmaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICBpZiAoJ25hbWUnIGluIGZpZWxkICYmIGZpZWxkLm5hbWUgPT09ICdpZCcpIHJldHVyblxuICAgIGxldCBjb2x1bW5OYW1lOiBzdHJpbmdcbiAgICBsZXQgZmllbGROYW1lOiBzdHJpbmdcblxuICAgIGxldCB0YXJnZXRUYWJsZSA9IGNvbHVtbnNcbiAgICBsZXQgdGFyZ2V0SW5kZXhlcyA9IGluZGV4ZXNcblxuICAgIGlmIChmaWVsZEFmZmVjdHNEYXRhKGZpZWxkKSkge1xuICAgICAgY29sdW1uTmFtZSA9IGAke2NvbHVtblByZWZpeCB8fCAnJ30ke2ZpZWxkLm5hbWVbMF0gPT09ICdfJyA/ICdfJyA6ICcnfSR7dG9TbmFrZUNhc2UoXG4gICAgICAgIGZpZWxkLm5hbWUsXG4gICAgICApfWBcbiAgICAgIGZpZWxkTmFtZSA9IGAke2ZpZWxkUHJlZml4Py5yZXBsYWNlKCcuJywgJ18nKSB8fCAnJ30ke2ZpZWxkLm5hbWV9YFxuXG4gICAgICAvLyBJZiBmaWVsZCBpcyBsb2NhbGl6ZWQsXG4gICAgICAvLyBhZGQgdGhlIGNvbHVtbiB0byB0aGUgbG9jYWxlIHRhYmxlIGluc3RlYWQgb2YgbWFpbiB0YWJsZVxuICAgICAgaWYgKGFkYXB0ZXIucGF5bG9hZC5jb25maWcubG9jYWxpemF0aW9uICYmIChmaWVsZC5sb2NhbGl6ZWQgfHwgZm9yY2VMb2NhbGl6ZWQpKSB7XG4gICAgICAgIGhhc0xvY2FsaXplZEZpZWxkID0gdHJ1ZVxuICAgICAgICB0YXJnZXRUYWJsZSA9IGxvY2FsZXNDb2x1bW5zXG4gICAgICAgIHRhcmdldEluZGV4ZXMgPSBsb2NhbGVzSW5kZXhlc1xuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgIChmaWVsZC51bmlxdWUgfHwgZmllbGQuaW5kZXgpICYmXG4gICAgICAgICFbJ2FycmF5JywgJ2Jsb2NrcycsICdncm91cCcsICdwb2ludCcsICdyZWxhdGlvbnNoaXAnLCAndXBsb2FkJ10uaW5jbHVkZXMoZmllbGQudHlwZSkgJiZcbiAgICAgICAgISgnaGFzTWFueScgaW4gZmllbGQgJiYgZmllbGQuaGFzTWFueSA9PT0gdHJ1ZSlcbiAgICAgICkge1xuICAgICAgICBjb25zdCB1bmlxdWUgPSBkaXNhYmxlVW5pcXVlICE9PSB0cnVlICYmIGZpZWxkLnVuaXF1ZVxuICAgICAgICBpZiAodW5pcXVlKSB7XG4gICAgICAgICAgY29uc3QgY29uc3RyYWludFZhbHVlID0gYCR7ZmllbGRQcmVmaXggfHwgJyd9JHtmaWVsZC5uYW1lfWBcbiAgICAgICAgICBpZiAoIWFkYXB0ZXIuZmllbGRDb25zdHJhaW50cz8uW3Jvb3RUYWJsZU5hbWVdKSB7XG4gICAgICAgICAgICBhZGFwdGVyLmZpZWxkQ29uc3RyYWludHNbcm9vdFRhYmxlTmFtZV0gPSB7fVxuICAgICAgICAgIH1cbiAgICAgICAgICBhZGFwdGVyLmZpZWxkQ29uc3RyYWludHNbcm9vdFRhYmxlTmFtZV1bYCR7Y29sdW1uTmFtZX1faWR4YF0gPSBjb25zdHJhaW50VmFsdWVcbiAgICAgICAgfVxuICAgICAgICB0YXJnZXRJbmRleGVzW2Ake25ld1RhYmxlTmFtZX1fJHtmaWVsZC5uYW1lfUlkeGBdID0gY3JlYXRlSW5kZXgoe1xuICAgICAgICAgIG5hbWU6IGZpZWxkTmFtZSxcbiAgICAgICAgICBjb2x1bW5OYW1lLFxuICAgICAgICAgIHRhYmxlTmFtZTogbmV3VGFibGVOYW1lLFxuICAgICAgICAgIHVuaXF1ZSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzd2l0Y2ggKGZpZWxkLnR5cGUpIHtcbiAgICAgIGNhc2UgJ3RleHQnOiB7XG4gICAgICAgIGlmIChmaWVsZC5oYXNNYW55KSB7XG4gICAgICAgICAgaWYgKGZpZWxkLmxvY2FsaXplZCkge1xuICAgICAgICAgICAgaGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCA9IHRydWVcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoZmllbGQuaW5kZXgpIHtcbiAgICAgICAgICAgIGhhc01hbnlUZXh0RmllbGQgPSAnaW5kZXgnXG4gICAgICAgICAgfSBlbHNlIGlmICghaGFzTWFueVRleHRGaWVsZCkge1xuICAgICAgICAgICAgaGFzTWFueVRleHRGaWVsZCA9IHRydWVcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoZmllbGQudW5pcXVlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZENvbmZpZ3VyYXRpb24oXG4gICAgICAgICAgICAgICdVbmlxdWUgaXMgbm90IHN1cHBvcnRlZCBpbiBQb3N0Z3JlcyBmb3IgaGFzTWFueSB0ZXh0IGZpZWxkcy4nLFxuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0YXJnZXRUYWJsZVtmaWVsZE5hbWVdID0gdmFyY2hhcihjb2x1bW5OYW1lKVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgICBjYXNlICdlbWFpbCc6XG4gICAgICBjYXNlICdjb2RlJzpcbiAgICAgIGNhc2UgJ3RleHRhcmVhJzoge1xuICAgICAgICB0YXJnZXRUYWJsZVtmaWVsZE5hbWVdID0gdmFyY2hhcihjb2x1bW5OYW1lKVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICdudW1iZXInOiB7XG4gICAgICAgIGlmIChmaWVsZC5oYXNNYW55KSB7XG4gICAgICAgICAgaWYgKGZpZWxkLmxvY2FsaXplZCkge1xuICAgICAgICAgICAgaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkID0gdHJ1ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChmaWVsZC5pbmRleCkge1xuICAgICAgICAgICAgaGFzTWFueU51bWJlckZpZWxkID0gJ2luZGV4J1xuICAgICAgICAgIH0gZWxzZSBpZiAoIWhhc01hbnlOdW1iZXJGaWVsZCkge1xuICAgICAgICAgICAgaGFzTWFueU51bWJlckZpZWxkID0gdHJ1ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChmaWVsZC51bmlxdWUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQ29uZmlndXJhdGlvbihcbiAgICAgICAgICAgICAgJ1VuaXF1ZSBpcyBub3Qgc3VwcG9ydGVkIGluIFBvc3RncmVzIGZvciBoYXNNYW55IG51bWJlciBmaWVsZHMuJyxcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGFyZ2V0VGFibGVbZmllbGROYW1lXSA9IG51bWVyaWMoY29sdW1uTmFtZSlcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICdyaWNoVGV4dCc6XG4gICAgICBjYXNlICdqc29uJzoge1xuICAgICAgICB0YXJnZXRUYWJsZVtmaWVsZE5hbWVdID0ganNvbmIoY29sdW1uTmFtZSlcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAnZGF0ZSc6IHtcbiAgICAgICAgdGFyZ2V0VGFibGVbZmllbGROYW1lXSA9IHRpbWVzdGFtcChjb2x1bW5OYW1lLCB7XG4gICAgICAgICAgbW9kZTogJ3N0cmluZycsXG4gICAgICAgICAgcHJlY2lzaW9uOiAzLFxuICAgICAgICAgIHdpdGhUaW1lem9uZTogdHJ1ZSxcbiAgICAgICAgfSlcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAncG9pbnQnOiB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ3JhZGlvJzpcbiAgICAgIGNhc2UgJ3NlbGVjdCc6IHtcbiAgICAgICAgY29uc3QgZW51bU5hbWUgPSBjcmVhdGVUYWJsZU5hbWUoe1xuICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgY29uZmlnOiBmaWVsZCxcbiAgICAgICAgICBwYXJlbnRUYWJsZU5hbWU6IG5ld1RhYmxlTmFtZSxcbiAgICAgICAgICBwcmVmaXg6IGBlbnVtXyR7bmV3VGFibGVOYW1lfV9gLFxuICAgICAgICAgIHRhcmdldDogJ2VudW1OYW1lJyxcbiAgICAgICAgICB0aHJvd1ZhbGlkYXRpb25FcnJvcixcbiAgICAgICAgfSlcblxuICAgICAgICBhZGFwdGVyLmVudW1zW2VudW1OYW1lXSA9IHBnRW51bShcbiAgICAgICAgICBlbnVtTmFtZSxcbiAgICAgICAgICBmaWVsZC5vcHRpb25zLm1hcCgob3B0aW9uKSA9PiB7XG4gICAgICAgICAgICBpZiAob3B0aW9uSXNPYmplY3Qob3B0aW9uKSkge1xuICAgICAgICAgICAgICByZXR1cm4gb3B0aW9uLnZhbHVlXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBvcHRpb25cbiAgICAgICAgICB9KSBhcyBbc3RyaW5nLCAuLi5zdHJpbmdbXV0sXG4gICAgICAgIClcblxuICAgICAgICBpZiAoZmllbGQudHlwZSA9PT0gJ3NlbGVjdCcgJiYgZmllbGQuaGFzTWFueSkge1xuICAgICAgICAgIGNvbnN0IHNlbGVjdFRhYmxlTmFtZSA9IGNyZWF0ZVRhYmxlTmFtZSh7XG4gICAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgICAgY29uZmlnOiBmaWVsZCxcbiAgICAgICAgICAgIHBhcmVudFRhYmxlTmFtZTogbmV3VGFibGVOYW1lLFxuICAgICAgICAgICAgcHJlZml4OiBgJHtuZXdUYWJsZU5hbWV9X2AsXG4gICAgICAgICAgICB0aHJvd1ZhbGlkYXRpb25FcnJvcixcbiAgICAgICAgICB9KVxuICAgICAgICAgIGNvbnN0IGJhc2VDb2x1bW5zOiBSZWNvcmQ8c3RyaW5nLCBQZ0NvbHVtbkJ1aWxkZXI+ID0ge1xuICAgICAgICAgICAgb3JkZXI6IGludGVnZXIoJ29yZGVyJykubm90TnVsbCgpLFxuICAgICAgICAgICAgcGFyZW50OiBwYXJlbnRJRENvbHVtbk1hcFtwYXJlbnRJRENvbFR5cGVdKCdwYXJlbnRfaWQnKS5ub3ROdWxsKCksXG4gICAgICAgICAgICB2YWx1ZTogYWRhcHRlci5lbnVtc1tlbnVtTmFtZV0oJ3ZhbHVlJyksXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgYmFzZUV4dHJhQ29uZmlnOiBCYXNlRXh0cmFDb25maWcgPSB7XG4gICAgICAgICAgICBvcmRlcklkeDogKGNvbHMpID0+IGluZGV4KGAke3NlbGVjdFRhYmxlTmFtZX1fb3JkZXJfaWR4YCkub24oY29scy5vcmRlciksXG4gICAgICAgICAgICBwYXJlbnRGazogKGNvbHMpID0+XG4gICAgICAgICAgICAgIGZvcmVpZ25LZXkoe1xuICAgICAgICAgICAgICAgIG5hbWU6IGAke3NlbGVjdFRhYmxlTmFtZX1fcGFyZW50X2ZrYCxcbiAgICAgICAgICAgICAgICBjb2x1bW5zOiBbY29scy5wYXJlbnRdLFxuICAgICAgICAgICAgICAgIGZvcmVpZ25Db2x1bW5zOiBbYWRhcHRlci50YWJsZXNbcGFyZW50VGFibGVOYW1lXS5pZF0sXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgcGFyZW50SWR4OiAoY29scykgPT4gaW5kZXgoYCR7c2VsZWN0VGFibGVOYW1lfV9wYXJlbnRfaWR4YCkub24oY29scy5wYXJlbnQpLFxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQpIHtcbiAgICAgICAgICAgIGJhc2VDb2x1bW5zLmxvY2FsZSA9IGFkYXB0ZXIuZW51bXMuZW51bV9fbG9jYWxlcygnbG9jYWxlJykubm90TnVsbCgpXG4gICAgICAgICAgICBiYXNlRXh0cmFDb25maWcubG9jYWxlSWR4ID0gKGNvbHMpID0+XG4gICAgICAgICAgICAgIGluZGV4KGAke3NlbGVjdFRhYmxlTmFtZX1fbG9jYWxlX2lkeGApLm9uKGNvbHMubG9jYWxlKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChmaWVsZC5pbmRleCkge1xuICAgICAgICAgICAgYmFzZUV4dHJhQ29uZmlnLnZhbHVlID0gKGNvbHMpID0+IGluZGV4KGAke3NlbGVjdFRhYmxlTmFtZX1fdmFsdWVfaWR4YCkub24oY29scy52YWx1ZSlcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBidWlsZFRhYmxlKHtcbiAgICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgICBiYXNlQ29sdW1ucyxcbiAgICAgICAgICAgIGJhc2VFeHRyYUNvbmZpZyxcbiAgICAgICAgICAgIGRpc2FibGVOb3ROdWxsLFxuICAgICAgICAgICAgZGlzYWJsZVVuaXF1ZSxcbiAgICAgICAgICAgIGZpZWxkczogW10sXG4gICAgICAgICAgICB0YWJsZU5hbWU6IHNlbGVjdFRhYmxlTmFtZSxcbiAgICAgICAgICAgIHZlcnNpb25zLFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICByZWxhdGlvbnNUb0J1aWxkLnNldChmaWVsZE5hbWUsIHNlbGVjdFRhYmxlTmFtZSlcblxuICAgICAgICAgIGNvbnN0IHNlbGVjdFRhYmxlUmVsYXRpb25zID0gcmVsYXRpb25zKGFkYXB0ZXIudGFibGVzW3NlbGVjdFRhYmxlTmFtZV0sICh7IG9uZSB9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIFJlbGF0aW9uPHN0cmluZz4+ID0ge1xuICAgICAgICAgICAgICBwYXJlbnQ6IG9uZShhZGFwdGVyLnRhYmxlc1twYXJlbnRUYWJsZU5hbWVdLCB7XG4gICAgICAgICAgICAgICAgZmllbGRzOiBbYWRhcHRlci50YWJsZXNbc2VsZWN0VGFibGVOYW1lXS5wYXJlbnRdLFxuICAgICAgICAgICAgICAgIHJlZmVyZW5jZXM6IFthZGFwdGVyLnRhYmxlc1twYXJlbnRUYWJsZU5hbWVdLmlkXSxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgYWRhcHRlci5yZWxhdGlvbnNbYHJlbGF0aW9uXyR7c2VsZWN0VGFibGVOYW1lfWBdID0gc2VsZWN0VGFibGVSZWxhdGlvbnNcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0YXJnZXRUYWJsZVtmaWVsZE5hbWVdID0gYWRhcHRlci5lbnVtc1tlbnVtTmFtZV0oZmllbGROYW1lKVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ2NoZWNrYm94Jzoge1xuICAgICAgICB0YXJnZXRUYWJsZVtmaWVsZE5hbWVdID0gYm9vbGVhbihjb2x1bW5OYW1lKVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICdhcnJheSc6IHtcbiAgICAgICAgY29uc3QgZGlzYWJsZU5vdE51bGxGcm9tSGVyZSA9IEJvb2xlYW4oZmllbGQuYWRtaW4/LmNvbmRpdGlvbikgfHwgZGlzYWJsZU5vdE51bGxcblxuICAgICAgICBjb25zdCBhcnJheVRhYmxlTmFtZSA9IGNyZWF0ZVRhYmxlTmFtZSh7XG4gICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICBjb25maWc6IGZpZWxkLFxuICAgICAgICAgIHBhcmVudFRhYmxlTmFtZTogbmV3VGFibGVOYW1lLFxuICAgICAgICAgIHByZWZpeDogYCR7bmV3VGFibGVOYW1lfV9gLFxuICAgICAgICAgIHRocm93VmFsaWRhdGlvbkVycm9yLFxuICAgICAgICAgIHZlcnNpb25zQ3VzdG9tTmFtZTogdmVyc2lvbnMsXG4gICAgICAgIH0pXG5cbiAgICAgICAgY29uc3QgYmFzZUNvbHVtbnM6IFJlY29yZDxzdHJpbmcsIFBnQ29sdW1uQnVpbGRlcj4gPSB7XG4gICAgICAgICAgX29yZGVyOiBpbnRlZ2VyKCdfb3JkZXInKS5ub3ROdWxsKCksXG4gICAgICAgICAgX3BhcmVudElEOiBwYXJlbnRJRENvbHVtbk1hcFtwYXJlbnRJRENvbFR5cGVdKCdfcGFyZW50X2lkJykubm90TnVsbCgpLFxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYmFzZUV4dHJhQ29uZmlnOiBCYXNlRXh0cmFDb25maWcgPSB7XG4gICAgICAgICAgX29yZGVySWR4OiAoY29scykgPT4gaW5kZXgoYCR7YXJyYXlUYWJsZU5hbWV9X29yZGVyX2lkeGApLm9uKGNvbHMuX29yZGVyKSxcbiAgICAgICAgICBfcGFyZW50SURGazogKGNvbHMpID0+XG4gICAgICAgICAgICBmb3JlaWduS2V5KHtcbiAgICAgICAgICAgICAgbmFtZTogYCR7YXJyYXlUYWJsZU5hbWV9X3BhcmVudF9pZF9ma2AsXG4gICAgICAgICAgICAgIGNvbHVtbnM6IFtjb2xzWydfcGFyZW50SUQnXV0sXG4gICAgICAgICAgICAgIGZvcmVpZ25Db2x1bW5zOiBbYWRhcHRlci50YWJsZXNbcGFyZW50VGFibGVOYW1lXS5pZF0sXG4gICAgICAgICAgICB9KS5vbkRlbGV0ZSgnY2FzY2FkZScpLFxuICAgICAgICAgIF9wYXJlbnRJRElkeDogKGNvbHMpID0+IGluZGV4KGAke2FycmF5VGFibGVOYW1lfV9wYXJlbnRfaWRfaWR4YCkub24oY29scy5fcGFyZW50SUQpLFxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZpZWxkLmxvY2FsaXplZCAmJiBhZGFwdGVyLnBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbikge1xuICAgICAgICAgIGJhc2VDb2x1bW5zLl9sb2NhbGUgPSBhZGFwdGVyLmVudW1zLmVudW1fX2xvY2FsZXMoJ19sb2NhbGUnKS5ub3ROdWxsKClcbiAgICAgICAgICBiYXNlRXh0cmFDb25maWcuX2xvY2FsZUlkeCA9IChjb2xzKSA9PlxuICAgICAgICAgICAgaW5kZXgoYCR7YXJyYXlUYWJsZU5hbWV9X2xvY2FsZV9pZHhgKS5vbihjb2xzLl9sb2NhbGUpXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgaGFzTWFueU51bWJlckZpZWxkOiBzdWJIYXNNYW55TnVtYmVyRmllbGQsXG4gICAgICAgICAgaGFzTWFueVRleHRGaWVsZDogc3ViSGFzTWFueVRleHRGaWVsZCxcbiAgICAgICAgICByZWxhdGlvbnNUb0J1aWxkOiBzdWJSZWxhdGlvbnNUb0J1aWxkLFxuICAgICAgICB9ID0gYnVpbGRUYWJsZSh7XG4gICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICBiYXNlQ29sdW1ucyxcbiAgICAgICAgICBiYXNlRXh0cmFDb25maWcsXG4gICAgICAgICAgZGlzYWJsZU5vdE51bGw6IGRpc2FibGVOb3ROdWxsRnJvbUhlcmUsXG4gICAgICAgICAgZGlzYWJsZVVuaXF1ZSxcbiAgICAgICAgICBmaWVsZHM6IGRpc2FibGVVbmlxdWUgPyBpZFRvVVVJRChmaWVsZC5maWVsZHMpIDogZmllbGQuZmllbGRzLFxuICAgICAgICAgIHJvb3RSZWxhdGlvbnNUb0J1aWxkLFxuICAgICAgICAgIHJvb3RSZWxhdGlvbnNoaXBzOiByZWxhdGlvbnNoaXBzLFxuICAgICAgICAgIHJvb3RUYWJsZUlEQ29sVHlwZSxcbiAgICAgICAgICByb290VGFibGVOYW1lLFxuICAgICAgICAgIHRhYmxlTmFtZTogYXJyYXlUYWJsZU5hbWUsXG4gICAgICAgICAgdmVyc2lvbnMsXG4gICAgICAgIH0pXG5cbiAgICAgICAgaWYgKHN1Ykhhc01hbnlUZXh0RmllbGQpIHtcbiAgICAgICAgICBpZiAoIWhhc01hbnlUZXh0RmllbGQgfHwgc3ViSGFzTWFueVRleHRGaWVsZCA9PT0gJ2luZGV4JylcbiAgICAgICAgICAgIGhhc01hbnlUZXh0RmllbGQgPSBzdWJIYXNNYW55VGV4dEZpZWxkXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN1Ykhhc01hbnlOdW1iZXJGaWVsZCkge1xuICAgICAgICAgIGlmICghaGFzTWFueU51bWJlckZpZWxkIHx8IHN1Ykhhc01hbnlOdW1iZXJGaWVsZCA9PT0gJ2luZGV4JylcbiAgICAgICAgICAgIGhhc01hbnlOdW1iZXJGaWVsZCA9IHN1Ykhhc01hbnlOdW1iZXJGaWVsZFxuICAgICAgICB9XG5cbiAgICAgICAgcmVsYXRpb25zVG9CdWlsZC5zZXQoZmllbGROYW1lLCBhcnJheVRhYmxlTmFtZSlcblxuICAgICAgICBjb25zdCBhcnJheVRhYmxlUmVsYXRpb25zID0gcmVsYXRpb25zKGFkYXB0ZXIudGFibGVzW2FycmF5VGFibGVOYW1lXSwgKHsgbWFueSwgb25lIH0pID0+IHtcbiAgICAgICAgICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIFJlbGF0aW9uPHN0cmluZz4+ID0ge1xuICAgICAgICAgICAgX3BhcmVudElEOiBvbmUoYWRhcHRlci50YWJsZXNbcGFyZW50VGFibGVOYW1lXSwge1xuICAgICAgICAgICAgICBmaWVsZHM6IFthZGFwdGVyLnRhYmxlc1thcnJheVRhYmxlTmFtZV0uX3BhcmVudElEXSxcbiAgICAgICAgICAgICAgcmVmZXJlbmNlczogW2FkYXB0ZXIudGFibGVzW3BhcmVudFRhYmxlTmFtZV0uaWRdLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGhhc0xvY2FsZXNUYWJsZShmaWVsZC5maWVsZHMpKSB7XG4gICAgICAgICAgICByZXN1bHQuX2xvY2FsZXMgPSBtYW55KGFkYXB0ZXIudGFibGVzW2Ake2FycmF5VGFibGVOYW1lfSR7YWRhcHRlci5sb2NhbGVzU3VmZml4fWBdKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHN1YlJlbGF0aW9uc1RvQnVpbGQuZm9yRWFjaCgodmFsLCBrZXkpID0+IHtcbiAgICAgICAgICAgIHJlc3VsdFtrZXldID0gbWFueShhZGFwdGVyLnRhYmxlc1t2YWxdKVxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgICAgIH0pXG5cbiAgICAgICAgYWRhcHRlci5yZWxhdGlvbnNbYHJlbGF0aW9uc18ke2FycmF5VGFibGVOYW1lfWBdID0gYXJyYXlUYWJsZVJlbGF0aW9uc1xuXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ2Jsb2Nrcyc6IHtcbiAgICAgICAgY29uc3QgZGlzYWJsZU5vdE51bGxGcm9tSGVyZSA9IEJvb2xlYW4oZmllbGQuYWRtaW4/LmNvbmRpdGlvbikgfHwgZGlzYWJsZU5vdE51bGxcblxuICAgICAgICBmaWVsZC5ibG9ja3MuZm9yRWFjaCgoYmxvY2spID0+IHtcbiAgICAgICAgICBjb25zdCBibG9ja1RhYmxlTmFtZSA9IGNyZWF0ZVRhYmxlTmFtZSh7XG4gICAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgICAgY29uZmlnOiBibG9jayxcbiAgICAgICAgICAgIHBhcmVudFRhYmxlTmFtZTogcm9vdFRhYmxlTmFtZSxcbiAgICAgICAgICAgIHByZWZpeDogYCR7cm9vdFRhYmxlTmFtZX1fYmxvY2tzX2AsXG4gICAgICAgICAgICB0aHJvd1ZhbGlkYXRpb25FcnJvcixcbiAgICAgICAgICAgIHZlcnNpb25zQ3VzdG9tTmFtZTogdmVyc2lvbnMsXG4gICAgICAgICAgfSlcbiAgICAgICAgICBpZiAoIWFkYXB0ZXIudGFibGVzW2Jsb2NrVGFibGVOYW1lXSkge1xuICAgICAgICAgICAgY29uc3QgYmFzZUNvbHVtbnM6IFJlY29yZDxzdHJpbmcsIFBnQ29sdW1uQnVpbGRlcj4gPSB7XG4gICAgICAgICAgICAgIF9vcmRlcjogaW50ZWdlcignX29yZGVyJykubm90TnVsbCgpLFxuICAgICAgICAgICAgICBfcGFyZW50SUQ6IHBhcmVudElEQ29sdW1uTWFwW3Jvb3RUYWJsZUlEQ29sVHlwZV0oJ19wYXJlbnRfaWQnKS5ub3ROdWxsKCksXG4gICAgICAgICAgICAgIF9wYXRoOiB0ZXh0KCdfcGF0aCcpLm5vdE51bGwoKSxcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgYmFzZUV4dHJhQ29uZmlnOiBCYXNlRXh0cmFDb25maWcgPSB7XG4gICAgICAgICAgICAgIF9vcmRlcklkeDogKGNvbHMpID0+IGluZGV4KGAke2Jsb2NrVGFibGVOYW1lfV9vcmRlcl9pZHhgKS5vbihjb2xzLl9vcmRlciksXG4gICAgICAgICAgICAgIF9wYXJlbnRJRElkeDogKGNvbHMpID0+IGluZGV4KGAke2Jsb2NrVGFibGVOYW1lfV9wYXJlbnRfaWRfaWR4YCkub24oY29scy5fcGFyZW50SUQpLFxuICAgICAgICAgICAgICBfcGFyZW50SWRGazogKGNvbHMpID0+XG4gICAgICAgICAgICAgICAgZm9yZWlnbktleSh7XG4gICAgICAgICAgICAgICAgICBuYW1lOiBgJHtibG9ja1RhYmxlTmFtZX1fcGFyZW50X2lkX2ZrYCxcbiAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IFtjb2xzLl9wYXJlbnRJRF0sXG4gICAgICAgICAgICAgICAgICBmb3JlaWduQ29sdW1uczogW2FkYXB0ZXIudGFibGVzW3Jvb3RUYWJsZU5hbWVdLmlkXSxcbiAgICAgICAgICAgICAgICB9KS5vbkRlbGV0ZSgnY2FzY2FkZScpLFxuICAgICAgICAgICAgICBfcGF0aElkeDogKGNvbHMpID0+IGluZGV4KGAke2Jsb2NrVGFibGVOYW1lfV9wYXRoX2lkeGApLm9uKGNvbHMuX3BhdGgpLFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZmllbGQubG9jYWxpemVkICYmIGFkYXB0ZXIucGF5bG9hZC5jb25maWcubG9jYWxpemF0aW9uKSB7XG4gICAgICAgICAgICAgIGJhc2VDb2x1bW5zLl9sb2NhbGUgPSBhZGFwdGVyLmVudW1zLmVudW1fX2xvY2FsZXMoJ19sb2NhbGUnKS5ub3ROdWxsKClcbiAgICAgICAgICAgICAgYmFzZUV4dHJhQ29uZmlnLl9sb2NhbGVJZHggPSAoY29scykgPT5cbiAgICAgICAgICAgICAgICBpbmRleChgJHtibG9ja1RhYmxlTmFtZX1fbG9jYWxlX2lkeGApLm9uKGNvbHMuX2xvY2FsZSlcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICBoYXNNYW55TnVtYmVyRmllbGQ6IHN1Ykhhc01hbnlOdW1iZXJGaWVsZCxcbiAgICAgICAgICAgICAgaGFzTWFueVRleHRGaWVsZDogc3ViSGFzTWFueVRleHRGaWVsZCxcbiAgICAgICAgICAgICAgcmVsYXRpb25zVG9CdWlsZDogc3ViUmVsYXRpb25zVG9CdWlsZCxcbiAgICAgICAgICAgIH0gPSBidWlsZFRhYmxlKHtcbiAgICAgICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICAgICAgYmFzZUNvbHVtbnMsXG4gICAgICAgICAgICAgIGJhc2VFeHRyYUNvbmZpZyxcbiAgICAgICAgICAgICAgZGlzYWJsZU5vdE51bGw6IGRpc2FibGVOb3ROdWxsRnJvbUhlcmUsXG4gICAgICAgICAgICAgIGRpc2FibGVVbmlxdWUsXG4gICAgICAgICAgICAgIGZpZWxkczogZGlzYWJsZVVuaXF1ZSA/IGlkVG9VVUlEKGJsb2NrLmZpZWxkcykgOiBibG9jay5maWVsZHMsXG4gICAgICAgICAgICAgIHJvb3RSZWxhdGlvbnNUb0J1aWxkLFxuICAgICAgICAgICAgICByb290UmVsYXRpb25zaGlwczogcmVsYXRpb25zaGlwcyxcbiAgICAgICAgICAgICAgcm9vdFRhYmxlSURDb2xUeXBlLFxuICAgICAgICAgICAgICByb290VGFibGVOYW1lLFxuICAgICAgICAgICAgICB0YWJsZU5hbWU6IGJsb2NrVGFibGVOYW1lLFxuICAgICAgICAgICAgICB2ZXJzaW9ucyxcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIGlmIChzdWJIYXNNYW55VGV4dEZpZWxkKSB7XG4gICAgICAgICAgICAgIGlmICghaGFzTWFueVRleHRGaWVsZCB8fCBzdWJIYXNNYW55VGV4dEZpZWxkID09PSAnaW5kZXgnKVxuICAgICAgICAgICAgICAgIGhhc01hbnlUZXh0RmllbGQgPSBzdWJIYXNNYW55VGV4dEZpZWxkXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChzdWJIYXNNYW55TnVtYmVyRmllbGQpIHtcbiAgICAgICAgICAgICAgaWYgKCFoYXNNYW55TnVtYmVyRmllbGQgfHwgc3ViSGFzTWFueU51bWJlckZpZWxkID09PSAnaW5kZXgnKVxuICAgICAgICAgICAgICAgIGhhc01hbnlOdW1iZXJGaWVsZCA9IHN1Ykhhc01hbnlOdW1iZXJGaWVsZFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBibG9ja1RhYmxlUmVsYXRpb25zID0gcmVsYXRpb25zKFxuICAgICAgICAgICAgICBhZGFwdGVyLnRhYmxlc1tibG9ja1RhYmxlTmFtZV0sXG4gICAgICAgICAgICAgICh7IG1hbnksIG9uZSB9KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBSZWxhdGlvbjxzdHJpbmc+PiA9IHtcbiAgICAgICAgICAgICAgICAgIF9wYXJlbnRJRDogb25lKGFkYXB0ZXIudGFibGVzW3Jvb3RUYWJsZU5hbWVdLCB7XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkczogW2FkYXB0ZXIudGFibGVzW2Jsb2NrVGFibGVOYW1lXS5fcGFyZW50SURdLFxuICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VzOiBbYWRhcHRlci50YWJsZXNbcm9vdFRhYmxlTmFtZV0uaWRdLFxuICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGhhc0xvY2FsZXNUYWJsZShibG9jay5maWVsZHMpKSB7XG4gICAgICAgICAgICAgICAgICByZXN1bHQuX2xvY2FsZXMgPSBtYW55KFxuICAgICAgICAgICAgICAgICAgICBhZGFwdGVyLnRhYmxlc1tgJHtibG9ja1RhYmxlTmFtZX0ke2FkYXB0ZXIubG9jYWxlc1N1ZmZpeH1gXSxcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBzdWJSZWxhdGlvbnNUb0J1aWxkLmZvckVhY2goKHZhbCwga2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgICByZXN1bHRba2V5XSA9IG1hbnkoYWRhcHRlci50YWJsZXNbdmFsXSlcbiAgICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICBhZGFwdGVyLnJlbGF0aW9uc1tgcmVsYXRpb25zXyR7YmxvY2tUYWJsZU5hbWV9YF0gPSBibG9ja1RhYmxlUmVsYXRpb25zXG4gICAgICAgICAgfSBlbHNlIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmICF2ZXJzaW9ucykge1xuICAgICAgICAgICAgdmFsaWRhdGVFeGlzdGluZ0Jsb2NrSXNJZGVudGljYWwoe1xuICAgICAgICAgICAgICBibG9jayxcbiAgICAgICAgICAgICAgbG9jYWxpemVkOiBmaWVsZC5sb2NhbGl6ZWQsXG4gICAgICAgICAgICAgIHJvb3RUYWJsZU5hbWUsXG4gICAgICAgICAgICAgIHRhYmxlOiBhZGFwdGVyLnRhYmxlc1tibG9ja1RhYmxlTmFtZV0sXG4gICAgICAgICAgICAgIHRhYmxlTG9jYWxlczogYWRhcHRlci50YWJsZXNbYCR7YmxvY2tUYWJsZU5hbWV9JHthZGFwdGVyLmxvY2FsZXNTdWZmaXh9YF0sXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgICByb290UmVsYXRpb25zVG9CdWlsZC5zZXQoYF9ibG9ja3NfJHtibG9jay5zbHVnfWAsIGJsb2NrVGFibGVOYW1lKVxuICAgICAgICB9KVxuXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ3RhYic6XG4gICAgICBjYXNlICdncm91cCc6IHtcbiAgICAgICAgaWYgKCEoJ25hbWUnIGluIGZpZWxkKSkge1xuICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGhhc0xvY2FsaXplZEZpZWxkOiBncm91cEhhc0xvY2FsaXplZEZpZWxkLFxuICAgICAgICAgICAgaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkOiBncm91cEhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCxcbiAgICAgICAgICAgIGhhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQ6IGdyb3VwSGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCxcbiAgICAgICAgICAgIGhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkOiBncm91cEhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkLFxuICAgICAgICAgICAgaGFzTWFueU51bWJlckZpZWxkOiBncm91cEhhc01hbnlOdW1iZXJGaWVsZCxcbiAgICAgICAgICAgIGhhc01hbnlUZXh0RmllbGQ6IGdyb3VwSGFzTWFueVRleHRGaWVsZCxcbiAgICAgICAgICB9ID0gdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICAgIGJ1aWxkTnVtYmVycyxcbiAgICAgICAgICAgIGJ1aWxkUmVsYXRpb25zaGlwcyxcbiAgICAgICAgICAgIGJ1aWxkVGV4dHMsXG4gICAgICAgICAgICBjb2x1bW5QcmVmaXgsXG4gICAgICAgICAgICBjb2x1bW5zLFxuICAgICAgICAgICAgZGlzYWJsZU5vdE51bGwsXG4gICAgICAgICAgICBkaXNhYmxlVW5pcXVlLFxuICAgICAgICAgICAgZmllbGRQcmVmaXgsXG4gICAgICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICAgIGZvcmNlTG9jYWxpemVkLFxuICAgICAgICAgICAgaW5kZXhlcyxcbiAgICAgICAgICAgIGxvY2FsZXNDb2x1bW5zLFxuICAgICAgICAgICAgbG9jYWxlc0luZGV4ZXMsXG4gICAgICAgICAgICBuZXdUYWJsZU5hbWUsXG4gICAgICAgICAgICBwYXJlbnRUYWJsZU5hbWUsXG4gICAgICAgICAgICByZWxhdGlvbnNUb0J1aWxkLFxuICAgICAgICAgICAgcmVsYXRpb25zaGlwcyxcbiAgICAgICAgICAgIHJvb3RSZWxhdGlvbnNUb0J1aWxkLFxuICAgICAgICAgICAgcm9vdFRhYmxlSURDb2xUeXBlLFxuICAgICAgICAgICAgcm9vdFRhYmxlTmFtZSxcbiAgICAgICAgICAgIHZlcnNpb25zLFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICBpZiAoZ3JvdXBIYXNMb2NhbGl6ZWRGaWVsZCkgaGFzTG9jYWxpemVkRmllbGQgPSB0cnVlXG4gICAgICAgICAgaWYgKGdyb3VwSGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQpIGhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkID0gdHJ1ZVxuICAgICAgICAgIGlmIChncm91cEhhc01hbnlUZXh0RmllbGQpIGhhc01hbnlUZXh0RmllbGQgPSB0cnVlXG4gICAgICAgICAgaWYgKGdyb3VwSGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCkgaGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCA9IHRydWVcbiAgICAgICAgICBpZiAoZ3JvdXBIYXNNYW55TnVtYmVyRmllbGQpIGhhc01hbnlOdW1iZXJGaWVsZCA9IHRydWVcbiAgICAgICAgICBpZiAoZ3JvdXBIYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQpIGhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCA9IHRydWVcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGlzYWJsZU5vdE51bGxGcm9tSGVyZSA9IEJvb2xlYW4oZmllbGQuYWRtaW4/LmNvbmRpdGlvbikgfHwgZGlzYWJsZU5vdE51bGxcblxuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgaGFzTG9jYWxpemVkRmllbGQ6IGdyb3VwSGFzTG9jYWxpemVkRmllbGQsXG4gICAgICAgICAgaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkOiBncm91cEhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCxcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkOiBncm91cEhhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQsXG4gICAgICAgICAgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQ6IGdyb3VwSGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQsXG4gICAgICAgICAgaGFzTWFueU51bWJlckZpZWxkOiBncm91cEhhc01hbnlOdW1iZXJGaWVsZCxcbiAgICAgICAgICBoYXNNYW55VGV4dEZpZWxkOiBncm91cEhhc01hbnlUZXh0RmllbGQsXG4gICAgICAgIH0gPSB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICBidWlsZE51bWJlcnMsXG4gICAgICAgICAgYnVpbGRSZWxhdGlvbnNoaXBzLFxuICAgICAgICAgIGJ1aWxkVGV4dHMsXG4gICAgICAgICAgY29sdW1uUHJlZml4OiBgJHtjb2x1bW5OYW1lfV9gLFxuICAgICAgICAgIGNvbHVtbnMsXG4gICAgICAgICAgZGlzYWJsZU5vdE51bGw6IGRpc2FibGVOb3ROdWxsRnJvbUhlcmUsXG4gICAgICAgICAgZGlzYWJsZVVuaXF1ZSxcbiAgICAgICAgICBmaWVsZFByZWZpeDogYCR7ZmllbGROYW1lfS5gLFxuICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICAgIGZvcmNlTG9jYWxpemVkOiBmaWVsZC5sb2NhbGl6ZWQsXG4gICAgICAgICAgaW5kZXhlcyxcbiAgICAgICAgICBsb2NhbGVzQ29sdW1ucyxcbiAgICAgICAgICBsb2NhbGVzSW5kZXhlcyxcbiAgICAgICAgICBuZXdUYWJsZU5hbWU6IGAke3BhcmVudFRhYmxlTmFtZX1fJHtjb2x1bW5OYW1lfWAsXG4gICAgICAgICAgcGFyZW50VGFibGVOYW1lLFxuICAgICAgICAgIHJlbGF0aW9uc1RvQnVpbGQsXG4gICAgICAgICAgcmVsYXRpb25zaGlwcyxcbiAgICAgICAgICByb290UmVsYXRpb25zVG9CdWlsZCxcbiAgICAgICAgICByb290VGFibGVJRENvbFR5cGUsXG4gICAgICAgICAgcm9vdFRhYmxlTmFtZSxcbiAgICAgICAgICB2ZXJzaW9ucyxcbiAgICAgICAgfSlcblxuICAgICAgICBpZiAoZ3JvdXBIYXNMb2NhbGl6ZWRGaWVsZCkgaGFzTG9jYWxpemVkRmllbGQgPSB0cnVlXG4gICAgICAgIGlmIChncm91cEhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkKSBoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKGdyb3VwSGFzTWFueVRleHRGaWVsZCkgaGFzTWFueVRleHRGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKGdyb3VwSGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCkgaGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKGdyb3VwSGFzTWFueU51bWJlckZpZWxkKSBoYXNNYW55TnVtYmVyRmllbGQgPSB0cnVlXG4gICAgICAgIGlmIChncm91cEhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCkgaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkID0gdHJ1ZVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICd0YWJzJzoge1xuICAgICAgICBjb25zdCBkaXNhYmxlTm90TnVsbEZyb21IZXJlID0gQm9vbGVhbihmaWVsZC5hZG1pbj8uY29uZGl0aW9uKSB8fCBkaXNhYmxlTm90TnVsbFxuXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRGaWVsZDogdGFiSGFzTG9jYWxpemVkRmllbGQsXG4gICAgICAgICAgaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkOiB0YWJIYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQsXG4gICAgICAgICAgaGFzTG9jYWxpemVkTWFueVRleHRGaWVsZDogdGFiSGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCxcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZDogdGFiSGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQsXG4gICAgICAgICAgaGFzTWFueU51bWJlckZpZWxkOiB0YWJIYXNNYW55TnVtYmVyRmllbGQsXG4gICAgICAgICAgaGFzTWFueVRleHRGaWVsZDogdGFiSGFzTWFueVRleHRGaWVsZCxcbiAgICAgICAgfSA9IHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgIGJ1aWxkTnVtYmVycyxcbiAgICAgICAgICBidWlsZFJlbGF0aW9uc2hpcHMsXG4gICAgICAgICAgYnVpbGRUZXh0cyxcbiAgICAgICAgICBjb2x1bW5QcmVmaXgsXG4gICAgICAgICAgY29sdW1ucyxcbiAgICAgICAgICBkaXNhYmxlTm90TnVsbDogZGlzYWJsZU5vdE51bGxGcm9tSGVyZSxcbiAgICAgICAgICBkaXNhYmxlVW5pcXVlLFxuICAgICAgICAgIGZpZWxkUHJlZml4LFxuICAgICAgICAgIGZpZWxkczogZmllbGQudGFicy5tYXAoKHRhYikgPT4gKHsgLi4udGFiLCB0eXBlOiAndGFiJyB9KSksXG4gICAgICAgICAgZm9yY2VMb2NhbGl6ZWQsXG4gICAgICAgICAgaW5kZXhlcyxcbiAgICAgICAgICBsb2NhbGVzQ29sdW1ucyxcbiAgICAgICAgICBsb2NhbGVzSW5kZXhlcyxcbiAgICAgICAgICBuZXdUYWJsZU5hbWUsXG4gICAgICAgICAgcGFyZW50VGFibGVOYW1lLFxuICAgICAgICAgIHJlbGF0aW9uc1RvQnVpbGQsXG4gICAgICAgICAgcmVsYXRpb25zaGlwcyxcbiAgICAgICAgICByb290UmVsYXRpb25zVG9CdWlsZCxcbiAgICAgICAgICByb290VGFibGVJRENvbFR5cGUsXG4gICAgICAgICAgcm9vdFRhYmxlTmFtZSxcbiAgICAgICAgICB2ZXJzaW9ucyxcbiAgICAgICAgfSlcblxuICAgICAgICBpZiAodGFiSGFzTG9jYWxpemVkRmllbGQpIGhhc0xvY2FsaXplZEZpZWxkID0gdHJ1ZVxuICAgICAgICBpZiAodGFiSGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQpIGhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkID0gdHJ1ZVxuICAgICAgICBpZiAodGFiSGFzTWFueVRleHRGaWVsZCkgaGFzTWFueVRleHRGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKHRhYkhhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQpIGhhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQgPSB0cnVlXG4gICAgICAgIGlmICh0YWJIYXNNYW55TnVtYmVyRmllbGQpIGhhc01hbnlOdW1iZXJGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKHRhYkhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCkgaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkID0gdHJ1ZVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICdyb3cnOlxuICAgICAgY2FzZSAnY29sbGFwc2libGUnOiB7XG4gICAgICAgIGNvbnN0IGRpc2FibGVOb3ROdWxsRnJvbUhlcmUgPSBCb29sZWFuKGZpZWxkLmFkbWluPy5jb25kaXRpb24pIHx8IGRpc2FibGVOb3ROdWxsXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRGaWVsZDogcm93SGFzTG9jYWxpemVkRmllbGQsXG4gICAgICAgICAgaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkOiByb3dIYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQsXG4gICAgICAgICAgaGFzTG9jYWxpemVkTWFueVRleHRGaWVsZDogcm93SGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCxcbiAgICAgICAgICBoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZDogcm93SGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQsXG4gICAgICAgICAgaGFzTWFueU51bWJlckZpZWxkOiByb3dIYXNNYW55TnVtYmVyRmllbGQsXG4gICAgICAgICAgaGFzTWFueVRleHRGaWVsZDogcm93SGFzTWFueVRleHRGaWVsZCxcbiAgICAgICAgfSA9IHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgIGJ1aWxkTnVtYmVycyxcbiAgICAgICAgICBidWlsZFJlbGF0aW9uc2hpcHMsXG4gICAgICAgICAgYnVpbGRUZXh0cyxcbiAgICAgICAgICBjb2x1bW5QcmVmaXgsXG4gICAgICAgICAgY29sdW1ucyxcbiAgICAgICAgICBkaXNhYmxlTm90TnVsbDogZGlzYWJsZU5vdE51bGxGcm9tSGVyZSxcbiAgICAgICAgICBkaXNhYmxlVW5pcXVlLFxuICAgICAgICAgIGZpZWxkUHJlZml4LFxuICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICAgIGZvcmNlTG9jYWxpemVkLFxuICAgICAgICAgIGluZGV4ZXMsXG4gICAgICAgICAgbG9jYWxlc0NvbHVtbnMsXG4gICAgICAgICAgbG9jYWxlc0luZGV4ZXMsXG4gICAgICAgICAgbmV3VGFibGVOYW1lLFxuICAgICAgICAgIHBhcmVudFRhYmxlTmFtZSxcbiAgICAgICAgICByZWxhdGlvbnNUb0J1aWxkLFxuICAgICAgICAgIHJlbGF0aW9uc2hpcHMsXG4gICAgICAgICAgcm9vdFJlbGF0aW9uc1RvQnVpbGQsXG4gICAgICAgICAgcm9vdFRhYmxlSURDb2xUeXBlLFxuICAgICAgICAgIHJvb3RUYWJsZU5hbWUsXG4gICAgICAgICAgdmVyc2lvbnMsXG4gICAgICAgIH0pXG5cbiAgICAgICAgaWYgKHJvd0hhc0xvY2FsaXplZEZpZWxkKSBoYXNMb2NhbGl6ZWRGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKHJvd0hhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkKSBoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCA9IHRydWVcbiAgICAgICAgaWYgKHJvd0hhc01hbnlUZXh0RmllbGQpIGhhc01hbnlUZXh0RmllbGQgPSB0cnVlXG4gICAgICAgIGlmIChyb3dIYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkKSBoYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkID0gdHJ1ZVxuICAgICAgICBpZiAocm93SGFzTWFueU51bWJlckZpZWxkKSBoYXNNYW55TnVtYmVyRmllbGQgPSB0cnVlXG4gICAgICAgIGlmIChyb3dIYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQpIGhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCA9IHRydWVcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAncmVsYXRpb25zaGlwJzpcbiAgICAgIGNhc2UgJ3VwbG9hZCc6XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGZpZWxkLnJlbGF0aW9uVG8pKSB7XG4gICAgICAgICAgZmllbGQucmVsYXRpb25Uby5mb3JFYWNoKChyZWxhdGlvbikgPT4gcmVsYXRpb25zaGlwcy5hZGQocmVsYXRpb24pKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlbGF0aW9uc2hpcHMuYWRkKGZpZWxkLnJlbGF0aW9uVG8pXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZmllbGQubG9jYWxpemVkICYmIGFkYXB0ZXIucGF5bG9hZC5jb25maWcubG9jYWxpemF0aW9uKSB7XG4gICAgICAgICAgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQgPSB0cnVlXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBjb25zdCBjb25kaXRpb24gPSBmaWVsZC5hZG1pbiAmJiBmaWVsZC5hZG1pbi5jb25kaXRpb25cblxuICAgIGlmIChcbiAgICAgICFkaXNhYmxlTm90TnVsbCAmJlxuICAgICAgdGFyZ2V0VGFibGVbZmllbGROYW1lXSAmJlxuICAgICAgJ3JlcXVpcmVkJyBpbiBmaWVsZCAmJlxuICAgICAgZmllbGQucmVxdWlyZWQgJiZcbiAgICAgICFjb25kaXRpb25cbiAgICApIHtcbiAgICAgIHRhcmdldFRhYmxlW2ZpZWxkTmFtZV0ubm90TnVsbCgpXG4gICAgfVxuICB9KVxuXG4gIHJldHVybiB7XG4gICAgaGFzTG9jYWxpemVkRmllbGQsXG4gICAgaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkLFxuICAgIGhhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQsXG4gICAgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQsXG4gICAgaGFzTWFueU51bWJlckZpZWxkLFxuICAgIGhhc01hbnlUZXh0RmllbGQsXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJ0cmF2ZXJzZUZpZWxkcyIsImFkYXB0ZXIiLCJidWlsZE51bWJlcnMiLCJidWlsZFJlbGF0aW9uc2hpcHMiLCJidWlsZFRleHRzIiwiY29sdW1uUHJlZml4IiwiY29sdW1ucyIsImRpc2FibGVOb3ROdWxsIiwiZGlzYWJsZVVuaXF1ZSIsImZpZWxkUHJlZml4IiwiZmllbGRzIiwiZm9yY2VMb2NhbGl6ZWQiLCJpbmRleGVzIiwibG9jYWxlc0NvbHVtbnMiLCJsb2NhbGVzSW5kZXhlcyIsIm5ld1RhYmxlTmFtZSIsInBhcmVudFRhYmxlTmFtZSIsInJlbGF0aW9uc1RvQnVpbGQiLCJyZWxhdGlvbnNoaXBzIiwicm9vdFJlbGF0aW9uc1RvQnVpbGQiLCJyb290VGFibGVJRENvbFR5cGUiLCJyb290VGFibGVOYW1lIiwidmVyc2lvbnMiLCJ0aHJvd1ZhbGlkYXRpb25FcnJvciIsImhhc0xvY2FsaXplZEZpZWxkIiwiaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQiLCJoYXNNYW55VGV4dEZpZWxkIiwiaGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCIsImhhc01hbnlOdW1iZXJGaWVsZCIsImhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCIsInBhcmVudElEQ29sVHlwZSIsImlkIiwiUGdVVUlEQnVpbGRlciIsIlBnTnVtZXJpY0J1aWxkZXIiLCJQZ1ZhcmNoYXJCdWlsZGVyIiwiZm9yRWFjaCIsImZpZWxkIiwibmFtZSIsImNvbHVtbk5hbWUiLCJmaWVsZE5hbWUiLCJ0YXJnZXRUYWJsZSIsInRhcmdldEluZGV4ZXMiLCJmaWVsZEFmZmVjdHNEYXRhIiwidG9TbmFrZUNhc2UiLCJyZXBsYWNlIiwicGF5bG9hZCIsImNvbmZpZyIsImxvY2FsaXphdGlvbiIsImxvY2FsaXplZCIsInVuaXF1ZSIsImluZGV4IiwiaW5jbHVkZXMiLCJ0eXBlIiwiaGFzTWFueSIsImNvbnN0cmFpbnRWYWx1ZSIsImZpZWxkQ29uc3RyYWludHMiLCJjcmVhdGVJbmRleCIsInRhYmxlTmFtZSIsIkludmFsaWRDb25maWd1cmF0aW9uIiwidmFyY2hhciIsIm51bWVyaWMiLCJqc29uYiIsInRpbWVzdGFtcCIsIm1vZGUiLCJwcmVjaXNpb24iLCJ3aXRoVGltZXpvbmUiLCJlbnVtTmFtZSIsImNyZWF0ZVRhYmxlTmFtZSIsInByZWZpeCIsInRhcmdldCIsImVudW1zIiwicGdFbnVtIiwib3B0aW9ucyIsIm1hcCIsIm9wdGlvbiIsIm9wdGlvbklzT2JqZWN0IiwidmFsdWUiLCJzZWxlY3RUYWJsZU5hbWUiLCJiYXNlQ29sdW1ucyIsIm9yZGVyIiwiaW50ZWdlciIsIm5vdE51bGwiLCJwYXJlbnQiLCJwYXJlbnRJRENvbHVtbk1hcCIsImJhc2VFeHRyYUNvbmZpZyIsIm9yZGVySWR4IiwiY29scyIsIm9uIiwicGFyZW50RmsiLCJmb3JlaWduS2V5IiwiZm9yZWlnbkNvbHVtbnMiLCJ0YWJsZXMiLCJwYXJlbnRJZHgiLCJsb2NhbGUiLCJlbnVtX19sb2NhbGVzIiwibG9jYWxlSWR4IiwiYnVpbGRUYWJsZSIsInNldCIsInNlbGVjdFRhYmxlUmVsYXRpb25zIiwicmVsYXRpb25zIiwib25lIiwicmVzdWx0IiwicmVmZXJlbmNlcyIsImJvb2xlYW4iLCJkaXNhYmxlTm90TnVsbEZyb21IZXJlIiwiQm9vbGVhbiIsImFkbWluIiwiY29uZGl0aW9uIiwiYXJyYXlUYWJsZU5hbWUiLCJ2ZXJzaW9uc0N1c3RvbU5hbWUiLCJfb3JkZXIiLCJfcGFyZW50SUQiLCJfb3JkZXJJZHgiLCJfcGFyZW50SURGayIsIm9uRGVsZXRlIiwiX3BhcmVudElESWR4IiwiX2xvY2FsZSIsIl9sb2NhbGVJZHgiLCJzdWJIYXNNYW55TnVtYmVyRmllbGQiLCJzdWJIYXNNYW55VGV4dEZpZWxkIiwic3ViUmVsYXRpb25zVG9CdWlsZCIsImlkVG9VVUlEIiwicm9vdFJlbGF0aW9uc2hpcHMiLCJhcnJheVRhYmxlUmVsYXRpb25zIiwibWFueSIsImhhc0xvY2FsZXNUYWJsZSIsIl9sb2NhbGVzIiwibG9jYWxlc1N1ZmZpeCIsInZhbCIsImtleSIsImJsb2NrcyIsImJsb2NrIiwiYmxvY2tUYWJsZU5hbWUiLCJfcGF0aCIsInRleHQiLCJfcGFyZW50SWRGayIsIl9wYXRoSWR4IiwiYmxvY2tUYWJsZVJlbGF0aW9ucyIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsInZhbGlkYXRlRXhpc3RpbmdCbG9ja0lzSWRlbnRpY2FsIiwidGFibGUiLCJ0YWJsZUxvY2FsZXMiLCJzbHVnIiwiZ3JvdXBIYXNMb2NhbGl6ZWRGaWVsZCIsImdyb3VwSGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkIiwiZ3JvdXBIYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkIiwiZ3JvdXBIYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCIsImdyb3VwSGFzTWFueU51bWJlckZpZWxkIiwiZ3JvdXBIYXNNYW55VGV4dEZpZWxkIiwidGFiSGFzTG9jYWxpemVkRmllbGQiLCJ0YWJIYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQiLCJ0YWJIYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkIiwidGFiSGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQiLCJ0YWJIYXNNYW55TnVtYmVyRmllbGQiLCJ0YWJIYXNNYW55VGV4dEZpZWxkIiwidGFicyIsInRhYiIsInJvd0hhc0xvY2FsaXplZEZpZWxkIiwicm93SGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkIiwicm93SGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCIsInJvd0hhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkIiwicm93SGFzTWFueU51bWJlckZpZWxkIiwicm93SGFzTWFueVRleHRGaWVsZCIsIkFycmF5IiwiaXNBcnJheSIsInJlbGF0aW9uVG8iLCJyZWxhdGlvbiIsImFkZCIsInJlcXVpcmVkIl0sIm1hcHBpbmdzIjoiQUFBQSxvQ0FBb0M7Ozs7K0JBc0V2QkE7OztlQUFBQTs7OzRCQWpFYTt3QkFlbkI7d0JBQzhCO3VCQUNZO29FQUN6QjtpQ0FLUTt1QkFDTDs2QkFDQztpQ0FDSTswQkFDUDttQ0FDUztrREFDZTs7Ozs7O0FBb0MxQyxNQUFNQSxpQkFBaUIsQ0FBQyxFQUM3QkMsT0FBTyxFQUNQQyxZQUFZLEVBQ1pDLGtCQUFrQixFQUNsQkMsVUFBVSxFQUNWQyxZQUFZLEVBQ1pDLE9BQU8sRUFDUEMsY0FBYyxFQUNkQyxnQkFBZ0IsS0FBSyxFQUNyQkMsV0FBVyxFQUNYQyxNQUFNLEVBQ05DLGNBQWMsRUFDZEMsT0FBTyxFQUNQQyxjQUFjLEVBQ2RDLGNBQWMsRUFDZEMsWUFBWSxFQUNaQyxlQUFlLEVBQ2ZDLGdCQUFnQixFQUNoQkMsYUFBYSxFQUNiQyxvQkFBb0IsRUFDcEJDLGtCQUFrQixFQUNsQkMsYUFBYSxFQUNiQyxRQUFRLEVBQ0g7SUFDTCxNQUFNQyx1QkFBdUI7SUFDN0IsSUFBSUMsb0JBQW9CO0lBQ3hCLElBQUlDLGdDQUFnQztJQUNwQyxJQUFJQyxtQkFBc0M7SUFDMUMsSUFBSUMsNEJBQTRCO0lBQ2hDLElBQUlDLHFCQUF3QztJQUM1QyxJQUFJQyw4QkFBOEI7SUFFbEMsSUFBSUMsa0JBQTBCO0lBQzlCLElBQUl4QixRQUFReUIsRUFBRSxZQUFZQyxxQkFBYSxFQUFFRixrQkFBa0I7SUFDM0Qs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
@@ -1 +1 @@
1
- {"version":3,"file":"validateExistingBlockIsIdentical.d.ts","sourceRoot":"","sources":["../../src/schema/validateExistingBlockIsIdentical.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAS,MAAM,eAAe,CAAA;AAKjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAE5C,KAAK,IAAI,GAAG;IACV,KAAK,EAAE,KAAK,CAAA;IACZ,SAAS,EAAE,OAAO,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,KAAK,EAAE,YAAY,CAAA;IACnB,YAAY,CAAC,EAAE,YAAY,CAAA;CAC5B,CAAA;AAkDD,eAAO,MAAM,gCAAgC,8DAM1C,IAAI,KAAG,IA0BT,CAAA"}
1
+ {"version":3,"file":"validateExistingBlockIsIdentical.d.ts","sourceRoot":"","sources":["../../src/schema/validateExistingBlockIsIdentical.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAS,MAAM,eAAe,CAAA;AAKjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAE5C,KAAK,IAAI,GAAG;IACV,KAAK,EAAE,KAAK,CAAA;IACZ,SAAS,EAAE,OAAO,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,KAAK,EAAE,YAAY,CAAA;IACnB,YAAY,CAAC,EAAE,YAAY,CAAA;CAC5B,CAAA;AAkDD,eAAO,MAAM,gCAAgC,8DAM1C,IAAI,KAAG,IA+BT,CAAA"}
@@ -22,7 +22,7 @@ const getFlattenedFieldNames = (fields, prefix = '')=>{
22
22
  return fieldsToUse;
23
23
  }
24
24
  if ((0, _types.fieldHasSubFields)(field)) {
25
- fieldPrefix = 'name' in field ? `${prefix}${field.name}.` : prefix;
25
+ fieldPrefix = 'name' in field ? `${prefix}${field.name}_` : prefix;
26
26
  return [
27
27
  ...fieldsToUse,
28
28
  ...getFlattenedFieldNames(field.fields, fieldPrefix)
@@ -32,7 +32,7 @@ const getFlattenedFieldNames = (fields, prefix = '')=>{
32
32
  return [
33
33
  ...fieldsToUse,
34
34
  ...field.tabs.reduce((tabFields, tab)=>{
35
- fieldPrefix = 'name' in tab ? `${prefix}.${tab.name}` : prefix;
35
+ fieldPrefix = 'name' in tab ? `${prefix}_${tab.name}` : prefix;
36
36
  return [
37
37
  ...tabFields,
38
38
  ...(0, _types.tabHasName)(tab) ? [
@@ -49,7 +49,7 @@ const getFlattenedFieldNames = (fields, prefix = '')=>{
49
49
  return [
50
50
  ...fieldsToUse,
51
51
  {
52
- name: `${fieldPrefix?.replace('.', '_') || ''}${field.name}`,
52
+ name: `${fieldPrefix}${field.name}`,
53
53
  localized: field.localized
54
54
  }
55
55
  ];
@@ -83,4 +83,4 @@ const validateExistingBlockIsIdentical = ({ block, localized, rootTableName, tab
83
83
  }
84
84
  };
85
85
 
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2hlbWEvdmFsaWRhdGVFeGlzdGluZ0Jsb2NrSXNJZGVudGljYWwudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBCbG9jaywgRmllbGQgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgeyBJbnZhbGlkQ29uZmlndXJhdGlvbiB9IGZyb20gJ3BheWxvYWQvZXJyb3JzJ1xuaW1wb3J0IHsgZmllbGRBZmZlY3RzRGF0YSwgZmllbGRIYXNTdWJGaWVsZHMsIHRhYkhhc05hbWUgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgdHlwZSB7IEdlbmVyaWNUYWJsZSB9IGZyb20gJy4uL3R5cGVzJ1xuXG50eXBlIEFyZ3MgPSB7XG4gIGJsb2NrOiBCbG9ja1xuICBsb2NhbGl6ZWQ6IGJvb2xlYW5cbiAgcm9vdFRhYmxlTmFtZTogc3RyaW5nXG4gIHRhYmxlOiBHZW5lcmljVGFibGVcbiAgdGFibGVMb2NhbGVzPzogR2VuZXJpY1RhYmxlXG59XG5cbmNvbnN0IGdldEZsYXR0ZW5lZEZpZWxkTmFtZXMgPSAoXG4gIGZpZWxkczogRmllbGRbXSxcbiAgcHJlZml4OiBzdHJpbmcgPSAnJyxcbik6IHsgbG9jYWxpemVkPzogYm9vbGVhbjsgbmFtZTogc3RyaW5nIH1bXSA9PiB7XG4gIHJldHVybiBmaWVsZHMucmVkdWNlKChmaWVsZHNUb1VzZSwgZmllbGQpID0+IHtcbiAgICBsZXQgZmllbGRQcmVmaXggPSBwcmVmaXhcblxuICAgIGlmIChcbiAgICAgIFsnYXJyYXknLCAnYmxvY2tzJywgJ3JlbGF0aW9uc2hpcCcsICd1cGxvYWQnXS5pbmNsdWRlcyhmaWVsZC50eXBlKSB8fFxuICAgICAgKCdoYXNNYW55JyBpbiBmaWVsZCAmJiBmaWVsZC5oYXNNYW55ID09PSB0cnVlKVxuICAgICkge1xuICAgICAgcmV0dXJuIGZpZWxkc1RvVXNlXG4gICAgfVxuXG4gICAgaWYgKGZpZWxkSGFzU3ViRmllbGRzKGZpZWxkKSkge1xuICAgICAgZmllbGRQcmVmaXggPSAnbmFtZScgaW4gZmllbGQgPyBgJHtwcmVmaXh9JHtmaWVsZC5uYW1lfS5gIDogcHJlZml4XG4gICAgICByZXR1cm4gWy4uLmZpZWxkc1RvVXNlLCAuLi5nZXRGbGF0dGVuZWRGaWVsZE5hbWVzKGZpZWxkLmZpZWxkcywgZmllbGRQcmVmaXgpXVxuICAgIH1cblxuICAgIGlmIChmaWVsZC50eXBlID09PSAndGFicycpIHtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIC4uLmZpZWxkc1RvVXNlLFxuICAgICAgICAuLi5maWVsZC50YWJzLnJlZHVjZSgodGFiRmllbGRzLCB0YWIpID0+IHtcbiAgICAgICAgICBmaWVsZFByZWZpeCA9ICduYW1lJyBpbiB0YWIgPyBgJHtwcmVmaXh9LiR7dGFiLm5hbWV9YCA6IHByZWZpeFxuICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAuLi50YWJGaWVsZHMsXG4gICAgICAgICAgICAuLi4odGFiSGFzTmFtZSh0YWIpXG4gICAgICAgICAgICAgID8gW3sgLi4udGFiLCB0eXBlOiAndGFiJyB9XVxuICAgICAgICAgICAgICA6IGdldEZsYXR0ZW5lZEZpZWxkTmFtZXModGFiLmZpZWxkcywgZmllbGRQcmVmaXgpKSxcbiAgICAgICAgICBdXG4gICAgICAgIH0sIFtdKSxcbiAgICAgIF1cbiAgICB9XG5cbiAgICBpZiAoZmllbGRBZmZlY3RzRGF0YShmaWVsZCkpIHtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIC4uLmZpZWxkc1RvVXNlLFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogYCR7ZmllbGRQcmVmaXg/LnJlcGxhY2UoJy4nLCAnXycpIHx8ICcnfSR7ZmllbGQubmFtZX1gLFxuICAgICAgICAgIGxvY2FsaXplZDogZmllbGQubG9jYWxpemVkLFxuICAgICAgICB9LFxuICAgICAgXVxuICAgIH1cblxuICAgIHJldHVybiBmaWVsZHNUb1VzZVxuICB9LCBbXSlcbn1cblxuZXhwb3J0IGNvbnN0IHZhbGlkYXRlRXhpc3RpbmdCbG9ja0lzSWRlbnRpY2FsID0gKHtcbiAgYmxvY2ssXG4gIGxvY2FsaXplZCxcbiAgcm9vdFRhYmxlTmFtZSxcbiAgdGFibGUsXG4gIHRhYmxlTG9jYWxlcyxcbn06IEFyZ3MpOiB2b2lkID0+IHtcbiAgY29uc3QgZmllbGROYW1lcyA9IGdldEZsYXR0ZW5lZEZpZWxkTmFtZXMoYmxvY2suZmllbGRzKVxuICBjb25zdCBtaXNzaW5nRmllbGQgPVxuICAgIC8vIGVuc3VyZSBldmVyeSBmaWVsZCBmcm9tIHRoZSBjb25maWcgaXMgaW4gdGhlIG1hdGNoaW5nIHRhYmxlXG4gICAgZmllbGROYW1lcy5maW5kKCh7IG5hbWUsIGxvY2FsaXplZCB9KSA9PiB7XG4gICAgICBjb25zdCBmaWVsZFRhYmxlID0gbG9jYWxpemVkICYmIHRhYmxlTG9jYWxlcyA/IHRhYmxlTG9jYWxlcyA6IHRhYmxlXG4gICAgICByZXR1cm4gT2JqZWN0LmtleXMoZmllbGRUYWJsZSkuaW5kZXhPZihuYW1lKSA9PT0gLTFcbiAgICB9KSB8fFxuICAgIC8vIGVuc3VyZSBldmVyeSB0YWJsZSBjb2x1bW4gaXMgbWF0Y2hlZCBmb3IgZXZlcnkgZmllbGQgZnJvbSB0aGUgY29uZmlnXG4gICAgT2JqZWN0LmtleXModGFibGUpLmZpbmQoKGZpZWxkTmFtZSkgPT4ge1xuICAgICAgaWYgKCFbJ19sb2NhbGUnLCAnX29yZGVyJywgJ19wYXJlbnRJRCcsICdfcGF0aCcsICdfdXVpZCddLmluY2x1ZGVzKGZpZWxkTmFtZSkpIHtcbiAgICAgICAgcmV0dXJuIGZpZWxkTmFtZXMuZmluZEluZGV4KChmaWVsZCkgPT4gZmllbGQubmFtZSkgPT09IC0xXG4gICAgICB9XG4gICAgfSlcblxuICBpZiAobWlzc2luZ0ZpZWxkKSB7XG4gICAgdGhyb3cgbmV3IEludmFsaWRDb25maWd1cmF0aW9uKFxuICAgICAgYFRoZSB0YWJsZSAke3Jvb3RUYWJsZU5hbWV9IGhhcyBtdWx0aXBsZSBibG9ja3Mgd2l0aCBzbHVnICR7YmxvY2suc2x1Z30sIGJ1dCB0aGUgc2NoZW1hcyBkbyBub3QgbWF0Y2guIE9uZSBibG9jayBpbmNsdWRlcyB0aGUgZmllbGQgJHt0eXBlb2YgbWlzc2luZ0ZpZWxkID09PSAnc3RyaW5nJyA/IG1pc3NpbmdGaWVsZCA6IG1pc3NpbmdGaWVsZC5uYW1lfSwgd2hpbGUgdGhlIG90aGVyIGJsb2NrIGRvZXMgbm90LmAsXG4gICAgKVxuICB9XG5cbiAgaWYgKEJvb2xlYW4obG9jYWxpemVkKSAhPT0gQm9vbGVhbih0YWJsZS5fbG9jYWxlKSkge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQ29uZmlndXJhdGlvbihcbiAgICAgIGBUaGUgdGFibGUgJHtyb290VGFibGVOYW1lfSBoYXMgbXVsdGlwbGUgYmxvY2tzIHdpdGggc2x1ZyAke2Jsb2NrLnNsdWd9LCBidXQgdGhlIHNjaGVtYXMgZG8gbm90IG1hdGNoLiBPbmUgaXMgbG9jYWxpemVkLCBidXQgYW5vdGhlciBpcyBub3QuIEJsb2NrIHNjaGVtYXMgb2YgdGhlIHNhbWUgbmFtZSBtdXN0IG1hdGNoIGV4YWN0bHkuYCxcbiAgICApXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJ2YWxpZGF0ZUV4aXN0aW5nQmxvY2tJc0lkZW50aWNhbCIsImdldEZsYXR0ZW5lZEZpZWxkTmFtZXMiLCJmaWVsZHMiLCJwcmVmaXgiLCJyZWR1Y2UiLCJmaWVsZHNUb1VzZSIsImZpZWxkIiwiZmllbGRQcmVmaXgiLCJpbmNsdWRlcyIsInR5cGUiLCJoYXNNYW55IiwiZmllbGRIYXNTdWJGaWVsZHMiLCJuYW1lIiwidGFicyIsInRhYkZpZWxkcyIsInRhYiIsInRhYkhhc05hbWUiLCJmaWVsZEFmZmVjdHNEYXRhIiwicmVwbGFjZSIsImxvY2FsaXplZCIsImJsb2NrIiwicm9vdFRhYmxlTmFtZSIsInRhYmxlIiwidGFibGVMb2NhbGVzIiwiZmllbGROYW1lcyIsIm1pc3NpbmdGaWVsZCIsImZpbmQiLCJmaWVsZFRhYmxlIiwiT2JqZWN0Iiwia2V5cyIsImluZGV4T2YiLCJmaWVsZE5hbWUiLCJmaW5kSW5kZXgiLCJJbnZhbGlkQ29uZmlndXJhdGlvbiIsInNsdWciLCJCb29sZWFuIiwiX2xvY2FsZSJdLCJyYW5nZU1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsiLCJtYXBwaW5ncyI6Ijs7OzsrQkErRGFBOzs7ZUFBQUE7Ozt3QkE3RHdCO3VCQUMyQjtBQVloRSxNQUFNQyx5QkFBeUIsQ0FDN0JDLFFBQ0FDLFNBQWlCLEVBQUU7SUFFbkIsT0FBT0QsT0FBT0UsTUFBTSxDQUFDLENBQUNDLGFBQWFDO1FBQ2pDLElBQUlDLGNBQWNKO1FBRWxCLElBQ0U7WUFBQztZQUFTO1lBQVU7WUFBZ0I7U0FBUyxDQUFDSyxRQUFRLENBQUNGLE1BQU1HLElBQUksS0FDaEUsYUFBYUgsU0FBU0EsTUFBTUksT0FBTyxLQUFLLE1BQ3pDO1lBQ0EsT0FBT0w7UUFDVDtRQUVBLElBQUlNLElBQUFBLHdCQUFpQixFQUFDTCxRQUFRO1lBQzVCQyxjQUFjLFVBQVVELFFBQVEsQ0FBQyxFQUFFSCxPQUFPLEVBQUVHLE1BQU1NLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBR1Q7WUFDNUQsT0FBTzttQkFBSUU7bUJBQWdCSix1QkFBdUJLLE1BQU1KLE1BQU0sRUFBRUs7YUFBYTtRQUMvRTtRQUVBLElBQUlELE1BQU1HLElBQUksS0FBSyxRQUFRO1lBQ3pCLE9BQU87bUJBQ0ZKO21CQUNBQyxNQUFNTyxJQUFJLENBQUNULE1BQU0sQ0FBQyxDQUFDVSxXQUFXQztvQkFDL0JSLGNBQWMsVUFBVVEsTUFBTSxDQUFDLEVBQUVaLE9BQU8sQ0FBQyxFQUFFWSxJQUFJSCxJQUFJLENBQUMsQ0FBQyxHQUFHVDtvQkFDeEQsT0FBTzsyQkFDRlc7MkJBQ0NFLElBQUFBLGlCQUFVLEVBQUNELE9BQ1g7NEJBQUM7Z0NBQUUsR0FBR0EsR0FBRztnQ0FBRU4sTUFBTTs0QkFBTTt5QkFBRSxHQUN6QlIsdUJBQXVCYyxJQUFJYixNQUFNLEVBQUVLO3FCQUN4QztnQkFDSCxHQUFHLEVBQUU7YUFDTjtRQUNIO1FBRUEsSUFBSVUsSUFBQUEsdUJBQWdCLEVBQUNYLFFBQVE7WUFDM0IsT0FBTzttQkFDRkQ7Z0JBQ0g7b0JBQ0VPLE1BQU0sQ0FBQyxFQUFFTCxhQUFhVyxRQUFRLEtBQUssUUFBUSxHQUFHLEVBQUVaLE1BQU1NLElBQUksQ0FBQyxDQUFDO29CQUM1RE8sV0FBV2IsTUFBTWEsU0FBUztnQkFDNUI7YUFDRDtRQUNIO1FBRUEsT0FBT2Q7SUFDVCxHQUFHLEVBQUU7QUFDUDtBQUVPLE1BQU1MLG1DQUFtQyxDQUFDLEVBQy9Db0IsS0FBSyxFQUNMRCxTQUFTLEVBQ1RFLGFBQWEsRUFDYkMsS0FBSyxFQUNMQyxZQUFZLEVBQ1A7SUFDTCxNQUFNQyxhQUFhdkIsdUJBQXVCbUIsTUFBTWxCLE1BQU07SUFDdEQsTUFBTXVCLGVBQ0osOERBQThEO0lBQzlERCxXQUFXRSxJQUFJLENBQUMsQ0FBQyxFQUFFZCxJQUFJLEVBQUVPLFNBQVMsRUFBRTtRQUNsQyxNQUFNUSxhQUFhUixhQUFhSSxlQUFlQSxlQUFlRDtRQUM5RCxPQUFPTSxPQUFPQyxJQUFJLENBQUNGLFlBQVlHLE9BQU8sQ0FBQ2xCLFVBQVUsQ0FBQztJQUNwRCxNQUNBLHVFQUF1RTtJQUN2RWdCLE9BQU9DLElBQUksQ0FBQ1AsT0FBT0ksSUFBSSxDQUFDLENBQUNLO1FBQ3ZCLElBQUksQ0FBQztZQUFDO1lBQVc7WUFBVTtZQUFhO1lBQVM7U0FBUSxDQUFDdkIsUUFBUSxDQUFDdUIsWUFBWTtZQUM3RSxPQUFPUCxXQUFXUSxTQUFTLENBQUMsQ0FBQzFCLFFBQVVBLE1BQU1NLElBQUksTUFBTSxDQUFDO1FBQzFEO0lBQ0Y7SUFFRixJQUFJYSxjQUFjO1FBQ2hCLE1BQU0sSUFBSVEsNEJBQW9CLENBQzVCLENBQUMsVUFBVSxFQUFFWixjQUFjLCtCQUErQixFQUFFRCxNQUFNYyxJQUFJLENBQUMsNkRBQTZELEVBQUUsT0FBT1QsaUJBQWlCLFdBQVdBLGVBQWVBLGFBQWFiLElBQUksQ0FBQyxpQ0FBaUMsQ0FBQztJQUVoUDtJQUVBLElBQUl1QixRQUFRaEIsZUFBZWdCLFFBQVFiLE1BQU1jLE9BQU8sR0FBRztRQUNqRCxNQUFNLElBQUlILDRCQUFvQixDQUM1QixDQUFDLFVBQVUsRUFBRVosY0FBYywrQkFBK0IsRUFBRUQsTUFBTWMsSUFBSSxDQUFDLHdIQUF3SCxDQUFDO0lBRXBNO0FBQ0YifQ==
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2hlbWEvdmFsaWRhdGVFeGlzdGluZ0Jsb2NrSXNJZGVudGljYWwudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBCbG9jaywgRmllbGQgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgeyBJbnZhbGlkQ29uZmlndXJhdGlvbiB9IGZyb20gJ3BheWxvYWQvZXJyb3JzJ1xuaW1wb3J0IHsgZmllbGRBZmZlY3RzRGF0YSwgZmllbGRIYXNTdWJGaWVsZHMsIHRhYkhhc05hbWUgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgdHlwZSB7IEdlbmVyaWNUYWJsZSB9IGZyb20gJy4uL3R5cGVzJ1xuXG50eXBlIEFyZ3MgPSB7XG4gIGJsb2NrOiBCbG9ja1xuICBsb2NhbGl6ZWQ6IGJvb2xlYW5cbiAgcm9vdFRhYmxlTmFtZTogc3RyaW5nXG4gIHRhYmxlOiBHZW5lcmljVGFibGVcbiAgdGFibGVMb2NhbGVzPzogR2VuZXJpY1RhYmxlXG59XG5cbmNvbnN0IGdldEZsYXR0ZW5lZEZpZWxkTmFtZXMgPSAoXG4gIGZpZWxkczogRmllbGRbXSxcbiAgcHJlZml4OiBzdHJpbmcgPSAnJyxcbik6IHsgbG9jYWxpemVkPzogYm9vbGVhbjsgbmFtZTogc3RyaW5nIH1bXSA9PiB7XG4gIHJldHVybiBmaWVsZHMucmVkdWNlKChmaWVsZHNUb1VzZSwgZmllbGQpID0+IHtcbiAgICBsZXQgZmllbGRQcmVmaXggPSBwcmVmaXhcblxuICAgIGlmIChcbiAgICAgIFsnYXJyYXknLCAnYmxvY2tzJywgJ3JlbGF0aW9uc2hpcCcsICd1cGxvYWQnXS5pbmNsdWRlcyhmaWVsZC50eXBlKSB8fFxuICAgICAgKCdoYXNNYW55JyBpbiBmaWVsZCAmJiBmaWVsZC5oYXNNYW55ID09PSB0cnVlKVxuICAgICkge1xuICAgICAgcmV0dXJuIGZpZWxkc1RvVXNlXG4gICAgfVxuXG4gICAgaWYgKGZpZWxkSGFzU3ViRmllbGRzKGZpZWxkKSkge1xuICAgICAgZmllbGRQcmVmaXggPSAnbmFtZScgaW4gZmllbGQgPyBgJHtwcmVmaXh9JHtmaWVsZC5uYW1lfV9gIDogcHJlZml4XG4gICAgICByZXR1cm4gWy4uLmZpZWxkc1RvVXNlLCAuLi5nZXRGbGF0dGVuZWRGaWVsZE5hbWVzKGZpZWxkLmZpZWxkcywgZmllbGRQcmVmaXgpXVxuICAgIH1cblxuICAgIGlmIChmaWVsZC50eXBlID09PSAndGFicycpIHtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIC4uLmZpZWxkc1RvVXNlLFxuICAgICAgICAuLi5maWVsZC50YWJzLnJlZHVjZSgodGFiRmllbGRzLCB0YWIpID0+IHtcbiAgICAgICAgICBmaWVsZFByZWZpeCA9ICduYW1lJyBpbiB0YWIgPyBgJHtwcmVmaXh9XyR7dGFiLm5hbWV9YCA6IHByZWZpeFxuICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAuLi50YWJGaWVsZHMsXG4gICAgICAgICAgICAuLi4odGFiSGFzTmFtZSh0YWIpXG4gICAgICAgICAgICAgID8gW3sgLi4udGFiLCB0eXBlOiAndGFiJyB9XVxuICAgICAgICAgICAgICA6IGdldEZsYXR0ZW5lZEZpZWxkTmFtZXModGFiLmZpZWxkcywgZmllbGRQcmVmaXgpKSxcbiAgICAgICAgICBdXG4gICAgICAgIH0sIFtdKSxcbiAgICAgIF1cbiAgICB9XG5cbiAgICBpZiAoZmllbGRBZmZlY3RzRGF0YShmaWVsZCkpIHtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIC4uLmZpZWxkc1RvVXNlLFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogYCR7ZmllbGRQcmVmaXh9JHtmaWVsZC5uYW1lfWAsXG4gICAgICAgICAgbG9jYWxpemVkOiBmaWVsZC5sb2NhbGl6ZWQsXG4gICAgICAgIH0sXG4gICAgICBdXG4gICAgfVxuXG4gICAgcmV0dXJuIGZpZWxkc1RvVXNlXG4gIH0sIFtdKVxufVxuXG5leHBvcnQgY29uc3QgdmFsaWRhdGVFeGlzdGluZ0Jsb2NrSXNJZGVudGljYWwgPSAoe1xuICBibG9jayxcbiAgbG9jYWxpemVkLFxuICByb290VGFibGVOYW1lLFxuICB0YWJsZSxcbiAgdGFibGVMb2NhbGVzLFxufTogQXJncyk6IHZvaWQgPT4ge1xuICBjb25zdCBmaWVsZE5hbWVzID0gZ2V0RmxhdHRlbmVkRmllbGROYW1lcyhibG9jay5maWVsZHMpXG5cbiAgY29uc3QgbWlzc2luZ0ZpZWxkID1cbiAgICAvLyBlbnN1cmUgZXZlcnkgZmllbGQgZnJvbSB0aGUgY29uZmlnIGlzIGluIHRoZSBtYXRjaGluZyB0YWJsZVxuICAgIGZpZWxkTmFtZXMuZmluZCgoeyBuYW1lLCBsb2NhbGl6ZWQgfSkgPT4ge1xuICAgICAgY29uc3QgZmllbGRUYWJsZSA9IGxvY2FsaXplZCAmJiB0YWJsZUxvY2FsZXMgPyB0YWJsZUxvY2FsZXMgOiB0YWJsZVxuICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGZpZWxkVGFibGUpLmluZGV4T2YobmFtZSkgPT09IC0xXG4gICAgfSkgfHxcbiAgICAvLyBlbnN1cmUgZXZlcnkgdGFibGUgY29sdW1uIGlzIG1hdGNoZWQgZm9yIGV2ZXJ5IGZpZWxkIGZyb20gdGhlIGNvbmZpZ1xuICAgIE9iamVjdC5rZXlzKHRhYmxlKS5maW5kKChmaWVsZE5hbWUpID0+IHtcbiAgICAgIGlmICghWydfbG9jYWxlJywgJ19vcmRlcicsICdfcGFyZW50SUQnLCAnX3BhdGgnLCAnX3V1aWQnXS5pbmNsdWRlcyhmaWVsZE5hbWUpKSB7XG4gICAgICAgIHJldHVybiBmaWVsZE5hbWVzLmZpbmRJbmRleCgoZmllbGQpID0+IGZpZWxkLm5hbWUpID09PSAtMVxuICAgICAgfVxuICAgIH0pXG5cbiAgaWYgKG1pc3NpbmdGaWVsZCkge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQ29uZmlndXJhdGlvbihcbiAgICAgIGBUaGUgdGFibGUgJHtyb290VGFibGVOYW1lfSBoYXMgbXVsdGlwbGUgYmxvY2tzIHdpdGggc2x1ZyAke1xuICAgICAgICBibG9jay5zbHVnXG4gICAgICB9LCBidXQgdGhlIHNjaGVtYXMgZG8gbm90IG1hdGNoLiBPbmUgYmxvY2sgaW5jbHVkZXMgdGhlIGZpZWxkICR7XG4gICAgICAgIHR5cGVvZiBtaXNzaW5nRmllbGQgPT09ICdzdHJpbmcnID8gbWlzc2luZ0ZpZWxkIDogbWlzc2luZ0ZpZWxkLm5hbWVcbiAgICAgIH0sIHdoaWxlIHRoZSBvdGhlciBibG9jayBkb2VzIG5vdC5gLFxuICAgIClcbiAgfVxuXG4gIGlmIChCb29sZWFuKGxvY2FsaXplZCkgIT09IEJvb2xlYW4odGFibGUuX2xvY2FsZSkpIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZENvbmZpZ3VyYXRpb24oXG4gICAgICBgVGhlIHRhYmxlICR7cm9vdFRhYmxlTmFtZX0gaGFzIG11bHRpcGxlIGJsb2NrcyB3aXRoIHNsdWcgJHtibG9jay5zbHVnfSwgYnV0IHRoZSBzY2hlbWFzIGRvIG5vdCBtYXRjaC4gT25lIGlzIGxvY2FsaXplZCwgYnV0IGFub3RoZXIgaXMgbm90LiBCbG9jayBzY2hlbWFzIG9mIHRoZSBzYW1lIG5hbWUgbXVzdCBtYXRjaCBleGFjdGx5LmAsXG4gICAgKVxuICB9XG59XG4iXSwibmFtZXMiOlsidmFsaWRhdGVFeGlzdGluZ0Jsb2NrSXNJZGVudGljYWwiLCJnZXRGbGF0dGVuZWRGaWVsZE5hbWVzIiwiZmllbGRzIiwicHJlZml4IiwicmVkdWNlIiwiZmllbGRzVG9Vc2UiLCJmaWVsZCIsImZpZWxkUHJlZml4IiwiaW5jbHVkZXMiLCJ0eXBlIiwiaGFzTWFueSIsImZpZWxkSGFzU3ViRmllbGRzIiwibmFtZSIsInRhYnMiLCJ0YWJGaWVsZHMiLCJ0YWIiLCJ0YWJIYXNOYW1lIiwiZmllbGRBZmZlY3RzRGF0YSIsImxvY2FsaXplZCIsImJsb2NrIiwicm9vdFRhYmxlTmFtZSIsInRhYmxlIiwidGFibGVMb2NhbGVzIiwiZmllbGROYW1lcyIsIm1pc3NpbmdGaWVsZCIsImZpbmQiLCJmaWVsZFRhYmxlIiwiT2JqZWN0Iiwia2V5cyIsImluZGV4T2YiLCJmaWVsZE5hbWUiLCJm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
@@ -54,4 +54,4 @@ const beginTransaction = async function beginTransaction() {
54
54
  return id;
55
55
  };
56
56
 
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90cmFuc2FjdGlvbnMvYmVnaW5UcmFuc2FjdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEJlZ2luVHJhbnNhY3Rpb24gfSBmcm9tICdwYXlsb2FkL2RhdGFiYXNlJ1xuXG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSAndXVpZCdcblxuaW1wb3J0IHR5cGUgeyBEcml6emxlVHJhbnNhY3Rpb24sIFBvc3RncmVzQWRhcHRlciB9IGZyb20gJy4uL3R5cGVzJ1xuXG5leHBvcnQgY29uc3QgYmVnaW5UcmFuc2FjdGlvbjogQmVnaW5UcmFuc2FjdGlvbiA9IGFzeW5jIGZ1bmN0aW9uIGJlZ2luVHJhbnNhY3Rpb24oXG4gIHRoaXM6IFBvc3RncmVzQWRhcHRlcixcbikge1xuICBsZXQgaWRcbiAgdHJ5IHtcbiAgICBpZCA9IHV1aWQoKVxuXG4gICAgbGV0IHJlamVjdDogKCkgPT4gUHJvbWlzZTx2b2lkPlxuICAgIGxldCByZXNvbHZlOiAoKSA9PiBQcm9taXNlPHZvaWQ+XG4gICAgbGV0IHRyYW5zYWN0aW9uOiBEcml6emxlVHJhbnNhY3Rpb25cblxuICAgIGxldCB0cmFuc2FjdGlvblJlYWR5OiAoKSA9PiB2b2lkXG5cbiAgICAvLyBEcml6emxlIG9ubHkgZXhwb3NlcyBhIHRyYW5zYWN0aW9ucyBBUEkgdGhhdCBpcyBzdWZmaWNpZW50IGlmIHlvdVxuICAgIC8vIGNhbiBkaXJlY3RseSBwYXNzIGFyb3VuZCB0aGUgYHR4YCBhcmd1bWVudC4gQnV0IG91ciBvcGVyYXRpb25zIGFyZSBzcHJlYWRcbiAgICAvLyBvdmVyIG1hbnkgZmlsZXMgYW5kIHdlIGRvbid0IHdhbnQgdG8gcGFzcyB0aGUgYHR4YCBhcm91bmQgbGlrZSB0aGF0LFxuICAgIC8vIHNvIGluc3RlYWQsIHdlIFwibGlmdFwiIHVwIHRoZSBgcmVzb2x2ZWAgYW5kIGByZWplY3RgIG1ldGhvZHNcbiAgICAvLyBhbmQgd2lsbCBjYWxsIHRoZW0gaW4gb3VyIHJlc3BlY3RpdmUgdHJhbnNhY3Rpb24gbWV0aG9kc1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1mbG9hdGluZy1wcm9taXNlc1xuICAgIGNvbnN0IGRvbmUgPSB0aGlzLmRyaXp6bGVcbiAgICAgIC50cmFuc2FjdGlvbihhc3luYyAodHgpID0+IHtcbiAgICAgICAgdHJhbnNhY3Rpb24gPSB0eFxuICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZTx2b2lkPigocmVzLCByZWopID0+IHtcbiAgICAgICAgICByZXNvbHZlID0gKCkgPT4ge1xuICAgICAgICAgICAgcmVzKClcbiAgICAgICAgICAgIHJldHVybiBkb25lXG4gICAgICAgICAgfVxuICAgICAgICAgIHJlamVjdCA9ICgpID0+IHtcbiAgICAgICAgICAgIHJlaigpXG4gICAgICAgICAgICByZXR1cm4gZG9uZVxuICAgICAgICAgIH1cbiAgICAgICAgICB0cmFuc2FjdGlvblJlYWR5KClcbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICAvLyBzd2FsbG93XG4gICAgICB9KVxuXG4gICAgLy8gTmVlZCB0byB3YWl0IHVudGlsIHRoZSB0cmFuc2FjdGlvbiBpcyByZWFkeVxuICAgIC8vIGJlZm9yZSBiaW5kaW5nIGl0cyBgcmVzb2x2ZWAgYW5kIGByZWplY3RgIG1ldGhvZHMgYmVsb3dcbiAgICBhd2FpdCBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4gKHRyYW5zYWN0aW9uUmVhZHkgPSByZXNvbHZlKSlcblxuICAgIHRoaXMuc2Vzc2lvbnNbaWRdID0ge1xuICAgICAgZGI6IHRyYW5zYWN0aW9uLFxuICAgICAgcmVqZWN0LFxuICAgICAgcmVzb2x2ZSxcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucGF5bG9hZC5sb2dnZXIuZXJyb3IoYEVycm9yOiBjYW5ub3QgYmVnaW4gdHJhbnNhY3Rpb246ICR7ZXJyLm1lc3NhZ2V9YCwgZXJyKVxuICAgIHByb2Nlc3MuZXhpdCgxKVxuICB9XG5cbiAgcmV0dXJuIGlkXG59XG4iXSwibmFtZXMiOlsiYmVnaW5UcmFuc2FjdGlvbiIsImlkIiwidXVpZCIsInJlamVjdCIsInJlc29sdmUiLCJ0cmFuc2FjdGlvbiIsInRyYW5zYWN0aW9uUmVhZHkiLCJkb25lIiwiZHJpenpsZSIsInR4IiwiUHJvbWlzZSIsInJlcyIsInJlaiIsImNhdGNoIiwic2Vzc2lvbnMiLCJkYiIsImVyciIsInBheWxvYWQiLCJsb2dnZXIiLCJlcnJvciIsIm1lc3NhZ2UiLCJwcm9jZXNzIiwiZXhpdCJdLCJyYW5nZU1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7IiwibWFwcGluZ3MiOiI7Ozs7K0JBTWFBOzs7ZUFBQUE7OztzQkFKYztBQUlwQixNQUFNQSxtQkFBcUMsZUFBZUE7SUFHL0QsSUFBSUM7SUFDSixJQUFJO1FBQ0ZBLEtBQUtDLElBQUFBLFFBQUk7UUFFVCxJQUFJQztRQUNKLElBQUlDO1FBQ0osSUFBSUM7UUFFSixJQUFJQztRQUVKLG9FQUFvRTtRQUNwRSw0RUFBNEU7UUFDNUUsdUVBQXVFO1FBQ3ZFLDhEQUE4RDtRQUM5RCwyREFBMkQ7UUFFM0QsbUVBQW1FO1FBQ25FLE1BQU1DLE9BQU8sSUFBSSxDQUFDQyxPQUFPLENBQ3RCSCxXQUFXLENBQUMsT0FBT0k7WUFDbEJKLGNBQWNJO1lBQ2QsTUFBTSxJQUFJQyxRQUFjLENBQUNDLEtBQUtDO2dCQUM1QlIsVUFBVTtvQkFDUk87b0JBQ0EsT0FBT0o7Z0JBQ1Q7Z0JBQ0FKLFNBQVM7b0JBQ1BTO29CQUNBLE9BQU9MO2dCQUNUO2dCQUNBRDtZQUNGO1FBQ0YsR0FDQ08sS0FBSyxDQUFDO1FBQ0wsVUFBVTtRQUNaO1FBRUYsOENBQThDO1FBQzlDLDBEQUEwRDtRQUMxRCxNQUFNLElBQUlILFFBQWMsQ0FBQ04sVUFBYUUsbUJBQW1CRjtRQUV6RCxJQUFJLENBQUNVLFFBQVEsQ0FBQ2IsR0FBRyxHQUFHO1lBQ2xCYyxJQUFJVjtZQUNKRjtZQUNBQztRQUNGO0lBQ0YsRUFBRSxPQUFPWSxLQUFLO1FBQ1osSUFBSSxDQUFDQyxPQUFPLENBQUNDLE1BQU0sQ0FBQ0MsS0FBSyxDQUFDLENBQUMsaUNBQWlDLEVBQUVILElBQUlJLE9BQU8sQ0FBQyxDQUFDLEVBQUVKO1FBQzdFSyxRQUFRQyxJQUFJLENBQUM7SUFDZjtJQUVBLE9BQU9yQjtBQUNUIn0=
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90cmFuc2FjdGlvbnMvYmVnaW5UcmFuc2FjdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEJlZ2luVHJhbnNhY3Rpb24gfSBmcm9tICdwYXlsb2FkL2RhdGFiYXNlJ1xuXG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSAndXVpZCdcblxuaW1wb3J0IHR5cGUgeyBEcml6emxlVHJhbnNhY3Rpb24sIFBvc3RncmVzQWRhcHRlciB9IGZyb20gJy4uL3R5cGVzJ1xuXG5leHBvcnQgY29uc3QgYmVnaW5UcmFuc2FjdGlvbjogQmVnaW5UcmFuc2FjdGlvbiA9IGFzeW5jIGZ1bmN0aW9uIGJlZ2luVHJhbnNhY3Rpb24oXG4gIHRoaXM6IFBvc3RncmVzQWRhcHRlcixcbikge1xuICBsZXQgaWRcbiAgdHJ5IHtcbiAgICBpZCA9IHV1aWQoKVxuXG4gICAgbGV0IHJlamVjdDogKCkgPT4gUHJvbWlzZTx2b2lkPlxuICAgIGxldCByZXNvbHZlOiAoKSA9PiBQcm9taXNlPHZvaWQ+XG4gICAgbGV0IHRyYW5zYWN0aW9uOiBEcml6emxlVHJhbnNhY3Rpb25cblxuICAgIGxldCB0cmFuc2FjdGlvblJlYWR5OiAoKSA9PiB2b2lkXG5cbiAgICAvLyBEcml6emxlIG9ubHkgZXhwb3NlcyBhIHRyYW5zYWN0aW9ucyBBUEkgdGhhdCBpcyBzdWZmaWNpZW50IGlmIHlvdVxuICAgIC8vIGNhbiBkaXJlY3RseSBwYXNzIGFyb3VuZCB0aGUgYHR4YCBhcmd1bWVudC4gQnV0IG91ciBvcGVyYXRpb25zIGFyZSBzcHJlYWRcbiAgICAvLyBvdmVyIG1hbnkgZmlsZXMgYW5kIHdlIGRvbid0IHdhbnQgdG8gcGFzcyB0aGUgYHR4YCBhcm91bmQgbGlrZSB0aGF0LFxuICAgIC8vIHNvIGluc3RlYWQsIHdlIFwibGlmdFwiIHVwIHRoZSBgcmVzb2x2ZWAgYW5kIGByZWplY3RgIG1ldGhvZHNcbiAgICAvLyBhbmQgd2lsbCBjYWxsIHRoZW0gaW4gb3VyIHJlc3BlY3RpdmUgdHJhbnNhY3Rpb24gbWV0aG9kc1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1mbG9hdGluZy1wcm9taXNlc1xuICAgIGNvbnN0IGRvbmUgPSB0aGlzLmRyaXp6bGVcbiAgICAgIC50cmFuc2FjdGlvbihhc3luYyAodHgpID0+IHtcbiAgICAgICAgdHJhbnNhY3Rpb24gPSB0eFxuICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZTx2b2lkPigocmVzLCByZWopID0+IHtcbiAgICAgICAgICByZXNvbHZlID0gKCkgPT4ge1xuICAgICAgICAgICAgcmVzKClcbiAgICAgICAgICAgIHJldHVybiBkb25lXG4gICAgICAgICAgfVxuICAgICAgICAgIHJlamVjdCA9ICgpID0+IHtcbiAgICAgICAgICAgIHJlaigpXG4gICAgICAgICAgICByZXR1cm4gZG9uZVxuICAgICAgICAgIH1cbiAgICAgICAgICB0cmFuc2FjdGlvblJlYWR5KClcbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICAvLyBzd2FsbG93XG4gICAgICB9KVxuXG4gICAgLy8gTmVlZCB0byB3YWl0IHVudGlsIHRoZSB0cmFuc2FjdGlvbiBpcyByZWFkeVxuICAgIC8vIGJlZm9yZSBiaW5kaW5nIGl0cyBgcmVzb2x2ZWAgYW5kIGByZWplY3RgIG1ldGhvZHMgYmVsb3dcbiAgICBhd2FpdCBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4gKHRyYW5zYWN0aW9uUmVhZHkgPSByZXNvbHZlKSlcblxuICAgIHRoaXMuc2Vzc2lvbnNbaWRdID0ge1xuICAgICAgZGI6IHRyYW5zYWN0aW9uLFxuICAgICAgcmVqZWN0LFxuICAgICAgcmVzb2x2ZSxcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucGF5bG9hZC5sb2dnZXIuZXJyb3IoYEVycm9yOiBjYW5ub3QgYmVnaW4gdHJhbnNhY3Rpb246ICR7ZXJyLm1lc3NhZ2V9YCwgZXJyKVxuICAgIHByb2Nlc3MuZXhpdCgxKVxuICB9XG5cbiAgcmV0dXJuIGlkXG59XG4iXSwibmFtZXMiOlsiYmVnaW5UcmFuc2FjdGlvbiIsImlkIiwidXVpZCIsInJlamVjdCIsInJlc29sdmUiLCJ0cmFuc2FjdGlvbiIsInRyYW5zYWN0aW9uUmVhZHkiLCJkb25lIiwiZHJpenpsZSIsInR4IiwiUHJvbWlzZSIsInJlcyIsInJlaiIsImNhdGNoIiwic2Vzc2lvbnMiLCJkYiIsImVyciIsInBheWxvYWQiLCJsb2dnZXIiLCJlcnJvciIsIm1lc3NhZ2UiLCJwcm9jZXNzIiwiZXhpdCJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFNYUE7OztlQUFBQTs7O3NCQUpjO0FBSXBCLE1BQU1BLG1CQUFxQyxlQUFlQTtJQUcvRCxJQUFJQztJQUNKLElBQUk7UUFDRkEsS0FBS0MsSUFBQUEsUUFBSTtRQUVULElBQUlDO1FBQ0osSUFBSUM7UUFDSixJQUFJQztRQUVKLElBQUlDO1FBRUosb0VBQW9FO1FBQ3BFLDRFQUE0RTtRQUM1RSx1RUFBdUU7UUFDdkUsOERBQThEO1FBQzlELDJEQUEyRDtRQUUzRCxtRUFBbUU7UUFDbkUsTUFBTUMsT0FBTyxJQUFJLENBQUNDLE9BQU8sQ0FDdEJILFdBQVcsQ0FBQyxPQUFPSTtZQUNsQkosY0FBY0k7WUFDZCxNQUFNLElBQUlDLFFBQWMsQ0FBQ0MsS0FBS0M7Z0JBQzVCUixVQUFVO29CQUNSTztvQkFDQSxPQUFPSjtnQkFDVDtnQkFDQUosU0FBUztvQkFDUFM7b0JBQ0EsT0FBT0w7Z0JBQ1Q7Z0JBQ0FEO1lBQ0Y7UUFDRixHQUNDTyxLQUFLLENBQUM7UUFDTCxVQUFVO1FBQ1o7UUFFRiw4Q0FBOEM7UUFDOUMsMERBQTBEO1FBQzFELE1BQU0sSUFBSUgsUUFBYyxDQUFDTixVQUFhRSxtQkFBbUJGO1FBRXpELElBQUksQ0FBQ1UsUUFBUSxDQUFDYixHQUFHLEdBQUc7WUFDbEJjLElBQUlWO1lBQ0pGO1lBQ0FDO1FBQ0Y7SUFDRixFQUFFLE9BQU9ZLEtBQUs7UUFDWixJQUFJLENBQUNDLE9BQU8sQ0FBQ0MsTUFBTSxDQUFDQyxLQUFLLENBQUMsQ0FBQyxpQ0FBaUMsRUFBRUgsSUFBSUksT0FBTyxDQUFDLENBQUMsRUFBRUo7UUFDN0VLLFFBQVFDLElBQUksQ0FBQztJQUNmO0lBRUEsT0FBT3JCO0FBQ1QifQ==
@@ -21,4 +21,4 @@ const commitTransaction = async function commitTransaction(id) {
21
21
  delete this.sessions[id];
22
22
  };
23
23
 
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90cmFuc2FjdGlvbnMvY29tbWl0VHJhbnNhY3Rpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDb21taXRUcmFuc2FjdGlvbiB9IGZyb20gJ3BheWxvYWQvZGF0YWJhc2UnXG5cbmV4cG9ydCBjb25zdCBjb21taXRUcmFuc2FjdGlvbjogQ29tbWl0VHJhbnNhY3Rpb24gPSBhc3luYyBmdW5jdGlvbiBjb21taXRUcmFuc2FjdGlvbihpZCkge1xuICAvLyBpZiB0aGUgc2Vzc2lvbiB3YXMgZGVsZXRlZCBpdCBoYXMgYWxyZWFkeSBiZWVuIGFib3J0ZWRcbiAgaWYgKCF0aGlzLnNlc3Npb25zW2lkXSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCB0aGlzLnNlc3Npb25zW2lkXS5yZXNvbHZlKClcbiAgfSBjYXRjaCAoZXJyOiB1bmtub3duKSB7XG4gICAgYXdhaXQgdGhpcy5zZXNzaW9uc1tpZF0ucmVqZWN0KClcbiAgfVxuXG4gIGRlbGV0ZSB0aGlzLnNlc3Npb25zW2lkXVxufVxuIl0sIm5hbWVzIjpbImNvbW1pdFRyYW5zYWN0aW9uIiwiaWQiLCJzZXNzaW9ucyIsInJlc29sdmUiLCJlcnIiLCJyZWplY3QiXSwicmFuZ2VNYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OyIsIm1hcHBpbmdzIjoiOzs7OytCQUVhQTs7O2VBQUFBOzs7QUFBTixNQUFNQSxvQkFBdUMsZUFBZUEsa0JBQWtCQyxFQUFFO0lBQ3JGLHlEQUF5RDtJQUN6RCxJQUFJLENBQUMsSUFBSSxDQUFDQyxRQUFRLENBQUNELEdBQUcsRUFBRTtRQUN0QjtJQUNGO0lBRUEsSUFBSTtRQUNGLE1BQU0sSUFBSSxDQUFDQyxRQUFRLENBQUNELEdBQUcsQ0FBQ0UsT0FBTztJQUNqQyxFQUFFLE9BQU9DLEtBQWM7UUFDckIsTUFBTSxJQUFJLENBQUNGLFFBQVEsQ0FBQ0QsR0FBRyxDQUFDSSxNQUFNO0lBQ2hDO0lBRUEsT0FBTyxJQUFJLENBQUNILFFBQVEsQ0FBQ0QsR0FBRztBQUMxQiJ9
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90cmFuc2FjdGlvbnMvY29tbWl0VHJhbnNhY3Rpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDb21taXRUcmFuc2FjdGlvbiB9IGZyb20gJ3BheWxvYWQvZGF0YWJhc2UnXG5cbmV4cG9ydCBjb25zdCBjb21taXRUcmFuc2FjdGlvbjogQ29tbWl0VHJhbnNhY3Rpb24gPSBhc3luYyBmdW5jdGlvbiBjb21taXRUcmFuc2FjdGlvbihpZCkge1xuICAvLyBpZiB0aGUgc2Vzc2lvbiB3YXMgZGVsZXRlZCBpdCBoYXMgYWxyZWFkeSBiZWVuIGFib3J0ZWRcbiAgaWYgKCF0aGlzLnNlc3Npb25zW2lkXSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCB0aGlzLnNlc3Npb25zW2lkXS5yZXNvbHZlKClcbiAgfSBjYXRjaCAoZXJyOiB1bmtub3duKSB7XG4gICAgYXdhaXQgdGhpcy5zZXNzaW9uc1tpZF0ucmVqZWN0KClcbiAgfVxuXG4gIGRlbGV0ZSB0aGlzLnNlc3Npb25zW2lkXVxufVxuIl0sIm5hbWVzIjpbImNvbW1pdFRyYW5zYWN0aW9uIiwiaWQiLCJzZXNzaW9ucyIsInJlc29sdmUiLCJlcnIiLCJyZWplY3QiXSwibWFwcGluZ3MiOiI7Ozs7K0JBRWFBOzs7ZUFBQUE7OztBQUFOLE1BQU1BLG9CQUF1QyxlQUFlQSxrQkFBa0JDLEVBQUU7SUFDckYseURBQXlEO0lBQ3pELElBQUksQ0FBQyxJQUFJLENBQUNDLFFBQVEsQ0FBQ0QsR0FBRyxFQUFFO1FBQ3RCO0lBQ0Y7SUFFQSxJQUFJO1FBQ0YsTUFBTSxJQUFJLENBQUNDLFFBQVEsQ0FBQ0QsR0FBRyxDQUFDRSxPQUFPO0lBQ2pDLEVBQUUsT0FBT0MsS0FBYztRQUNyQixNQUFNLElBQUksQ0FBQ0YsUUFBUSxDQUFDRCxHQUFHLENBQUNJLE1BQU07SUFDaEM7SUFFQSxPQUFPLElBQUksQ0FBQ0gsUUFBUSxDQUFDRCxHQUFHO0FBQzFCIn0=
@@ -20,4 +20,4 @@ const rollbackTransaction = async function rollbackTransaction(id = '') {
20
20
  delete this.sessions[id];
21
21
  };
22
22
 
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90cmFuc2FjdGlvbnMvcm9sbGJhY2tUcmFuc2FjdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFJvbGxiYWNrVHJhbnNhY3Rpb24gfSBmcm9tICdwYXlsb2FkL2RhdGFiYXNlJ1xuXG5leHBvcnQgY29uc3Qgcm9sbGJhY2tUcmFuc2FjdGlvbjogUm9sbGJhY2tUcmFuc2FjdGlvbiA9IGFzeW5jIGZ1bmN0aW9uIHJvbGxiYWNrVHJhbnNhY3Rpb24oXG4gIGlkID0gJycsXG4pIHtcbiAgLy8gaWYgbXVsdGlwbGUgb3BlcmF0aW9ucyBhcmUgdXNpbmcgdGhlIHNhbWUgdHJhbnNhY3Rpb24sIHRoZSBmaXJzdCB3aWxsIGZsb3cgdGhyb3VnaCBhbmQgZGVsZXRlIHRoZSBzZXNzaW9uLlxuICAvLyBzdWJzZXF1ZW50IGNhbGxzIHNob3VsZCBiZSBpZ25vcmVkLlxuICBpZiAoIXRoaXMuc2Vzc2lvbnNbaWRdKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICAvLyBlbmQgdGhlIHNlc3Npb24gcHJvbWlzZSBpbiBmYWlsdXJlIGJ5IGNhbGxpbmcgcmVqZWN0XG4gIGF3YWl0IHRoaXMuc2Vzc2lvbnNbaWRdLnJlamVjdCgpXG5cbiAgLy8gZGVsZXRlIHRoZSBzZXNzaW9uIGNhdXNpbmcgYW55IG90aGVyIG9wZXJhdGlvbnMgd2l0aCB0aGUgc2FtZSB0cmFuc2FjdGlvbiB0byBmYWlsXG4gIGRlbGV0ZSB0aGlzLnNlc3Npb25zW2lkXVxufVxuIl0sIm5hbWVzIjpbInJvbGxiYWNrVHJhbnNhY3Rpb24iLCJpZCIsInNlc3Npb25zIiwicmVqZWN0Il0sInJhbmdlTWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OyIsIm1hcHBpbmdzIjoiOzs7OytCQUVhQTs7O2VBQUFBOzs7QUFBTixNQUFNQSxzQkFBMkMsZUFBZUEsb0JBQ3JFQyxLQUFLLEVBQUU7SUFFUCw2R0FBNkc7SUFDN0csc0NBQXNDO0lBQ3RDLElBQUksQ0FBQyxJQUFJLENBQUNDLFFBQVEsQ0FBQ0QsR0FBRyxFQUFFO1FBQ3RCO0lBQ0Y7SUFFQSx1REFBdUQ7SUFDdkQsTUFBTSxJQUFJLENBQUNDLFFBQVEsQ0FBQ0QsR0FBRyxDQUFDRSxNQUFNO0lBRTlCLG9GQUFvRjtJQUNwRixPQUFPLElBQUksQ0FBQ0QsUUFBUSxDQUFDRCxHQUFHO0FBQzFCIn0=
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90cmFuc2FjdGlvbnMvcm9sbGJhY2tUcmFuc2FjdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFJvbGxiYWNrVHJhbnNhY3Rpb24gfSBmcm9tICdwYXlsb2FkL2RhdGFiYXNlJ1xuXG5leHBvcnQgY29uc3Qgcm9sbGJhY2tUcmFuc2FjdGlvbjogUm9sbGJhY2tUcmFuc2FjdGlvbiA9IGFzeW5jIGZ1bmN0aW9uIHJvbGxiYWNrVHJhbnNhY3Rpb24oXG4gIGlkID0gJycsXG4pIHtcbiAgLy8gaWYgbXVsdGlwbGUgb3BlcmF0aW9ucyBhcmUgdXNpbmcgdGhlIHNhbWUgdHJhbnNhY3Rpb24sIHRoZSBmaXJzdCB3aWxsIGZsb3cgdGhyb3VnaCBhbmQgZGVsZXRlIHRoZSBzZXNzaW9uLlxuICAvLyBzdWJzZXF1ZW50IGNhbGxzIHNob3VsZCBiZSBpZ25vcmVkLlxuICBpZiAoIXRoaXMuc2Vzc2lvbnNbaWRdKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICAvLyBlbmQgdGhlIHNlc3Npb24gcHJvbWlzZSBpbiBmYWlsdXJlIGJ5IGNhbGxpbmcgcmVqZWN0XG4gIGF3YWl0IHRoaXMuc2Vzc2lvbnNbaWRdLnJlamVjdCgpXG5cbiAgLy8gZGVsZXRlIHRoZSBzZXNzaW9uIGNhdXNpbmcgYW55IG90aGVyIG9wZXJhdGlvbnMgd2l0aCB0aGUgc2FtZSB0cmFuc2FjdGlvbiB0byBmYWlsXG4gIGRlbGV0ZSB0aGlzLnNlc3Npb25zW2lkXVxufVxuIl0sIm5hbWVzIjpbInJvbGxiYWNrVHJhbnNhY3Rpb24iLCJpZCIsInNlc3Npb25zIiwicmVqZWN0Il0sIm1hcHBpbmdzIjoiOzs7OytCQUVhQTs7O2VBQUFBOzs7QUFBTixNQUFNQSxzQkFBMkMsZUFBZUEsb0JBQ3JFQyxLQUFLLEVBQUU7SUFFUCw2R0FBNkc7SUFDN0csc0NBQXNDO0lBQ3RDLElBQUksQ0FBQyxJQUFJLENBQUNDLFFBQVEsQ0FBQ0QsR0FBRyxFQUFFO1FBQ3RCO0lBQ0Y7SUFFQSx1REFBdUQ7SUFDdkQsTUFBTSxJQUFJLENBQUNDLFFBQVEsQ0FBQ0QsR0FBRyxDQUFDRSxNQUFNO0lBRTlCLG9GQUFvRjtJQUNwRixPQUFPLElBQUksQ0FBQ0QsUUFBUSxDQUFDRCxHQUFHO0FBQzFCIn0=
@@ -17,4 +17,4 @@ const transformHasManyNumber = ({ field, locale, numberRows, ref })=>{
17
17
  }
18
18
  };
19
19
 
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm0vcmVhZC9oYXNNYW55TnVtYmVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXBhcmFtLXJlYXNzaWduICovXG5pbXBvcnQgdHlwZSB7IE51bWJlckZpZWxkIH0gZnJvbSAncGF5bG9hZC90eXBlcydcblxudHlwZSBBcmdzID0ge1xuICBmaWVsZDogTnVtYmVyRmllbGRcbiAgbG9jYWxlPzogc3RyaW5nXG4gIG51bWJlclJvd3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W11cbiAgcmVmOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxufVxuXG5leHBvcnQgY29uc3QgdHJhbnNmb3JtSGFzTWFueU51bWJlciA9ICh7IGZpZWxkLCBsb2NhbGUsIG51bWJlclJvd3MsIHJlZiB9OiBBcmdzKSA9PiB7XG4gIGNvbnN0IHJlc3VsdCA9IG51bWJlclJvd3MubWFwKCh7IG51bWJlciB9KSA9PiBudW1iZXIpXG5cbiAgaWYgKGxvY2FsZSkge1xuICAgIHJlZltmaWVsZC5uYW1lXVtsb2NhbGVdID0gcmVzdWx0XG4gIH0gZWxzZSB7XG4gICAgcmVmW2ZpZWxkLm5hbWVdID0gcmVzdWx0XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJ0cmFuc2Zvcm1IYXNNYW55TnVtYmVyIiwiZmllbGQiLCJsb2NhbGUiLCJudW1iZXJSb3dzIiwicmVmIiwicmVzdWx0IiwibWFwIiwibnVtYmVyIiwibmFtZSJdLCJyYW5nZU1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OzsiLCJtYXBwaW5ncyI6IkFBQUEsb0NBQW9DOzs7OytCQVV2QkE7OztlQUFBQTs7O0FBQU4sTUFBTUEseUJBQXlCLENBQUMsRUFBRUMsS0FBSyxFQUFFQyxNQUFNLEVBQUVDLFVBQVUsRUFBRUMsR0FBRyxFQUFRO0lBQzdFLE1BQU1DLFNBQVNGLFdBQVdHLEdBQUcsQ0FBQyxDQUFDLEVBQUVDLE1BQU0sRUFBRSxHQUFLQTtJQUU5QyxJQUFJTCxRQUFRO1FBQ1ZFLEdBQUcsQ0FBQ0gsTUFBTU8sSUFBSSxDQUFDLENBQUNOLE9BQU8sR0FBR0c7SUFDNUIsT0FBTztRQUNMRCxHQUFHLENBQUNILE1BQU1PLElBQUksQ0FBQyxHQUFHSDtJQUNwQjtBQUNGIn0=
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm0vcmVhZC9oYXNNYW55TnVtYmVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXBhcmFtLXJlYXNzaWduICovXG5pbXBvcnQgdHlwZSB7IE51bWJlckZpZWxkIH0gZnJvbSAncGF5bG9hZC90eXBlcydcblxudHlwZSBBcmdzID0ge1xuICBmaWVsZDogTnVtYmVyRmllbGRcbiAgbG9jYWxlPzogc3RyaW5nXG4gIG51bWJlclJvd3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W11cbiAgcmVmOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxufVxuXG5leHBvcnQgY29uc3QgdHJhbnNmb3JtSGFzTWFueU51bWJlciA9ICh7IGZpZWxkLCBsb2NhbGUsIG51bWJlclJvd3MsIHJlZiB9OiBBcmdzKSA9PiB7XG4gIGNvbnN0IHJlc3VsdCA9IG51bWJlclJvd3MubWFwKCh7IG51bWJlciB9KSA9PiBudW1iZXIpXG5cbiAgaWYgKGxvY2FsZSkge1xuICAgIHJlZltmaWVsZC5uYW1lXVtsb2NhbGVdID0gcmVzdWx0XG4gIH0gZWxzZSB7XG4gICAgcmVmW2ZpZWxkLm5hbWVdID0gcmVzdWx0XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJ0cmFuc2Zvcm1IYXNNYW55TnVtYmVyIiwiZmllbGQiLCJsb2NhbGUiLCJudW1iZXJSb3dzIiwicmVmIiwicmVzdWx0IiwibWFwIiwibnVtYmVyIiwibmFtZSJdLCJtYXBwaW5ncyI6IkFBQUEsb0NBQW9DOzs7OytCQVV2QkE7OztlQUFBQTs7O0FBQU4sTUFBTUEseUJBQXlCLENBQUMsRUFBRUMsS0FBSyxFQUFFQyxNQUFNLEVBQUVDLFVBQVUsRUFBRUMsR0FBRyxFQUFRO0lBQzdFLE1BQU1DLFNBQVNGLFdBQVdHLEdBQUcsQ0FBQyxDQUFDLEVBQUVDLE1BQU0sRUFBRSxHQUFLQTtJQUU5QyxJQUFJTCxRQUFRO1FBQ1ZFLEdBQUcsQ0FBQ0gsTUFBTU8sSUFBSSxDQUFDLENBQUNOLE9BQU8sR0FBR0c7SUFDNUIsT0FBTztRQUNMRCxHQUFHLENBQUNILE1BQU1PLElBQUksQ0FBQyxHQUFHSDtJQUNwQjtBQUNGIn0=
@@ -2,9 +2,9 @@ import type { TextField } from 'payload/types';
2
2
  type Args = {
3
3
  field: TextField;
4
4
  locale?: string;
5
- textRows: Record<string, unknown>[];
6
5
  ref: Record<string, unknown>;
6
+ textRows: Record<string, unknown>[];
7
7
  };
8
- export declare const transformHasManyText: ({ field, locale, textRows, ref }: Args) => void;
8
+ export declare const transformHasManyText: ({ field, locale, ref, textRows }: Args) => void;
9
9
  export {};
10
10
  //# sourceMappingURL=hasManyText.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hasManyText.d.ts","sourceRoot":"","sources":["../../../src/transform/read/hasManyText.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAE9C,KAAK,IAAI,GAAG;IACV,KAAK,EAAE,SAAS,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IACnC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC7B,CAAA;AAED,eAAO,MAAM,oBAAoB,qCAAsC,IAAI,SAQ1E,CAAA"}
1
+ {"version":3,"file":"hasManyText.d.ts","sourceRoot":"","sources":["../../../src/transform/read/hasManyText.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAE9C,KAAK,IAAI,GAAG;IACV,KAAK,EAAE,SAAS,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;CACpC,CAAA;AAED,eAAO,MAAM,oBAAoB,qCAAsC,IAAI,SAQ1E,CAAA"}
@@ -8,7 +8,7 @@ Object.defineProperty(exports, "transformHasManyText", {
8
8
  return transformHasManyText;
9
9
  }
10
10
  });
11
- const transformHasManyText = ({ field, locale, textRows, ref })=>{
11
+ const transformHasManyText = ({ field, locale, ref, textRows })=>{
12
12
  const result = textRows.map(({ text })=>text);
13
13
  if (locale) {
14
14
  ref[field.name][locale] = result;
@@ -17,4 +17,4 @@ const transformHasManyText = ({ field, locale, textRows, ref })=>{
17
17
  }
18
18
  };
19
19
 
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm0vcmVhZC9oYXNNYW55VGV4dC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1wYXJhbS1yZWFzc2lnbiAqL1xuaW1wb3J0IHR5cGUgeyBUZXh0RmllbGQgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG50eXBlIEFyZ3MgPSB7XG4gIGZpZWxkOiBUZXh0RmllbGRcbiAgbG9jYWxlPzogc3RyaW5nXG4gIHRleHRSb3dzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdXG4gIHJlZjogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbn1cblxuZXhwb3J0IGNvbnN0IHRyYW5zZm9ybUhhc01hbnlUZXh0ID0gKHsgZmllbGQsIGxvY2FsZSwgdGV4dFJvd3MsIHJlZiB9OiBBcmdzKSA9PiB7XG4gIGNvbnN0IHJlc3VsdCA9IHRleHRSb3dzLm1hcCgoeyB0ZXh0IH0pID0+IHRleHQpXG5cbiAgaWYgKGxvY2FsZSkge1xuICAgIHJlZltmaWVsZC5uYW1lXVtsb2NhbGVdID0gcmVzdWx0XG4gIH0gZWxzZSB7XG4gICAgcmVmW2ZpZWxkLm5hbWVdID0gcmVzdWx0XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJ0cmFuc2Zvcm1IYXNNYW55VGV4dCIsImZpZWxkIiwibG9jYWxlIiwidGV4dFJvd3MiLCJyZWYiLCJyZXN1bHQiLCJtYXAiLCJ0ZXh0IiwibmFtZSJdLCJyYW5nZU1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OzsiLCJtYXBwaW5ncyI6IkFBQUEsb0NBQW9DOzs7OytCQVV2QkE7OztlQUFBQTs7O0FBQU4sTUFBTUEsdUJBQXVCLENBQUMsRUFBRUMsS0FBSyxFQUFFQyxNQUFNLEVBQUVDLFFBQVEsRUFBRUMsR0FBRyxFQUFRO0lBQ3pFLE1BQU1DLFNBQVNGLFNBQVNHLEdBQUcsQ0FBQyxDQUFDLEVBQUVDLElBQUksRUFBRSxHQUFLQTtJQUUxQyxJQUFJTCxRQUFRO1FBQ1ZFLEdBQUcsQ0FBQ0gsTUFBTU8sSUFBSSxDQUFDLENBQUNOLE9BQU8sR0FBR0c7SUFDNUIsT0FBTztRQUNMRCxHQUFHLENBQUNILE1BQU1PLElBQUksQ0FBQyxHQUFHSDtJQUNwQjtBQUNGIn0=
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm0vcmVhZC9oYXNNYW55VGV4dC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1wYXJhbS1yZWFzc2lnbiAqL1xuaW1wb3J0IHR5cGUgeyBUZXh0RmllbGQgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG50eXBlIEFyZ3MgPSB7XG4gIGZpZWxkOiBUZXh0RmllbGRcbiAgbG9jYWxlPzogc3RyaW5nXG4gIHJlZjogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgdGV4dFJvd3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W11cbn1cblxuZXhwb3J0IGNvbnN0IHRyYW5zZm9ybUhhc01hbnlUZXh0ID0gKHsgZmllbGQsIGxvY2FsZSwgcmVmLCB0ZXh0Um93cyB9OiBBcmdzKSA9PiB7XG4gIGNvbnN0IHJlc3VsdCA9IHRleHRSb3dzLm1hcCgoeyB0ZXh0IH0pID0+IHRleHQpXG5cbiAgaWYgKGxvY2FsZSkge1xuICAgIHJlZltmaWVsZC5uYW1lXVtsb2NhbGVdID0gcmVzdWx0XG4gIH0gZWxzZSB7XG4gICAgcmVmW2ZpZWxkLm5hbWVdID0gcmVzdWx0XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJ0cmFuc2Zvcm1IYXNNYW55VGV4dCIsImZpZWxkIiwibG9jYWxlIiwicmVmIiwidGV4dFJvd3MiLCJyZXN1bHQiLCJtYXAiLCJ0ZXh0IiwibmFtZSJdLCJtYXBwaW5ncyI6IkFBQUEsb0NBQW9DOzs7OytCQVV2QkE7OztlQUFBQTs7O0FBQU4sTUFBTUEsdUJBQXVCLENBQUMsRUFBRUMsS0FBSyxFQUFFQyxNQUFNLEVBQUVDLEdBQUcsRUFBRUMsUUFBUSxFQUFRO0lBQ3pFLE1BQU1DLFNBQVNELFNBQVNFLEdBQUcsQ0FBQyxDQUFDLEVBQUVDLElBQUksRUFBRSxHQUFLQTtJQUUxQyxJQUFJTCxRQUFRO1FBQ1ZDLEdBQUcsQ0FBQ0YsTUFBTU8sSUFBSSxDQUFDLENBQUNOLE9BQU8sR0FBR0c7SUFDNUIsT0FBTztRQUNMRixHQUFHLENBQUNGLE1BQU1PLElBQUksQ0FBQyxHQUFHSDtJQUNwQjtBQUNGIn0=