@payloadcms/db-postgres 0.8.1 → 0.8.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (76) hide show
  1. package/dist/count.d.ts.map +1 -1
  2. package/dist/count.js +3 -6
  3. package/dist/create.d.ts.map +1 -1
  4. package/dist/create.js +9 -6
  5. package/dist/createGlobal.d.ts.map +1 -1
  6. package/dist/createGlobal.js +9 -6
  7. package/dist/createGlobalVersion.d.ts.map +1 -1
  8. package/dist/createGlobalVersion.js +11 -10
  9. package/dist/createVersion.d.ts.map +1 -1
  10. package/dist/createVersion.js +22 -21
  11. package/dist/deleteMany.d.ts.map +1 -1
  12. package/dist/deleteMany.js +8 -6
  13. package/dist/deleteOne.d.ts.map +1 -1
  14. package/dist/deleteOne.js +3 -6
  15. package/dist/deleteVersions.d.ts.map +1 -1
  16. package/dist/deleteVersions.js +8 -7
  17. package/dist/find/traverseFields.d.ts.map +1 -1
  18. package/dist/find/traverseFields.js +13 -22
  19. package/dist/find.d.ts.map +1 -1
  20. package/dist/find.js +8 -6
  21. package/dist/findGlobal.d.ts.map +1 -1
  22. package/dist/findGlobal.js +8 -6
  23. package/dist/findGlobalVersions.d.ts.map +1 -1
  24. package/dist/findGlobalVersions.js +8 -7
  25. package/dist/findOne.d.ts.map +1 -1
  26. package/dist/findOne.js +8 -6
  27. package/dist/findVersions.d.ts.map +1 -1
  28. package/dist/findVersions.js +8 -7
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +6 -8
  31. package/dist/init.d.ts.map +1 -1
  32. package/dist/init.js +10 -8
  33. package/dist/queries/getTableColumnFromPath.d.ts.map +1 -1
  34. package/dist/queries/getTableColumnFromPath.js +12 -41
  35. package/dist/queries/parseParams.js +2 -2
  36. package/dist/queryDrafts.d.ts.map +1 -1
  37. package/dist/queryDrafts.js +8 -7
  38. package/dist/schema/build.d.ts +4 -3
  39. package/dist/schema/build.d.ts.map +1 -1
  40. package/dist/schema/build.js +86 -45
  41. package/dist/schema/{getTableName.d.ts → createTableName.d.ts} +5 -7
  42. package/dist/schema/createTableName.d.ts.map +1 -0
  43. package/dist/schema/createTableName.js +43 -0
  44. package/dist/schema/traverseFields.d.ts.map +1 -1
  45. package/dist/schema/traverseFields.js +40 -18
  46. package/dist/schema/validateExistingBlockIsIdentical.d.ts.map +1 -1
  47. package/dist/schema/validateExistingBlockIsIdentical.js +1 -1
  48. package/dist/transform/read/hasManyText.d.ts +2 -2
  49. package/dist/transform/read/hasManyText.d.ts.map +1 -1
  50. package/dist/transform/read/hasManyText.js +2 -2
  51. package/dist/transform/read/index.js +3 -3
  52. package/dist/transform/write/array.d.ts +2 -2
  53. package/dist/transform/write/array.d.ts.map +1 -1
  54. package/dist/transform/write/array.js +4 -4
  55. package/dist/transform/write/blocks.js +2 -2
  56. package/dist/transform/write/index.js +5 -5
  57. package/dist/transform/write/texts.js +3 -3
  58. package/dist/transform/write/traverseFields.d.ts.map +1 -1
  59. package/dist/transform/write/traverseFields.js +6 -15
  60. package/dist/transform/write/types.d.ts +1 -1
  61. package/dist/transform/write/types.d.ts.map +1 -1
  62. package/dist/types.d.ts +3 -6
  63. package/dist/types.d.ts.map +1 -1
  64. package/dist/update.d.ts.map +1 -1
  65. package/dist/update.js +3 -6
  66. package/dist/updateGlobal.d.ts.map +1 -1
  67. package/dist/updateGlobal.js +8 -6
  68. package/dist/updateGlobalVersion.d.ts.map +1 -1
  69. package/dist/updateGlobalVersion.js +3 -7
  70. package/dist/updateVersion.d.ts.map +1 -1
  71. package/dist/updateVersion.js +3 -7
  72. package/dist/upsertRow/index.js +3 -3
  73. package/dist/upsertRow/insertArrays.js +2 -2
  74. package/package.json +3 -3
  75. package/dist/schema/getTableName.d.ts.map +0 -1
  76. package/dist/schema/getTableName.js +0 -43
@@ -15,7 +15,6 @@ const _types = require("payload/types");
15
15
  const _utilities = require("payload/utilities");
16
16
  const _tosnakecase = /*#__PURE__*/ _interop_require_default(require("to-snake-case"));
17
17
  const _uuid = require("uuid");
18
- const _getTableName = require("../schema/getTableName");
19
18
  function _interop_require_default(obj) {
20
19
  return obj && obj.__esModule ? obj : {
21
20
  default: obj
@@ -122,13 +121,7 @@ const getTableColumnFromPath = ({ adapter, aliasTable, collectionPath, columnPre
122
121
  case 'group':
123
122
  {
124
123
  if (locale && field.localized && adapter.payload.config.localization) {
125
- newTableName = (0, _getTableName.getTableName)({
126
- adapter,
127
- config: field,
128
- locales: true,
129
- parentTableName: tableName,
130
- prefix: `${tableName}_`
131
- });
124
+ newTableName = `${tableName}${adapter.localesSuffix}`;
132
125
  joins[tableName] = (0, _drizzleorm.eq)(adapter.tables[tableName].id, adapter.tables[newTableName]._parentID);
133
126
  if (locale !== 'all') {
134
127
  constraints.push({
@@ -160,12 +153,7 @@ const getTableColumnFromPath = ({ adapter, aliasTable, collectionPath, columnPre
160
153
  case 'select':
161
154
  {
162
155
  if (field.hasMany) {
163
- newTableName = (0, _getTableName.getTableName)({
164
- adapter,
165
- config: field,
166
- parentTableName: `${tableName}_${tableNameSuffix}`,
167
- prefix: `${tableName}_${tableNameSuffix}`
168
- });
156
+ const newTableName = adapter.tableNameMap.get(`${tableName}_${tableNameSuffix}${(0, _tosnakecase.default)(field.name)}`);
169
157
  if (locale && field.localized && adapter.payload.config.localization) {
170
158
  joins[newTableName] = (0, _drizzleorm.and)((0, _drizzleorm.eq)(adapter.tables[tableName].id, adapter.tables[newTableName].parent), (0, _drizzleorm.eq)(adapter.tables[newTableName]._locale, locale));
171
159
  if (locale !== 'all') {
@@ -225,12 +213,7 @@ const getTableColumnFromPath = ({ adapter, aliasTable, collectionPath, columnPre
225
213
  }
226
214
  case 'array':
227
215
  {
228
- newTableName = (0, _getTableName.getTableName)({
229
- adapter,
230
- config: field,
231
- parentTableName: `${tableName}_${tableNameSuffix}`,
232
- prefix: `${tableName}_${tableNameSuffix}`
233
- });
216
+ newTableName = adapter.tableNameMap.get(`${tableName}_${tableNameSuffix}${(0, _tosnakecase.default)(field.name)}`);
234
217
  constraintPath = `${constraintPath}${field.name}.%.`;
235
218
  if (locale && field.localized && adapter.payload.config.localization) {
236
219
  joins[newTableName] = (0, _drizzleorm.and)((0, _drizzleorm.eq)(adapter.tables[tableName].id, adapter.tables[newTableName]._parentID), (0, _drizzleorm.eq)(adapter.tables[newTableName]._locale, locale));
@@ -272,12 +255,7 @@ const getTableColumnFromPath = ({ adapter, aliasTable, collectionPath, columnPre
272
255
  ];
273
256
  blockTypes.forEach((blockType)=>{
274
257
  const block = field.blocks.find((block)=>block.slug === blockType);
275
- newTableName = (0, _getTableName.getTableName)({
276
- adapter,
277
- config: block,
278
- parentTableName: tableName,
279
- prefix: `${tableName}_blocks_`
280
- });
258
+ newTableName = adapter.tableNameMap.get(`${tableName}_blocks_${(0, _tosnakecase.default)(block.slug)}`);
281
259
  joins[newTableName] = (0, _drizzleorm.eq)(adapter.tables[tableName].id, adapter.tables[newTableName]._parentID);
282
260
  constraints.push({
283
261
  columnName: '_path',
@@ -293,12 +271,7 @@ const getTableColumnFromPath = ({ adapter, aliasTable, collectionPath, columnPre
293
271
  };
294
272
  }
295
273
  const hasBlockField = field.blocks.some((block)=>{
296
- newTableName = (0, _getTableName.getTableName)({
297
- adapter,
298
- config: block,
299
- parentTableName: tableName,
300
- prefix: `${tableName}_blocks_`
301
- });
274
+ newTableName = adapter.tableNameMap.get(`${tableName}_blocks_${(0, _tosnakecase.default)(block.slug)}`);
302
275
  constraintPath = `${constraintPath}${field.name}.%.`;
303
276
  let result;
304
277
  const blockConstraints = [];
@@ -365,6 +338,7 @@ const getTableColumnFromPath = ({ adapter, aliasTable, collectionPath, columnPre
365
338
  const newCollectionPath = pathSegments.slice(1).join('.');
366
339
  const aliasRelationshipTableName = (0, _uuid.v4)();
367
340
  const aliasRelationshipTable = (0, _pgcore.alias)(adapter.tables[relationTableName], aliasRelationshipTableName);
341
+ // Join in the relationships table
368
342
  if (locale && field.localized && adapter.payload.config.localization) {
369
343
  joinAliases.push({
370
344
  condition: (0, _drizzleorm.and)((0, _drizzleorm.eq)((aliasTable || adapter.tables[rootTableName]).id, aliasRelationshipTable.parent), (0, _drizzleorm.eq)(aliasRelationshipTable.locale, locale), (0, _drizzleorm.like)(aliasRelationshipTable.path, `${constraintPath}${field.name}`)),
@@ -388,10 +362,7 @@ const getTableColumnFromPath = ({ adapter, aliasTable, collectionPath, columnPre
388
362
  let newAliasTable;
389
363
  if (typeof field.relationTo === 'string') {
390
364
  const relationshipConfig = adapter.payload.collections[field.relationTo].config;
391
- newTableName = (0, _getTableName.getTableName)({
392
- adapter,
393
- config: relationshipConfig
394
- });
365
+ newTableName = adapter.tableNameMap.get((0, _tosnakecase.default)(relationshipConfig.slug));
395
366
  // parent to relationship join table
396
367
  relationshipFields = relationshipConfig.fields;
397
368
  newAliasTable = (0, _pgcore.alias)(adapter.tables[newTableName], (0, _tosnakecase.default)((0, _uuid.v4)()));
@@ -408,10 +379,10 @@ const getTableColumnFromPath = ({ adapter, aliasTable, collectionPath, columnPre
408
379
  };
409
380
  }
410
381
  } else if (newCollectionPath === 'value') {
411
- const tableColumnsNames = field.relationTo.map((relationTo)=>`"${aliasRelationshipTableName}"."${(0, _getTableName.getTableName)({
412
- adapter,
413
- config: adapter.payload.collections[relationTo].config
414
- })}_id"`);
382
+ const tableColumnsNames = field.relationTo.map((relationTo)=>{
383
+ const relationTableName = adapter.tableNameMap.get((0, _tosnakecase.default)(adapter.payload.collections[relationTo].config.slug));
384
+ return `"${aliasRelationshipTableName}"."${relationTableName}_id"`;
385
+ });
415
386
  return {
416
387
  constraints,
417
388
  field,
@@ -482,4 +453,4 @@ const getTableColumnFromPath = ({ adapter, aliasTable, collectionPath, columnPre
482
453
  throw new _errors.APIError(`Cannot find field for path at ${fieldPath}`);
483
454
  };
484
455
 
485
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9xdWVyaWVzL2dldFRhYmxlQ29sdW1uRnJvbVBhdGgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCB0eXBlIHsgU1FMIH0gZnJvbSAnZHJpenpsZS1vcm0nXG5pbXBvcnQgdHlwZSB7IFBnVGFibGVXaXRoQ29sdW1ucyB9IGZyb20gJ2RyaXp6bGUtb3JtL3BnLWNvcmUnXG5pbXBvcnQgdHlwZSB7IEZpZWxkLCBGaWVsZEFmZmVjdGluZ0RhdGEsIE51bWJlckZpZWxkLCBUYWJBc0ZpZWxkLCBUZXh0RmllbGQgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgeyBhbmQsIGVxLCBsaWtlLCBzcWwgfSBmcm9tICdkcml6emxlLW9ybSdcbmltcG9ydCB7IGFsaWFzIH0gZnJvbSAnZHJpenpsZS1vcm0vcGctY29yZSdcbmltcG9ydCB7IEFQSUVycm9yIH0gZnJvbSAncGF5bG9hZC9lcnJvcnMnXG5pbXBvcnQgeyBmaWVsZEFmZmVjdHNEYXRhLCB0YWJIYXNOYW1lIH0gZnJvbSAncGF5bG9hZC90eXBlcydcbmltcG9ydCB7IGZsYXR0ZW5Ub3BMZXZlbEZpZWxkcyB9IGZyb20gJ3BheWxvYWQvdXRpbGl0aWVzJ1xuaW1wb3J0IHRvU25ha2VDYXNlIGZyb20gJ3RvLXNuYWtlLWNhc2UnXG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSAndXVpZCdcblxuaW1wb3J0IHR5cGUgeyBHZW5lcmljQ29sdW1uLCBHZW5lcmljVGFibGUsIFBvc3RncmVzQWRhcHRlciB9IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBCdWlsZFF1ZXJ5Sm9pbkFsaWFzZXMsIEJ1aWxkUXVlcnlKb2lucyB9IGZyb20gJy4vYnVpbGRRdWVyeSdcblxuaW1wb3J0IHsgZ2V0VGFibGVOYW1lIH0gZnJvbSAnLi4vc2NoZW1hL2dldFRhYmxlTmFtZSdcblxudHlwZSBDb25zdHJhaW50ID0ge1xuICBjb2x1bW5OYW1lOiBzdHJpbmdcbiAgdGFibGU6IEdlbmVyaWNUYWJsZSB8IFBnVGFibGVXaXRoQ29sdW1uczxhbnk+XG4gIHZhbHVlOiB1bmtub3duXG59XG5cbnR5cGUgVGFibGVDb2x1bW4gPSB7XG4gIGNvbHVtbk5hbWU/OiBzdHJpbmdcbiAgY29uc3RyYWludHM6IENvbnN0cmFpbnRbXVxuICBmaWVsZDogRmllbGRBZmZlY3RpbmdEYXRhXG4gIGdldE5vdE51bGxDb2x1bW5CeVZhbHVlPzogKHZhbDogdW5rbm93bikgPT4gc3RyaW5nXG4gIHBhdGhTZWdtZW50cz86IHN0cmluZ1tdXG4gIHJhd0NvbHVtbj86IFNRTFxuICB0YWJsZTogR2VuZXJpY1RhYmxlIHwgUGdUYWJsZVdpdGhDb2x1bW5zPGFueT5cbn1cblxudHlwZSBBcmdzID0ge1xuICBhZGFwdGVyOiBQb3N0Z3Jlc0FkYXB0ZXJcbiAgYWxpYXNUYWJsZT86IEdlbmVyaWNUYWJsZSB8IFBnVGFibGVXaXRoQ29sdW1uczxhbnk+XG4gIGNvbGxlY3Rpb25QYXRoOiBzdHJpbmdcbiAgY29sdW1uUHJlZml4Pzogc3RyaW5nXG4gIGNvbnN0cmFpbnRQYXRoPzogc3RyaW5nXG4gIGNvbnN0cmFpbnRzPzogQ29uc3RyYWludFtdXG4gIGZpZWxkczogKEZpZWxkIHwgVGFiQXNGaWVsZClbXVxuICBqb2luQWxpYXNlczogQnVpbGRRdWVyeUpvaW5BbGlhc2VzXG4gIGpvaW5zOiBCdWlsZFF1ZXJ5Sm9pbnNcbiAgbG9jYWxlPzogc3RyaW5nXG4gIHBhdGhTZWdtZW50czogc3RyaW5nW11cbiAgcm9vdFRhYmxlTmFtZT86IHN0cmluZ1xuICBzZWxlY3RGaWVsZHM6IFJlY29yZDxzdHJpbmcsIEdlbmVyaWNDb2x1bW4+XG4gIHRhYmxlTmFtZTogc3RyaW5nXG4gIC8qKlxuICAgKiBJZiBjcmVhdGluZyBhIG5ldyB0YWJsZSBuYW1lIGZvciBhcnJheXMgYW5kIGJsb2NrcywgdGhpcyBzdWZmaXggc2hvdWxkIGJlIGFwcGVuZGVkIHRvIHRoZSB0YWJsZSBuYW1lXG4gICAqL1xuICB0YWJsZU5hbWVTdWZmaXg/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFRoZSByYXcgdmFsdWUgb2YgdGhlIHF1ZXJ5IGJlZm9yZSBzYW5pdGl6YXRpb25cbiAgICovXG4gIHZhbHVlOiB1bmtub3duXG59XG4vKipcbiAqIFRyYW5zZm9ybXMgcGF0aCB0byB0YWJsZSBhbmQgY29sdW1uIG5hbWVcbiAqIEFkZHMgdGFibGVzIHRvIGBqb2luYFxuICogQHJldHVybnMgVGFibGVDb2x1bW5cbiAqL1xuZXhwb3J0IGNvbnN0IGdldFRhYmxlQ29sdW1uRnJvbVBhdGggPSAoe1xuICBhZGFwdGVyLFxuICBhbGlhc1RhYmxlLFxuICBjb2xsZWN0aW9uUGF0aCxcbiAgY29sdW1uUHJlZml4ID0gJycsXG4gIGNvbnN0cmFpbnRQYXRoOiBpbmNvbWluZ0NvbnN0cmFpbnRQYXRoLFxuICBjb25zdHJhaW50cyA9IFtdLFxuICBmaWVsZHMsXG4gIGpvaW5BbGlhc2VzLFxuICBqb2lucyxcbiAgbG9jYWxlOiBpbmNvbWluZ0xvY2FsZSxcbiAgcGF0aFNlZ21lbnRzOiBpbmNvbWluZ1NlZ21lbnRzLFxuICByb290VGFibGVOYW1lOiBpbmNvbWluZ1Jvb3RUYWJsZU5hbWUsXG4gIHNlbGVjdEZpZWxkcyxcbiAgdGFibGVOYW1lLFxuICB0YWJsZU5hbWVTdWZmaXggPSAnJyxcbiAgdmFsdWUsXG59OiBBcmdzKTogVGFibGVDb2x1bW4gPT4ge1xuICBjb25zdCBmaWVsZFBhdGggPSBpbmNvbWluZ1NlZ21lbnRzWzBdXG4gIGxldCBsb2NhbGUgPSBpbmNvbWluZ0xvY2FsZVxuICBjb25zdCByb290VGFibGVOYW1lID0gaW5jb21pbmdSb290VGFibGVOYW1lIHx8IHRhYmxlTmFtZVxuICBsZXQgY29uc3RyYWludFBhdGggPSBpbmNvbWluZ0NvbnN0cmFpbnRQYXRoIHx8ICcnXG5cbiAgY29uc3QgZmllbGQgPSBmbGF0dGVuVG9wTGV2ZWxGaWVsZHMoZmllbGRzIGFzIEZpZWxkW10pLmZpbmQoXG4gICAgKGZpZWxkVG9GaW5kKSA9PiBmaWVsZEFmZmVjdHNEYXRhKGZpZWxkVG9GaW5kKSAmJiBmaWVsZFRvRmluZC5uYW1lID09PSBmaWVsZFBhdGgsXG4gICkgYXMgRmllbGQgfCBUYWJBc0ZpZWxkXG4gIGxldCBuZXdUYWJsZU5hbWUgPSB0YWJsZU5hbWVcblxuICBpZiAoIWZpZWxkICYmIGZpZWxkUGF0aCA9PT0gJ2lkJykge1xuICAgIHNlbGVjdEZpZWxkcy5pZCA9IGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0uaWRcbiAgICByZXR1cm4ge1xuICAgICAgY29sdW1uTmFtZTogJ2lkJyxcbiAgICAgIGNvbnN0cmFpbnRzLFxuICAgICAgZmllbGQ6IHtcbiAgICAgICAgbmFtZTogJ2lkJyxcbiAgICAgICAgdHlwZTogYWRhcHRlci5pZFR5cGUgPT09ICd1dWlkJyA/ICd0ZXh0JyA6ICdudW1iZXInLFxuICAgICAgfSBhcyBOdW1iZXJGaWVsZCB8IFRleHRGaWVsZCxcbiAgICAgIHRhYmxlOiBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLFxuICAgIH1cbiAgfVxuXG4gIGlmIChmaWVsZCkge1xuICAgIGNvbnN0IHBhdGhTZWdtZW50cyA9IFsuLi5pbmNvbWluZ1NlZ21lbnRzXVxuXG4gICAgLy8gSWYgbmV4dCBzZWdtZW50IGlzIGEgbG9jYWxlLFxuICAgIC8vIHdlIG5lZWQgdG8gdGFrZSBpdCBvdXQgYW5kIHVzZSBpdCBhcyB0aGUgbG9jYWxlIGZyb20gdGhpcyBwb2ludCBvblxuICAgIGlmICgnbG9jYWxpemVkJyBpbiBmaWVsZCAmJiBmaWVsZC5sb2NhbGl6ZWQgJiYgYWRhcHRlci5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb24pIHtcbiAgICAgIGNvbnN0IG1hdGNoZWRMb2NhbGUgPSBhZGFwdGVyLnBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbi5sb2NhbGVDb2Rlcy5maW5kKFxuICAgICAgICAobG9jYWxlKSA9PiBsb2NhbGUgPT09IHBhdGhTZWdtZW50c1sxXSxcbiAgICAgIClcblxuICAgICAgaWYgKG1hdGNoZWRMb2NhbGUpIHtcbiAgICAgICAgbG9jYWxlID0gbWF0Y2hlZExvY2FsZVxuICAgICAgICBwYXRoU2VnbWVudHMuc3BsaWNlKDEsIDEpXG4gICAgICB9XG4gICAgfVxuXG4gICAgc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgICBjYXNlICd0YWJzJzoge1xuICAgICAgICByZXR1cm4gZ2V0VGFibGVDb2x1bW5Gcm9tUGF0aCh7XG4gICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICBhbGlhc1RhYmxlLFxuICAgICAgICAgIGNvbGxlY3Rpb25QYXRoLFxuICAgICAgICAgIGNvbHVtblByZWZpeCxcbiAgICAgICAgICBjb25zdHJhaW50UGF0aCxcbiAgICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgICAgICBmaWVsZHM6IGZpZWxkLnRhYnMubWFwKCh0YWIpID0+ICh7XG4gICAgICAgICAgICAuLi50YWIsXG4gICAgICAgICAgICB0eXBlOiAndGFiJyxcbiAgICAgICAgICB9KSksXG4gICAgICAgICAgam9pbkFsaWFzZXMsXG4gICAgICAgICAgam9pbnMsXG4gICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgIHBhdGhTZWdtZW50czogcGF0aFNlZ21lbnRzLnNsaWNlKDEpLFxuICAgICAgICAgIHJvb3RUYWJsZU5hbWUsXG4gICAgICAgICAgc2VsZWN0RmllbGRzLFxuICAgICAgICAgIHRhYmxlTmFtZTogbmV3VGFibGVOYW1lLFxuICAgICAgICAgIHRhYmxlTmFtZVN1ZmZpeCxcbiAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3RhYic6IHtcbiAgICAgICAgaWYgKHRhYkhhc05hbWUoZmllbGQpKSB7XG4gICAgICAgICAgcmV0dXJuIGdldFRhYmxlQ29sdW1uRnJvbVBhdGgoe1xuICAgICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICAgIGFsaWFzVGFibGUsXG4gICAgICAgICAgICBjb2xsZWN0aW9uUGF0aCxcbiAgICAgICAgICAgIGNvbHVtblByZWZpeDogYCR7Y29sdW1uUHJlZml4fSR7ZmllbGQubmFtZX1fYCxcbiAgICAgICAgICAgIGNvbnN0cmFpbnRQYXRoOiBgJHtjb25zdHJhaW50UGF0aH0ke2ZpZWxkLm5hbWV9LmAsXG4gICAgICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICAgICAgam9pbkFsaWFzZXMsXG4gICAgICAgICAgICBqb2lucyxcbiAgICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICAgIHBhdGhTZWdtZW50czogcGF0aFNlZ21lbnRzLnNsaWNlKDEpLFxuICAgICAgICAgICAgcm9vdFRhYmxlTmFtZSxcbiAgICAgICAgICAgIHNlbGVjdEZpZWxkcyxcbiAgICAgICAgICAgIHRhYmxlTmFtZTogbmV3VGFibGVOYW1lLFxuICAgICAgICAgICAgdGFibGVOYW1lU3VmZml4OiBgJHt0YWJsZU5hbWVTdWZmaXh9JHt0b1NuYWtlQ2FzZShmaWVsZC5uYW1lKX1fYCxcbiAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGdldFRhYmxlQ29sdW1uRnJvbVBhdGgoe1xuICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgYWxpYXNUYWJsZSxcbiAgICAgICAgICBjb2xsZWN0aW9uUGF0aCxcbiAgICAgICAgICBjb2x1bW5QcmVmaXgsXG4gICAgICAgICAgY29uc3RyYWludFBhdGgsXG4gICAgICAgICAgY29uc3RyYWludHMsXG4gICAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgICAgam9pbkFsaWFzZXMsXG4gICAgICAgICAgam9pbnMsXG4gICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgIHBhdGhTZWdtZW50czogcGF0aFNlZ21lbnRzLnNsaWNlKDEpLFxuICAgICAgICAgIHJvb3RUYWJsZU5hbWUsXG4gICAgICAgICAgc2VsZWN0RmllbGRzLFxuICAgICAgICAgIHRhYmxlTmFtZTogbmV3VGFibGVOYW1lLFxuICAgICAgICAgIHRhYmxlTmFtZVN1ZmZpeCxcbiAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgY2FzZSAnZ3JvdXAnOiB7XG4gICAgICAgIGlmIChsb2NhbGUgJiYgZmllbGQubG9jYWxpemVkICYmIGFkYXB0ZXIucGF5bG9hZC5jb25maWcubG9jYWxpemF0aW9uKSB7XG4gICAgICAgICAgbmV3VGFibGVOYW1lID0gZ2V0VGFibGVOYW1lKHtcbiAgICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgICBjb25maWc6IGZpZWxkLFxuICAgICAgICAgICAgbG9jYWxlczogdHJ1ZSxcbiAgICAgICAgICAgIHBhcmVudFRhYmxlTmFtZTogdGFibGVOYW1lLFxuICAgICAgICAgICAgcHJlZml4OiBgJHt0YWJsZU5hbWV9X2AsXG4gICAgICAgICAgfSlcblxuICAgICAgICAgIGpvaW5zW3RhYmxlTmFtZV0gPSBlcShcbiAgICAgICAgICAgIGFkYXB0ZXIudGFibGVzW3RhYmxlTmFtZV0uaWQsXG4gICAgICAgICAgICBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLl9wYXJlbnRJRCxcbiAgICAgICAgICApXG4gICAgICAgICAgaWYgKGxvY2FsZSAhPT0gJ2FsbCcpIHtcbiAgICAgICAgICAgIGNvbnN0cmFpbnRzLnB1c2goe1xuICAgICAgICAgICAgICBjb2x1bW5OYW1lOiAnX2xvY2FsZScsXG4gICAgICAgICAgICAgIHRhYmxlOiBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLFxuICAgICAgICAgICAgICB2YWx1ZTogbG9jYWxlLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGdldFRhYmxlQ29sdW1uRnJvbVBhdGgoe1xuICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgYWxpYXNUYWJsZSxcbiAgICAgICAgICBjb2xsZWN0aW9uUGF0aCxcbiAgICAgICAgICBjb2x1bW5QcmVmaXg6IGAke2NvbHVtblByZWZpeH0ke2ZpZWxkLm5hbWV9X2AsXG4gICAgICAgICAgY29uc3RyYWludFBhdGg6IGAke2NvbnN0cmFpbnRQYXRofSR7ZmllbGQubmFtZX0uYCxcbiAgICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICBqb2luQWxpYXNlcyxcbiAgICAgICAgICBqb2lucyxcbiAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgcGF0aFNlZ21lbnRzOiBwYXRoU2VnbWVudHMuc2xpY2UoMSksXG4gICAgICAgICAgcm9vdFRhYmxlTmFtZSxcbiAgICAgICAgICBzZWxlY3RGaWVsZHMsXG4gICAgICAgICAgdGFibGVOYW1lOiBuZXdUYWJsZU5hbWUsXG4gICAgICAgICAgdGFibGVOYW1lU3VmZml4OiBgJHt0YWJsZU5hbWVTdWZmaXh9JHt0b1NuYWtlQ2FzZShmaWVsZC5uYW1lKX1fYCxcbiAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgY2FzZSAnc2VsZWN0Jzoge1xuICAgICAgICBpZiAoZmllbGQuaGFzTWFueSkge1xuICAgICAgICAgIG5ld1RhYmxlTmFtZSA9IGdldFRhYmxlTmFtZSh7XG4gICAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgICAgY29uZmlnOiBmaWVsZCxcbiAgICAgICAgICAgIHBhcmVudFRhYmxlTmFtZTogYCR7dGFibGVOYW1lfV8ke3RhYmxlTmFtZVN1ZmZpeH1gLFxuICAgICAgICAgICAgcHJlZml4OiBgJHt0YWJsZU5hbWV9XyR7dGFibGVOYW1lU3VmZml4fWAsXG4gICAgICAgICAgfSlcblxuICAgICAgICAgIGlmIChsb2NhbGUgJiYgZmllbGQubG9jYWxpemVkICYmIGFkYXB0ZXIucGF5bG9hZC5jb25maWcubG9jYWxpemF0aW9uKSB7XG4gICAgICAgICAgICBqb2luc1tuZXdUYWJsZU5hbWVdID0gYW5kKFxuICAgICAgICAgICAgICBlcShhZGFwdGVyLnRhYmxlc1t0YWJsZU5hbWVdLmlkLCBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLnBhcmVudCksXG4gICAgICAgICAgICAgIGVxKGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0uX2xvY2FsZSwgbG9jYWxlKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGlmIChsb2NhbGUgIT09ICdhbGwnKSB7XG4gICAgICAgICAgICAgIGNvbnN0cmFpbnRzLnB1c2goe1xuICAgICAgICAgICAgICAgIGNvbHVtbk5hbWU6ICdfbG9jYWxlJyxcbiAgICAgICAgICAgICAgICB0YWJsZTogYWRhcHRlci50YWJsZXNbbmV3VGFibGVOYW1lXSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogbG9jYWxlLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBqb2luc1tuZXdUYWJsZU5hbWVdID0gZXEoXG4gICAgICAgICAgICAgIGFkYXB0ZXIudGFibGVzW3RhYmxlTmFtZV0uaWQsXG4gICAgICAgICAgICAgIGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0ucGFyZW50LFxuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb2x1bW5OYW1lOiAndmFsdWUnLFxuICAgICAgICAgICAgY29uc3RyYWludHMsXG4gICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgIHRhYmxlOiBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICd0ZXh0JzpcbiAgICAgIGNhc2UgJ251bWJlcic6IHtcbiAgICAgICAgaWYgKGZpZWxkLmhhc01hbnkpIHtcbiAgICAgICAgICBsZXQgdGFibGVUeXBlID0gJ3RleHRzJ1xuICAgICAgICAgIGxldCBjb2x1bW5OYW1lID0gJ3RleHQnXG4gICAgICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICB0YWJsZVR5cGUgPSAnbnVtYmVycydcbiAgICAgICAgICAgIGNvbHVtbk5hbWUgPSAnbnVtYmVyJ1xuICAgICAgICAgIH1cbiAgICAgICAgICBuZXdUYWJsZU5hbWUgPSBgJHt0YWJsZU5hbWV9XyR7dGFibGVUeXBlfWBcbiAgICAgICAgICBjb25zdCBqb2luQ29uc3RyYWludHMgPSBbXG4gICAgICAgICAgICBlcShhZGFwdGVyLnRhYmxlc1t0YWJsZU5hbWVdLmlkLCBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLnBhcmVudCksXG4gICAgICAgICAgICBlcShhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLnBhdGgsIGAke2NvbnN0cmFpbnRQYXRofSR7ZmllbGQubmFtZX1gKSxcbiAgICAgICAgICBdXG5cbiAgICAgICAgICBpZiAobG9jYWxlICYmIGZpZWxkLmxvY2FsaXplZCAmJiBhZGFwdGVyLnBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbikge1xuICAgICAgICAgICAgam9pbnNbbmV3VGFibGVOYW1lXSA9IGFuZChcbiAgICAgICAgICAgICAgLi4uam9pbkNvbnN0cmFpbnRzLFxuICAgICAgICAgICAgICBlcShhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLl9sb2NhbGUsIGxvY2FsZSksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBpZiAobG9jYWxlICE9PSAnYWxsJykge1xuICAgICAgICAgICAgICBjb25zdHJhaW50cy5wdXNoKHtcbiAgICAgICAgICAgICAgICBjb2x1bW5OYW1lOiAnbG9jYWxlJyxcbiAgICAgICAgICAgICAgICB0YWJsZTogYWRhcHRlci50YWJsZXNbbmV3VGFibGVOYW1lXSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogbG9jYWxlLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBqb2luc1tuZXdUYWJsZU5hbWVdID0gYW5kKC4uLmpvaW5Db25zdHJhaW50cylcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29sdW1uTmFtZSxcbiAgICAgICAgICAgIGNvbnN0cmFpbnRzLFxuICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICB0YWJsZTogYWRhcHRlci50YWJsZXNbbmV3VGFibGVOYW1lXSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAnYXJyYXknOiB7XG4gICAgICAgIG5ld1RhYmxlTmFtZSA9IGdldFRhYmxlTmFtZSh7XG4gICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICBjb25maWc6IGZpZWxkLFxuICAgICAgICAgIHBhcmVudFRhYmxlTmFtZTogYCR7dGFibGVOYW1lfV8ke3RhYmxlTmFtZVN1ZmZpeH1gLFxuICAgICAgICAgIHByZWZpeDogYCR7dGFibGVOYW1lfV8ke3RhYmxlTmFtZVN1ZmZpeH1gLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdHJhaW50UGF0aCA9IGAke2NvbnN0cmFpbnRQYXRofSR7ZmllbGQubmFtZX0uJS5gXG4gICAgICAgIGlmIChsb2NhbGUgJiYgZmllbGQubG9jYWxpemVkICYmIGFkYXB0ZXIucGF5bG9hZC5jb25maWcubG9jYWxpemF0aW9uKSB7XG4gICAgICAgICAgam9pbnNbbmV3VGFibGVOYW1lXSA9IGFuZChcbiAgICAgICAgICAgIGVxKGFkYXB0ZXIudGFibGVzW3RhYmxlTmFtZV0uaWQsIGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0uX3BhcmVudElEKSxcbiAgICAgICAgICAgIGVxKGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0uX2xvY2FsZSwgbG9jYWxlKSxcbiAgICAgICAgICApXG4gICAgICAgICAgaWYgKGxvY2FsZSAhPT0gJ2FsbCcpIHtcbiAgICAgICAgICAgIGNvbnN0cmFpbnRzLnB1c2goe1xuICAgICAgICAgICAgICBjb2x1bW5OYW1lOiAnX2xvY2FsZScsXG4gICAgICAgICAgICAgIHRhYmxlOiBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLFxuICAgICAgICAgICAgICB2YWx1ZTogbG9jYWxlLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgam9pbnNbbmV3VGFibGVOYW1lXSA9IGVxKFxuICAgICAgICAgICAgYWRhcHRlci50YWJsZXNbdGFibGVOYW1lXS5pZCxcbiAgICAgICAgICAgIGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0uX3BhcmVudElELFxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZ2V0VGFibGVDb2x1bW5Gcm9tUGF0aCh7XG4gICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICBjb2xsZWN0aW9uUGF0aCxcbiAgICAgICAgICBjb25zdHJhaW50UGF0aCxcbiAgICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICBqb2luQWxpYXNlcyxcbiAgICAgICAgICBqb2lucyxcbiAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgcGF0aFNlZ21lbnRzOiBwYXRoU2VnbWVudHMuc2xpY2UoMSksXG4gICAgICAgICAgcm9vdFRhYmxlTmFtZSxcbiAgICAgICAgICBzZWxlY3RGaWVsZHMsXG4gICAgICAgICAgdGFibGVOYW1lOiBuZXdUYWJsZU5hbWUsXG4gICAgICAgICAgdmFsdWUsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ2Jsb2Nrcyc6IHtcbiAgICAgICAgbGV0IGJsb2NrVGFibGVDb2x1bW46IFRhYmxlQ29sdW1uXG4gICAgICAgIGxldCBuZXdUYWJsZU5hbWU6IHN0cmluZ1xuXG4gICAgICAgIC8vIGhhbmRsZSBibG9ja1R5cGUgcXVlcmllc1xuICAgICAgICBpZiAocGF0aFNlZ21lbnRzWzFdID09PSAnYmxvY2tUeXBlJykge1xuICAgICAgICAgIC8vIGZpbmQgdGhlIGJsb2NrIGNvbmZpZyB1c2luZyB0aGUgdmFsdWVcbiAgICAgICAgICBjb25zdCBibG9ja1R5cGVzID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV1cbiAgICAgICAgICBibG9ja1R5cGVzLmZvckVhY2goKGJsb2NrVHlwZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYmxvY2sgPSBmaWVsZC5ibG9ja3MuZmluZCgoYmxvY2spID0+IGJsb2NrLnNsdWcgPT09IGJsb2NrVHlwZSlcbiAgICAgICAgICAgIG5ld1RhYmxlTmFtZSA9IGdldFRhYmxlTmFtZSh7XG4gICAgICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgICAgIGNvbmZpZzogYmxvY2ssXG4gICAgICAgICAgICAgIHBhcmVudFRhYmxlTmFtZTogdGFibGVOYW1lLFxuICAgICAgICAgICAgICBwcmVmaXg6IGAke3RhYmxlTmFtZX1fYmxvY2tzX2AsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgam9pbnNbbmV3VGFibGVOYW1lXSA9IGVxKFxuICAgICAgICAgICAgICBhZGFwdGVyLnRhYmxlc1t0YWJsZU5hbWVdLmlkLFxuICAgICAgICAgICAgICBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLl9wYXJlbnRJRCxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGNvbnN0cmFpbnRzLnB1c2goe1xuICAgICAgICAgICAgICBjb2x1bW5OYW1lOiAnX3BhdGgnLFxuICAgICAgICAgICAgICB0YWJsZTogYWRhcHRlci50YWJsZXNbbmV3VGFibGVOYW1lXSxcbiAgICAgICAgICAgICAgdmFsdWU6IHBhdGhTZWdtZW50c1swXSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSlcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29uc3RyYWludHMsXG4gICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgIGdldE5vdE51bGxDb2x1bW5CeVZhbHVlOiAoKSA9PiAnaWQnLFxuICAgICAgICAgICAgdGFibGU6IGFkYXB0ZXIudGFibGVzW3RhYmxlTmFtZV0sXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaGFzQmxvY2tGaWVsZCA9IGZpZWxkLmJsb2Nrcy5zb21lKChibG9jaykgPT4ge1xuICAgICAgICAgIG5ld1RhYmxlTmFtZSA9IGdldFRhYmxlTmFtZSh7XG4gICAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgICAgY29uZmlnOiBibG9jayxcbiAgICAgICAgICAgIHBhcmVudFRhYmxlTmFtZTogdGFibGVOYW1lLFxuICAgICAgICAgICAgcHJlZml4OiBgJHt0YWJsZU5hbWV9X2Jsb2Nrc19gLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgY29uc3RyYWludFBhdGggPSBgJHtjb25zdHJhaW50UGF0aH0ke2ZpZWxkLm5hbWV9LiUuYFxuICAgICAgICAgIGxldCByZXN1bHRcbiAgICAgICAgICBjb25zdCBibG9ja0NvbnN0cmFpbnRzID0gW11cbiAgICAgICAgICBjb25zdCBibG9ja1NlbGVjdEZpZWxkcyA9IHt9XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJlc3VsdCA9IGdldFRhYmxlQ29sdW1uRnJvbVBhdGgoe1xuICAgICAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgICAgICBjb2xsZWN0aW9uUGF0aCxcbiAgICAgICAgICAgICAgY29uc3RyYWludFBhdGgsXG4gICAgICAgICAgICAgIGNvbnN0cmFpbnRzOiBibG9ja0NvbnN0cmFpbnRzLFxuICAgICAgICAgICAgICBmaWVsZHM6IGJsb2NrLmZpZWxkcyxcbiAgICAgICAgICAgICAgam9pbkFsaWFzZXMsXG4gICAgICAgICAgICAgIGpvaW5zLFxuICAgICAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgICAgIHBhdGhTZWdtZW50czogcGF0aFNlZ21lbnRzLnNsaWNlKDEpLFxuICAgICAgICAgICAgICByb290VGFibGVOYW1lLFxuICAgICAgICAgICAgICBzZWxlY3RGaWVsZHM6IGJsb2NrU2VsZWN0RmllbGRzLFxuICAgICAgICAgICAgICB0YWJsZU5hbWU6IG5ld1RhYmxlTmFtZSxcbiAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAvLyB0aGlzIGlzIGZpbmUsIG5vdCBldmVyeSBibG9jayB3aWxsIGhhdmUgdGhlIGZpZWxkXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghcmVzdWx0KSB7XG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICB9XG4gICAgICAgICAgYmxvY2tUYWJsZUNvbHVtbiA9IHJlc3VsdFxuICAgICAgICAgIGNvbnN0cmFpbnRzID0gY29uc3RyYWludHMuY29uY2F0KGJsb2NrQ29uc3RyYWludHMpXG4gICAgICAgICAgc2VsZWN0RmllbGRzID0geyAuLi5zZWxlY3RGaWVsZHMsIC4uLmJsb2NrU2VsZWN0RmllbGRzIH1cbiAgICAgICAgICBpZiAoZmllbGQubG9jYWxpemVkICYmIGFkYXB0ZXIucGF5bG9hZC5jb25maWcubG9jYWxpemF0aW9uKSB7XG4gICAgICAgICAgICBqb2luc1tuZXdUYWJsZU5hbWVdID0gYW5kKFxuICAgICAgICAgICAgICBlcShhZGFwdGVyLnRhYmxlc1t0YWJsZU5hbWVdLmlkLCBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLl9wYXJlbnRJRCksXG4gICAgICAgICAgICAgIGVxKGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0uX2xvY2FsZSwgbG9jYWxlKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGlmIChsb2NhbGUpIHtcbiAgICAgICAgICAgICAgY29uc3RyYWludHMucHVzaCh7XG4gICAgICAgICAgICAgICAgY29sdW1uTmFtZTogJ19sb2NhbGUnLFxuICAgICAgICAgICAgICAgIHRhYmxlOiBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBsb2NhbGUsXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGpvaW5zW25ld1RhYmxlTmFtZV0gPSBlcShcbiAgICAgICAgICAgICAgYWRhcHRlci50YWJsZXNbdGFibGVOYW1lXS5pZCxcbiAgICAgICAgICAgICAgYWRhcHRlci50YWJsZXNbbmV3VGFibGVOYW1lXS5fcGFyZW50SUQsXG4gICAgICAgICAgICApXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH0pXG4gICAgICAgIGlmIChoYXNCbG9ja0ZpZWxkKSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvbHVtbk5hbWU6IGJsb2NrVGFibGVDb2x1bW4uY29sdW1uTmFtZSxcbiAgICAgICAgICAgIGNvbnN0cmFpbnRzLFxuICAgICAgICAgICAgZmllbGQ6IGJsb2NrVGFibGVDb2x1bW4uZmllbGQsXG4gICAgICAgICAgICBwYXRoU2VnbWVudHM6IHBhdGhTZWdtZW50cy5zbGljZSgxKSxcbiAgICAgICAgICAgIHJhd0NvbHVtbjogYmxvY2tUYWJsZUNvbHVtbi5yYXdDb2x1bW4sXG4gICAgICAgICAgICB0YWJsZTogYmxvY2tUYWJsZUNvbHVtbi50YWJsZSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAncmVsYXRpb25zaGlwJzpcbiAgICAgIGNhc2UgJ3VwbG9hZCc6IHtcbiAgICAgICAgbGV0IHJlbGF0aW9uc2hpcEZpZWxkc1xuICAgICAgICBjb25zdCByZWxhdGlvblRhYmxlTmFtZSA9IGAke3Jvb3RUYWJsZU5hbWV9JHthZGFwdGVyLnJlbGF0aW9uc2hpcHNTdWZmaXh9YFxuICAgICAgICBjb25zdCBuZXdDb2xsZWN0aW9uUGF0aCA9IHBhdGhTZWdtZW50cy5zbGljZSgxKS5qb2luKCcuJylcbiAgICAgICAgY29uc3QgYWxpYXNSZWxhdGlvbnNoaXBUYWJsZU5hbWUgPSB1dWlkKClcbiAgICAgICAgY29uc3QgYWxpYXNSZWxhdGlvbnNoaXBUYWJsZSA9IGFsaWFzKFxuICAgICAgICAgIGFkYXB0ZXIudGFibGVzW3JlbGF0aW9uVGFibGVOYW1lXSxcbiAgICAgICAgICBhbGlhc1JlbGF0aW9uc2hpcFRhYmxlTmFtZSxcbiAgICAgICAgKVxuXG4gICAgICAgIGlmIChsb2NhbGUgJiYgZmllbGQubG9jYWxpemVkICYmIGFkYXB0ZXIucGF5bG9hZC5jb25maWcubG9jYWxpemF0aW9uKSB7XG4gICAgICAgICAgam9pbkFsaWFzZXMucHVzaCh7XG4gICAgICAgICAgICBjb25kaXRpb246IGFuZChcbiAgICAgICAgICAgICAgZXEoKGFsaWFzVGFibGUgfHwgYWRhcHRlci50YWJsZXNbcm9vdFRhYmxlTmFtZV0pLmlkLCBhbGlhc1JlbGF0aW9uc2hpcFRhYmxlLnBhcmVudCksXG4gICAgICAgICAgICAgIGVxKGFsaWFzUmVsYXRpb25zaGlwVGFibGUubG9jYWxlLCBsb2NhbGUpLFxuICAgICAgICAgICAgICBsaWtlKGFsaWFzUmVsYXRpb25zaGlwVGFibGUucGF0aCwgYCR7Y29uc3RyYWludFBhdGh9JHtmaWVsZC5uYW1lfWApLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRhYmxlOiBhbGlhc1JlbGF0aW9uc2hpcFRhYmxlLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgaWYgKGxvY2FsZSAhPT0gJ2FsbCcpIHtcbiAgICAgICAgICAgIGNvbnN0cmFpbnRzLnB1c2goe1xuICAgICAgICAgICAgICBjb2x1bW5OYW1lOiAnbG9jYWxlJyxcbiAgICAgICAgICAgICAgdGFibGU6IGFsaWFzUmVsYXRpb25zaGlwVGFibGUsXG4gICAgICAgICAgICAgIHZhbHVlOiBsb2NhbGUsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBKb2luIGluIHRoZSByZWxhdGlvbnNoaXBzIHRhYmxlXG4gICAgICAgICAgam9pbkFsaWFzZXMucHVzaCh7XG4gICAgICAgICAgICBjb25kaXRpb246IGFuZChcbiAgICAgICAgICAgICAgZXEoKGFsaWFzVGFibGUgfHwgYWRhcHRlci50YWJsZXNbcm9vdFRhYmxlTmFtZV0pLmlkLCBhbGlhc1JlbGF0aW9uc2hpcFRhYmxlLnBhcmVudCksXG4gICAgICAgICAgICAgIGxpa2UoYWxpYXNSZWxhdGlvbnNoaXBUYWJsZS5wYXRoLCBgJHtjb25zdHJhaW50UGF0aH0ke2ZpZWxkLm5hbWV9YCksXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdGFibGU6IGFsaWFzUmVsYXRpb25zaGlwVGFibGUsXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuXG4gICAgICAgIHNlbGVjdEZpZWxkc1tgJHtyZWxhdGlvblRhYmxlTmFtZX0ucGF0aGBdID0gYWxpYXNSZWxhdGlvbnNoaXBUYWJsZS5wYXRoXG5cbiAgICAgICAgbGV0IG5ld0FsaWFzVGFibGVcblxuICAgICAgICBpZiAodHlwZW9mIGZpZWxkLnJlbGF0aW9uVG8gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgY29uc3QgcmVsYXRpb25zaGlwQ29uZmlnID0gYWRhcHRlci5wYXlsb2FkLmNvbGxlY3Rpb25zW2ZpZWxkLnJlbGF0aW9uVG9dLmNvbmZpZ1xuICAgICAgICAgIG5ld1RhYmxlTmFtZSA9IGdldFRhYmxlTmFtZSh7XG4gICAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgICAgY29uZmlnOiByZWxhdGlvbnNoaXBDb25maWcsXG4gICAgICAgICAgfSlcbiAgICAgICAgICAvLyBwYXJlbnQgdG8gcmVsYXRpb25zaGlwIGpvaW4gdGFibGVcbiAgICAgICAgICByZWxhdGlvbnNoaXBGaWVsZHMgPSByZWxhdGlvbnNoaXBDb25maWcuZmllbGRzXG5cbiAgICAgICAgICBuZXdBbGlhc1RhYmxlID0gYWxpYXMoYWRhcHRlci50YWJsZXNbbmV3VGFibGVOYW1lXSwgdG9TbmFrZUNhc2UodXVpZCgpKSlcblxuICAgICAgICAgIGpvaW5BbGlhc2VzLnB1c2goe1xuICAgICAgICAgICAgY29uZGl0aW9uOiBlcShuZXdBbGlhc1RhYmxlLmlkLCBhbGlhc1JlbGF0aW9uc2hpcFRhYmxlW2Ake2ZpZWxkLnJlbGF0aW9uVG99SURgXSksXG4gICAgICAgICAgICB0YWJsZTogbmV3QWxpYXNUYWJsZSxcbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgaWYgKG5ld0NvbGxlY3Rpb25QYXRoID09PSAnJyB8fCBuZXdDb2xsZWN0aW9uUGF0aCA9PT0gJ2lkJykge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgY29sdW1uTmFtZTogYCR7ZmllbGQucmVsYXRpb25Ub31JRGAsXG4gICAgICAgICAgICAgIGNvbnN0cmFpbnRzLFxuICAgICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgICAgdGFibGU6IGFsaWFzUmVsYXRpb25zaGlwVGFibGUsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKG5ld0NvbGxlY3Rpb25QYXRoID09PSAndmFsdWUnKSB7XG4gICAgICAgICAgY29uc3QgdGFibGVDb2x1bW5zTmFtZXMgPSBmaWVsZC5yZWxhdGlvblRvLm1hcChcbiAgICAgICAgICAgIChyZWxhdGlvblRvKSA9PlxuICAgICAgICAgICAgICBgXCIke2FsaWFzUmVsYXRpb25zaGlwVGFibGVOYW1lfVwiLlwiJHtnZXRUYWJsZU5hbWUoe1xuICAgICAgICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgICAgICAgY29uZmlnOiBhZGFwdGVyLnBheWxvYWQuY29sbGVjdGlvbnNbcmVsYXRpb25Ub10uY29uZmlnLFxuICAgICAgICAgICAgICB9KX1faWRcImAsXG4gICAgICAgICAgKVxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgcmF3Q29sdW1uOiBzcWwucmF3KGBDT0FMRVNDRSgke3RhYmxlQ29sdW1uc05hbWVzLmpvaW4oJywgJyl9KWApLFxuICAgICAgICAgICAgdGFibGU6IGFsaWFzUmVsYXRpb25zaGlwVGFibGUsXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKG5ld0NvbGxlY3Rpb25QYXRoID09PSAncmVsYXRpb25UbycpIHtcbiAgICAgICAgICBjb25zdCByZWxhdGlvblRvID0gQXJyYXkuaXNBcnJheShmaWVsZC5yZWxhdGlvblRvKSA/IGZpZWxkLnJlbGF0aW9uVG8gOiBbZmllbGQucmVsYXRpb25Ub11cblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgZ2V0Tm90TnVsbENvbHVtbkJ5VmFsdWU6ICh2YWwpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgbWF0Y2hlZFJlbGF0aW9uID0gcmVsYXRpb25Uby5maW5kKChyZWxhdGlvbikgPT4gcmVsYXRpb24gPT09IHZhbClcbiAgICAgICAgICAgICAgaWYgKG1hdGNoZWRSZWxhdGlvbikgcmV0dXJuIGAke21hdGNoZWRSZWxhdGlvbn1JRGBcbiAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRhYmxlOiBhbGlhc1JlbGF0aW9uc2hpcFRhYmxlLFxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyBuZXcgQVBJRXJyb3IoJ05vdCBzdXBwb3J0ZWQnKVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGdldFRhYmxlQ29sdW1uRnJvbVBhdGgoe1xuICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgYWxpYXNUYWJsZTogbmV3QWxpYXNUYWJsZSxcbiAgICAgICAgICBjb2xsZWN0aW9uUGF0aDogbmV3Q29sbGVjdGlvblBhdGgsXG4gICAgICAgICAgY29uc3RyYWludHMsXG4gICAgICAgICAgZmllbGRzOiByZWxhdGlvbnNoaXBGaWVsZHMsXG4gICAgICAgICAgam9pbkFsaWFzZXMsXG4gICAgICAgICAgam9pbnMsXG4gICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgIHBhdGhTZWdtZW50czogcGF0aFNlZ21lbnRzLnNsaWNlKDEpLFxuICAgICAgICAgIHJvb3RUYWJsZU5hbWU6IG5ld1RhYmxlTmFtZSxcbiAgICAgICAgICBzZWxlY3RGaWVsZHMsXG4gICAgICAgICAgdGFibGVOYW1lOiBuZXdUYWJsZU5hbWUsXG4gICAgICAgICAgdmFsdWUsXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGZpZWxkQWZmZWN0c0RhdGEoZmllbGQpKSB7XG4gICAgICBpZiAoZmllbGQubG9jYWxpemVkICYmIGFkYXB0ZXIucGF5bG9hZC5jb25maWcubG9jYWxpemF0aW9uKSB7XG4gICAgICAgIC8vIElmIGxvY2FsaXplZCwgd2UgZ28gdG8gbG9jYWxpemVkIHRhYmxlIGFuZCBzZXQgYWxpYXNUYWJsZSB0byB1bmRlZmluZWRcbiAgICAgICAgLy8gc28gaXQgaXMgbm90IHBpY2tlZCB1cCBiZWxvdyB0byBiZSB1c2VkIGFzIHRhcmdldFRhYmxlXG4gICAgICAgIG5ld1RhYmxlTmFtZSA9IGAke3RhYmxlTmFtZX0ke2FkYXB0ZXIubG9jYWxlc1N1ZmZpeH1gXG5cbiAgICAgICAgY29uc3QgcGFyZW50VGFibGUgPSBhbGlhc1RhYmxlIHx8IGFkYXB0ZXIudGFibGVzW3RhYmxlTmFtZV1cblxuICAgICAgICBqb2luc1tuZXdUYWJsZU5hbWVdID0gZXEocGFyZW50VGFibGUuaWQsIGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0uX3BhcmVudElEKVxuXG4gICAgICAgIGFsaWFzVGFibGUgPSB1bmRlZmluZWRcblxuICAgICAgICBpZiAobG9jYWxlICE9PSAnYWxsJykge1xuICAgICAgICAgIGNvbnN0cmFpbnRzLnB1c2goe1xuICAgICAgICAgICAgY29sdW1uTmFtZTogJ19sb2NhbGUnLFxuICAgICAgICAgICAgdGFibGU6IGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0sXG4gICAgICAgICAgICB2YWx1ZTogbG9jYWxlLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgdGFyZ2V0VGFibGUgPSBhbGlhc1RhYmxlIHx8IGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV1cblxuICAgICAgc2VsZWN0RmllbGRzW2Ake25ld1RhYmxlTmFtZX0uJHtjb2x1bW5QcmVmaXh9JHtmaWVsZC5uYW1lfWBdID1cbiAgICAgICAgdGFyZ2V0VGFibGVbYCR7Y29sdW1uUHJlZml4fSR7ZmllbGQubmFtZX1gXVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb2x1bW5OYW1lOiBgJHtjb2x1bW5QcmVmaXh9JHtmaWVsZC5uYW1lfWAsXG4gICAgICAgIGNvbnN0cmFpbnRzLFxuICAgICAgICBmaWVsZCxcbiAgICAgICAgcGF0aFNlZ21lbnRzLFxuICAgICAgICB0YWJsZTogdGFyZ2V0VGFibGUsXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdGhyb3cgbmV3IEFQSUVycm9yKGBDYW5ub3QgZmluZCBmaWVsZCBmb3IgcGF0aCBhdCAke2ZpZWxkUGF0aH1gKVxufVxuIl0sIm5hbWVzIjpbImdldFRhYmxlQ29sdW1uRnJvbVBhdGgiLCJhZGFwdGVyIiwiYWxpYXNUYWJsZSIsImNvbGxlY3Rpb25QYXRoIiwiY29sdW1uUHJlZml4IiwiY29uc3RyYWludFBhdGgiLCJpbmNvbWluZ0NvbnN0cmFpbnRQYXRoIiwiY29uc3RyYWludHMiLCJmaWVsZHMiLCJqb2luQWxpYXNlcyIsImpvaW5zIiwibG9jYWxlIiwiaW5jb21pbmdMb2NhbGUiLCJwYXRoU2VnbWVudHMiLCJpbmNvbWluZ1NlZ21lbnRzIiwicm9vdFRhYmxlTmFtZSIsImluY29taW5nUm9vdFRhYmxlTmFtZSIsInNlbGVjdEZpZWxkcyIsInRhYmxlTmFtZSIsInRhYmxlTmFtZVN1ZmZpeCIsInZhbHVlIiwiZmllbGRQYXRoIiwiZmllbGQiLCJmbGF0dGVuVG9wTGV2ZWxGaWVsZHMiLCJmaW5kIiwiZmllbGRUb0ZpbmQiLCJmaWVsZEFmZmVjdHNEYXRhIiwibmFtZSIsIm5ld1RhYmxlTmFtZSIsImlkIiwidGFibGVzIiwiY29sdW1uTmFtZSIsInR5cGUiLCJpZFR5cGUiLCJ0YWJsZSIsImxvY2FsaXplZCIsInBheWxvYWQiLCJjb25maWciLCJsb2NhbGl6YXRpb24iLCJtYXRjaGVkTG9jYWxlIiwibG9jYWxlQ29kZXMiLCJzcGxpY2UiLCJ0YWJzIiwibWFwIiwidGFiIiwic2xpY2UiLCJ0YWJIYXNOYW1lIiwidG9TbmFrZUNhc2UiLCJnZXRUYWJsZU5hbWUiLCJsb2NhbGVzIiwicGFyZW50VGFibGVOYW1lIiwicHJlZml4IiwiZXEiLCJfcGFyZW50SUQiLCJwdXNoIiwiaGFzTWFueSIsImFuZCIsInBhcmVudCIsIl9sb2NhbGUiLCJ0YWJsZVR5cGUiLCJqb2luQ29uc3RyYWludHMiLCJwYXRoIiwiYmxvY2tUYWJsZUNvbHVtbiIsImJsb2NrVHlwZXMiLCJBcnJheSIsImlzQXJyYXkiLCJmb3JFYWNoIiwiYmxvY2tUeXBlIiwiYmxvY2siLCJibG9ja3MiLCJzbHVnIiwiZ2V0Tm90TnVsbENvbHVtbkJ5VmFsdWUiLCJoYXNCbG9ja0ZpZWxkIiwic29tZSIsInJlc3VsdCIsImJsb2NrQ29uc3RyYWludHMiLCJibG9ja1NlbGVjdEZpZWxkcyIsImVycm9yIiwiY29uY2F0IiwicmF3Q29sdW1uIiwicmVsYXRpb25zaGlwRmllbGRzIiwicmVsYXRpb25UYWJsZU5hbWUiLCJyZWxhdGlvbnNoaXBzU3VmZml4IiwibmV3Q29sbGVjdGlvblBhdGgiLCJqb2luIiwiYWxpYXNSZWxhdGlvbnNoaXBUYWJsZU5hbWUiLCJ1dWlkIiwiYWxpYXNSZWxhdGlvbnNoaXBUYWJsZSIsImFsaWFzIiwiY29uZGl0aW9uIiwibGlrZSIsIm5ld0FsaWFzVGFibGUiLCJyZWxhdGlvblRvIiwicmVsYXRpb25zaGlwQ29uZmlnIiwiY29sbGVjdGlvbnMiLCJ0YWJsZUNvbHVtbnNOYW1lcyIsInNxbCIsInJhdyIsInZhbCIsIm1hdGNoZWRSZWxhdGlvbiIsInJlbGF0aW9uIiwidW5kZWZpbmVkIiwiQVBJRXJyb3IiLCJsb2NhbGVzU3VmZml4IiwicGFyZW50VGFibGUiLCJ0YXJnZXRUYWJsZSJdLCJtYXBwaW5ncyI6IkFBQUEsb0NBQW9DOzs7OytCQStEdkJBOzs7ZUFBQUE7Ozs0QkExRHNCO3dCQUNiO3dCQUNHO3VCQUNvQjsyQkFDUDtvRUFDZDtzQkFDRzs4QkFLRTs7Ozs7O0FBK0N0QixNQUFNQSx5QkFBeUIsQ0FBQyxFQUNyQ0MsT0FBTyxFQUNQQyxVQUFVLEVBQ1ZDLGNBQWMsRUFDZEMsZUFBZSxFQUFFLEVBQ2pCQyxnQkFBZ0JDLHNCQUFzQixFQUN0Q0MsY0FBYyxFQUFFLEVBQ2hCQyxNQUFNLEVBQ05DLFdBQVcsRUFDWEMsS0FBSyxFQUNMQyxRQUFRQyxjQUFjLEVBQ3RCQyxjQUFjQyxnQkFBZ0IsRUFDOUJDLGVBQWVDLHFCQUFxQixFQUNwQ0MsWUFBWSxFQUNaQyxTQUFTLEVBQ1RDLGtCQUFrQixFQUFFLEVBQ3BCQyxLQUFLLEVBQ0E7SUFDTCxNQUFNQyxZQUFZUCxnQkFBZ0IsQ0FBQyxFQUFFO0lBQ3JDLElBQUlILFNBQVNDO0lBQ2IsTUFBTUcsZ0JBQWdCQyx5QkFBeUJFO0lBQy9DLElBQUliLGlCQUFpQkMsMEJBQTBCO0lBRS9DLE1BQU1nQixRQUFRQyxJQUFBQSxnQ0FBcUIsRUFBQ2YsUUFBbUJnQixJQUFJLENBQ3pELENBQUNDLGNBQWdCQyxJQUFBQSx1QkFBZ0IsRUFBQ0QsZ0JBQWdCQSxZQUFZRSxJQUFJLEtBQUtOO0lBRXpFLElBQUlPLGVBQWVWO0lBRW5CLElBQUksQ0FBQ0ksU0FBU0QsY0FBYyxNQUFNO1FBQ2hDSixhQUFhWSxFQUFFLEdBQUc1QixRQUFRNkIsTUFBTSxDQUFDRixhQUFhLENBQUNDLEVBQUU7UUFDakQsT0FBTztZQUNMRSxZQUFZ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
456
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9xdWVyaWVzL2dldFRhYmxlQ29sdW1uRnJvbVBhdGgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCB0eXBlIHsgU1FMIH0gZnJvbSAnZHJpenpsZS1vcm0nXG5pbXBvcnQgdHlwZSB7IFBnVGFibGVXaXRoQ29sdW1ucyB9IGZyb20gJ2RyaXp6bGUtb3JtL3BnLWNvcmUnXG5pbXBvcnQgdHlwZSB7IEZpZWxkLCBGaWVsZEFmZmVjdGluZ0RhdGEsIE51bWJlckZpZWxkLCBUYWJBc0ZpZWxkLCBUZXh0RmllbGQgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgeyBhbmQsIGVxLCBsaWtlLCBzcWwgfSBmcm9tICdkcml6emxlLW9ybSdcbmltcG9ydCB7IGFsaWFzIH0gZnJvbSAnZHJpenpsZS1vcm0vcGctY29yZSdcbmltcG9ydCB7IEFQSUVycm9yIH0gZnJvbSAncGF5bG9hZC9lcnJvcnMnXG5pbXBvcnQgeyBmaWVsZEFmZmVjdHNEYXRhLCB0YWJIYXNOYW1lIH0gZnJvbSAncGF5bG9hZC90eXBlcydcbmltcG9ydCB7IGZsYXR0ZW5Ub3BMZXZlbEZpZWxkcyB9IGZyb20gJ3BheWxvYWQvdXRpbGl0aWVzJ1xuaW1wb3J0IHRvU25ha2VDYXNlIGZyb20gJ3RvLXNuYWtlLWNhc2UnXG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSAndXVpZCdcblxuaW1wb3J0IHR5cGUgeyBHZW5lcmljQ29sdW1uLCBHZW5lcmljVGFibGUsIFBvc3RncmVzQWRhcHRlciB9IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBCdWlsZFF1ZXJ5Sm9pbkFsaWFzZXMsIEJ1aWxkUXVlcnlKb2lucyB9IGZyb20gJy4vYnVpbGRRdWVyeSdcblxudHlwZSBDb25zdHJhaW50ID0ge1xuICBjb2x1bW5OYW1lOiBzdHJpbmdcbiAgdGFibGU6IEdlbmVyaWNUYWJsZSB8IFBnVGFibGVXaXRoQ29sdW1uczxhbnk+XG4gIHZhbHVlOiB1bmtub3duXG59XG5cbnR5cGUgVGFibGVDb2x1bW4gPSB7XG4gIGNvbHVtbk5hbWU/OiBzdHJpbmdcbiAgY29uc3RyYWludHM6IENvbnN0cmFpbnRbXVxuICBmaWVsZDogRmllbGRBZmZlY3RpbmdEYXRhXG4gIGdldE5vdE51bGxDb2x1bW5CeVZhbHVlPzogKHZhbDogdW5rbm93bikgPT4gc3RyaW5nXG4gIHBhdGhTZWdtZW50cz86IHN0cmluZ1tdXG4gIHJhd0NvbHVtbj86IFNRTFxuICB0YWJsZTogR2VuZXJpY1RhYmxlIHwgUGdUYWJsZVdpdGhDb2x1bW5zPGFueT5cbn1cblxudHlwZSBBcmdzID0ge1xuICBhZGFwdGVyOiBQb3N0Z3Jlc0FkYXB0ZXJcbiAgYWxpYXNUYWJsZT86IEdlbmVyaWNUYWJsZSB8IFBnVGFibGVXaXRoQ29sdW1uczxhbnk+XG4gIGNvbGxlY3Rpb25QYXRoOiBzdHJpbmdcbiAgY29sdW1uUHJlZml4Pzogc3RyaW5nXG4gIGNvbnN0cmFpbnRQYXRoPzogc3RyaW5nXG4gIGNvbnN0cmFpbnRzPzogQ29uc3RyYWludFtdXG4gIGZpZWxkczogKEZpZWxkIHwgVGFiQXNGaWVsZClbXVxuICBqb2luQWxpYXNlczogQnVpbGRRdWVyeUpvaW5BbGlhc2VzXG4gIGpvaW5zOiBCdWlsZFF1ZXJ5Sm9pbnNcbiAgbG9jYWxlPzogc3RyaW5nXG4gIHBhdGhTZWdtZW50czogc3RyaW5nW11cbiAgcm9vdFRhYmxlTmFtZT86IHN0cmluZ1xuICBzZWxlY3RGaWVsZHM6IFJlY29yZDxzdHJpbmcsIEdlbmVyaWNDb2x1bW4+XG4gIHRhYmxlTmFtZTogc3RyaW5nXG4gIC8qKlxuICAgKiBJZiBjcmVhdGluZyBhIG5ldyB0YWJsZSBuYW1lIGZvciBhcnJheXMgYW5kIGJsb2NrcywgdGhpcyBzdWZmaXggc2hvdWxkIGJlIGFwcGVuZGVkIHRvIHRoZSB0YWJsZSBuYW1lXG4gICAqL1xuICB0YWJsZU5hbWVTdWZmaXg/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFRoZSByYXcgdmFsdWUgb2YgdGhlIHF1ZXJ5IGJlZm9yZSBzYW5pdGl6YXRpb25cbiAgICovXG4gIHZhbHVlOiB1bmtub3duXG59XG4vKipcbiAqIFRyYW5zZm9ybXMgcGF0aCB0byB0YWJsZSBhbmQgY29sdW1uIG5hbWVcbiAqIEFkZHMgdGFibGVzIHRvIGBqb2luYFxuICogQHJldHVybnMgVGFibGVDb2x1bW5cbiAqL1xuZXhwb3J0IGNvbnN0IGdldFRhYmxlQ29sdW1uRnJvbVBhdGggPSAoe1xuICBhZGFwdGVyLFxuICBhbGlhc1RhYmxlLFxuICBjb2xsZWN0aW9uUGF0aCxcbiAgY29sdW1uUHJlZml4ID0gJycsXG4gIGNvbnN0cmFpbnRQYXRoOiBpbmNvbWluZ0NvbnN0cmFpbnRQYXRoLFxuICBjb25zdHJhaW50cyA9IFtdLFxuICBmaWVsZHMsXG4gIGpvaW5BbGlhc2VzLFxuICBqb2lucyxcbiAgbG9jYWxlOiBpbmNvbWluZ0xvY2FsZSxcbiAgcGF0aFNlZ21lbnRzOiBpbmNvbWluZ1NlZ21lbnRzLFxuICByb290VGFibGVOYW1lOiBpbmNvbWluZ1Jvb3RUYWJsZU5hbWUsXG4gIHNlbGVjdEZpZWxkcyxcbiAgdGFibGVOYW1lLFxuICB0YWJsZU5hbWVTdWZmaXggPSAnJyxcbiAgdmFsdWUsXG59OiBBcmdzKTogVGFibGVDb2x1bW4gPT4ge1xuICBjb25zdCBmaWVsZFBhdGggPSBpbmNvbWluZ1NlZ21lbnRzWzBdXG4gIGxldCBsb2NhbGUgPSBpbmNvbWluZ0xvY2FsZVxuICBjb25zdCByb290VGFibGVOYW1lID0gaW5jb21pbmdSb290VGFibGVOYW1lIHx8IHRhYmxlTmFtZVxuICBsZXQgY29uc3RyYWludFBhdGggPSBpbmNvbWluZ0NvbnN0cmFpbnRQYXRoIHx8ICcnXG5cbiAgY29uc3QgZmllbGQgPSBmbGF0dGVuVG9wTGV2ZWxGaWVsZHMoZmllbGRzIGFzIEZpZWxkW10pLmZpbmQoXG4gICAgKGZpZWxkVG9GaW5kKSA9PiBmaWVsZEFmZmVjdHNEYXRhKGZpZWxkVG9GaW5kKSAmJiBmaWVsZFRvRmluZC5uYW1lID09PSBmaWVsZFBhdGgsXG4gICkgYXMgRmllbGQgfCBUYWJBc0ZpZWxkXG4gIGxldCBuZXdUYWJsZU5hbWUgPSB0YWJsZU5hbWVcblxuICBpZiAoIWZpZWxkICYmIGZpZWxkUGF0aCA9PT0gJ2lkJykge1xuICAgIHNlbGVjdEZpZWxkcy5pZCA9IGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0uaWRcbiAgICByZXR1cm4ge1xuICAgICAgY29sdW1uTmFtZTogJ2lkJyxcbiAgICAgIGNvbnN0cmFpbnRzLFxuICAgICAgZmllbGQ6IHtcbiAgICAgICAgbmFtZTogJ2lkJyxcbiAgICAgICAgdHlwZTogYWRhcHRlci5pZFR5cGUgPT09ICd1dWlkJyA/ICd0ZXh0JyA6ICdudW1iZXInLFxuICAgICAgfSBhcyBOdW1iZXJGaWVsZCB8IFRleHRGaWVsZCxcbiAgICAgIHRhYmxlOiBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLFxuICAgIH1cbiAgfVxuXG4gIGlmIChmaWVsZCkge1xuICAgIGNvbnN0IHBhdGhTZWdtZW50cyA9IFsuLi5pbmNvbWluZ1NlZ21lbnRzXVxuXG4gICAgLy8gSWYgbmV4dCBzZWdtZW50IGlzIGEgbG9jYWxlLFxuICAgIC8vIHdlIG5lZWQgdG8gdGFrZSBpdCBvdXQgYW5kIHVzZSBpdCBhcyB0aGUgbG9jYWxlIGZyb20gdGhpcyBwb2ludCBvblxuICAgIGlmICgnbG9jYWxpemVkJyBpbiBmaWVsZCAmJiBmaWVsZC5sb2NhbGl6ZWQgJiYgYWRhcHRlci5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb24pIHtcbiAgICAgIGNvbnN0IG1hdGNoZWRMb2NhbGUgPSBhZGFwdGVyLnBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbi5sb2NhbGVDb2Rlcy5maW5kKFxuICAgICAgICAobG9jYWxlKSA9PiBsb2NhbGUgPT09IHBhdGhTZWdtZW50c1sxXSxcbiAgICAgIClcblxuICAgICAgaWYgKG1hdGNoZWRMb2NhbGUpIHtcbiAgICAgICAgbG9jYWxlID0gbWF0Y2hlZExvY2FsZVxuICAgICAgICBwYXRoU2VnbWVudHMuc3BsaWNlKDEsIDEpXG4gICAgICB9XG4gICAgfVxuXG4gICAgc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgICBjYXNlICd0YWJzJzoge1xuICAgICAgICByZXR1cm4gZ2V0VGFibGVDb2x1bW5Gcm9tUGF0aCh7XG4gICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICBhbGlhc1RhYmxlLFxuICAgICAgICAgIGNvbGxlY3Rpb25QYXRoLFxuICAgICAgICAgIGNvbHVtblByZWZpeCxcbiAgICAgICAgICBjb25zdHJhaW50UGF0aCxcbiAgICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgICAgICBmaWVsZHM6IGZpZWxkLnRhYnMubWFwKCh0YWIpID0+ICh7XG4gICAgICAgICAgICAuLi50YWIsXG4gICAgICAgICAgICB0eXBlOiAndGFiJyxcbiAgICAgICAgICB9KSksXG4gICAgICAgICAgam9pbkFsaWFzZXMsXG4gICAgICAgICAgam9pbnMsXG4gICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgIHBhdGhTZWdtZW50czogcGF0aFNlZ21lbnRzLnNsaWNlKDEpLFxuICAgICAgICAgIHJvb3RUYWJsZU5hbWUsXG4gICAgICAgICAgc2VsZWN0RmllbGRzLFxuICAgICAgICAgIHRhYmxlTmFtZTogbmV3VGFibGVOYW1lLFxuICAgICAgICAgIHRhYmxlTmFtZVN1ZmZpeCxcbiAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3RhYic6IHtcbiAgICAgICAgaWYgKHRhYkhhc05hbWUoZmllbGQpKSB7XG4gICAgICAgICAgcmV0dXJuIGdldFRhYmxlQ29sdW1uRnJvbVBhdGgoe1xuICAgICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICAgIGFsaWFzVGFibGUsXG4gICAgICAgICAgICBjb2xsZWN0aW9uUGF0aCxcbiAgICAgICAgICAgIGNvbHVtblByZWZpeDogYCR7Y29sdW1uUHJlZml4fSR7ZmllbGQubmFtZX1fYCxcbiAgICAgICAgICAgIGNvbnN0cmFpbnRQYXRoOiBgJHtjb25zdHJhaW50UGF0aH0ke2ZpZWxkLm5hbWV9LmAsXG4gICAgICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICAgICAgam9pbkFsaWFzZXMsXG4gICAgICAgICAgICBqb2lucyxcbiAgICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICAgIHBhdGhTZWdtZW50czogcGF0aFNlZ21lbnRzLnNsaWNlKDEpLFxuICAgICAgICAgICAgcm9vdFRhYmxlTmFtZSxcbiAgICAgICAgICAgIHNlbGVjdEZpZWxkcyxcbiAgICAgICAgICAgIHRhYmxlTmFtZTogbmV3VGFibGVOYW1lLFxuICAgICAgICAgICAgdGFibGVOYW1lU3VmZml4OiBgJHt0YWJsZU5hbWVTdWZmaXh9JHt0b1NuYWtlQ2FzZShmaWVsZC5uYW1lKX1fYCxcbiAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGdldFRhYmxlQ29sdW1uRnJvbVBhdGgoe1xuICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgYWxpYXNUYWJsZSxcbiAgICAgICAgICBjb2xsZWN0aW9uUGF0aCxcbiAgICAgICAgICBjb2x1bW5QcmVmaXgsXG4gICAgICAgICAgY29uc3RyYWludFBhdGgsXG4gICAgICAgICAgY29uc3RyYWludHMsXG4gICAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgICAgam9pbkFsaWFzZXMsXG4gICAgICAgICAgam9pbnMsXG4gICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgIHBhdGhTZWdtZW50czogcGF0aFNlZ21lbnRzLnNsaWNlKDEpLFxuICAgICAgICAgIHJvb3RUYWJsZU5hbWUsXG4gICAgICAgICAgc2VsZWN0RmllbGRzLFxuICAgICAgICAgIHRhYmxlTmFtZTogbmV3VGFibGVOYW1lLFxuICAgICAgICAgIHRhYmxlTmFtZVN1ZmZpeCxcbiAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgY2FzZSAnZ3JvdXAnOiB7XG4gICAgICAgIGlmIChsb2NhbGUgJiYgZmllbGQubG9jYWxpemVkICYmIGFkYXB0ZXIucGF5bG9hZC5jb25maWcubG9jYWxpemF0aW9uKSB7XG4gICAgICAgICAgbmV3VGFibGVOYW1lID0gYCR7dGFibGVOYW1lfSR7YWRhcHRlci5sb2NhbGVzU3VmZml4fWBcblxuICAgICAgICAgIGpvaW5zW3RhYmxlTmFtZV0gPSBlcShcbiAgICAgICAgICAgIGFkYXB0ZXIudGFibGVzW3RhYmxlTmFtZV0uaWQsXG4gICAgICAgICAgICBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLl9wYXJlbnRJRCxcbiAgICAgICAgICApXG4gICAgICAgICAgaWYgKGxvY2FsZSAhPT0gJ2FsbCcpIHtcbiAgICAgICAgICAgIGNvbnN0cmFpbnRzLnB1c2goe1xuICAgICAgICAgICAgICBjb2x1bW5OYW1lOiAnX2xvY2FsZScsXG4gICAgICAgICAgICAgIHRhYmxlOiBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLFxuICAgICAgICAgICAgICB2YWx1ZTogbG9jYWxlLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGdldFRhYmxlQ29sdW1uRnJvbVBhdGgoe1xuICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgYWxpYXNUYWJsZSxcbiAgICAgICAgICBjb2xsZWN0aW9uUGF0aCxcbiAgICAgICAgICBjb2x1bW5QcmVmaXg6IGAke2NvbHVtblByZWZpeH0ke2ZpZWxkLm5hbWV9X2AsXG4gICAgICAgICAgY29uc3RyYWludFBhdGg6IGAke2NvbnN0cmFpbnRQYXRofSR7ZmllbGQubmFtZX0uYCxcbiAgICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICBqb2luQWxpYXNlcyxcbiAgICAgICAgICBqb2lucyxcbiAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgcGF0aFNlZ21lbnRzOiBwYXRoU2VnbWVudHMuc2xpY2UoMSksXG4gICAgICAgICAgcm9vdFRhYmxlTmFtZSxcbiAgICAgICAgICBzZWxlY3RGaWVsZHMsXG4gICAgICAgICAgdGFibGVOYW1lOiBuZXdUYWJsZU5hbWUsXG4gICAgICAgICAgdGFibGVOYW1lU3VmZml4OiBgJHt0YWJsZU5hbWVTdWZmaXh9JHt0b1NuYWtlQ2FzZShmaWVsZC5uYW1lKX1fYCxcbiAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgY2FzZSAnc2VsZWN0Jzoge1xuICAgICAgICBpZiAoZmllbGQuaGFzTWFueSkge1xuICAgICAgICAgIGNvbnN0IG5ld1RhYmxlTmFtZSA9IGFkYXB0ZXIudGFibGVOYW1lTWFwLmdldChcbiAgICAgICAgICAgIGAke3RhYmxlTmFtZX1fJHt0YWJsZU5hbWVTdWZmaXh9JHt0b1NuYWtlQ2FzZShmaWVsZC5uYW1lKX1gLFxuICAgICAgICAgIClcblxuICAgICAgICAgIGlmIChsb2NhbGUgJiYgZmllbGQubG9jYWxpemVkICYmIGFkYXB0ZXIucGF5bG9hZC5jb25maWcubG9jYWxpemF0aW9uKSB7XG4gICAgICAgICAgICBqb2luc1tuZXdUYWJsZU5hbWVdID0gYW5kKFxuICAgICAgICAgICAgICBlcShhZGFwdGVyLnRhYmxlc1t0YWJsZU5hbWVdLmlkLCBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLnBhcmVudCksXG4gICAgICAgICAgICAgIGVxKGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0uX2xvY2FsZSwgbG9jYWxlKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGlmIChsb2NhbGUgIT09ICdhbGwnKSB7XG4gICAgICAgICAgICAgIGNvbnN0cmFpbnRzLnB1c2goe1xuICAgICAgICAgICAgICAgIGNvbHVtbk5hbWU6ICdfbG9jYWxlJyxcbiAgICAgICAgICAgICAgICB0YWJsZTogYWRhcHRlci50YWJsZXNbbmV3VGFibGVOYW1lXSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogbG9jYWxlLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBqb2luc1tuZXdUYWJsZU5hbWVdID0gZXEoXG4gICAgICAgICAgICAgIGFkYXB0ZXIudGFibGVzW3RhYmxlTmFtZV0uaWQsXG4gICAgICAgICAgICAgIGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0ucGFyZW50LFxuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb2x1bW5OYW1lOiAndmFsdWUnLFxuICAgICAgICAgICAgY29uc3RyYWludHMsXG4gICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgIHRhYmxlOiBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICd0ZXh0JzpcbiAgICAgIGNhc2UgJ251bWJlcic6IHtcbiAgICAgICAgaWYgKGZpZWxkLmhhc01hbnkpIHtcbiAgICAgICAgICBsZXQgdGFibGVUeXBlID0gJ3RleHRzJ1xuICAgICAgICAgIGxldCBjb2x1bW5OYW1lID0gJ3RleHQnXG4gICAgICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICB0YWJsZVR5cGUgPSAnbnVtYmVycydcbiAgICAgICAgICAgIGNvbHVtbk5hbWUgPSAnbnVtYmVyJ1xuICAgICAgICAgIH1cbiAgICAgICAgICBuZXdUYWJsZU5hbWUgPSBgJHt0YWJsZU5hbWV9XyR7dGFibGVUeXBlfWBcbiAgICAgICAgICBjb25zdCBqb2luQ29uc3RyYWludHMgPSBbXG4gICAgICAgICAgICBlcShhZGFwdGVyLnRhYmxlc1t0YWJsZU5hbWVdLmlkLCBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLnBhcmVudCksXG4gICAgICAgICAgICBlcShhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLnBhdGgsIGAke2NvbnN0cmFpbnRQYXRofSR7ZmllbGQubmFtZX1gKSxcbiAgICAgICAgICBdXG5cbiAgICAgICAgICBpZiAobG9jYWxlICYmIGZpZWxkLmxvY2FsaXplZCAmJiBhZGFwdGVyLnBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbikge1xuICAgICAgICAgICAgam9pbnNbbmV3VGFibGVOYW1lXSA9IGFuZChcbiAgICAgICAgICAgICAgLi4uam9pbkNvbnN0cmFpbnRzLFxuICAgICAgICAgICAgICBlcShhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLl9sb2NhbGUsIGxvY2FsZSksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBpZiAobG9jYWxlICE9PSAnYWxsJykge1xuICAgICAgICAgICAgICBjb25zdHJhaW50cy5wdXNoKHtcbiAgICAgICAgICAgICAgICBjb2x1bW5OYW1lOiAnbG9jYWxlJyxcbiAgICAgICAgICAgICAgICB0YWJsZTogYWRhcHRlci50YWJsZXNbbmV3VGFibGVOYW1lXSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogbG9jYWxlLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBqb2luc1tuZXdUYWJsZU5hbWVdID0gYW5kKC4uLmpvaW5Db25zdHJhaW50cylcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29sdW1uTmFtZSxcbiAgICAgICAgICAgIGNvbnN0cmFpbnRzLFxuICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICB0YWJsZTogYWRhcHRlci50YWJsZXNbbmV3VGFibGVOYW1lXSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAnYXJyYXknOiB7XG4gICAgICAgIG5ld1RhYmxlTmFtZSA9IGFkYXB0ZXIudGFibGVOYW1lTWFwLmdldChcbiAgICAgICAgICBgJHt0YWJsZU5hbWV9XyR7dGFibGVOYW1lU3VmZml4fSR7dG9TbmFrZUNhc2UoZmllbGQubmFtZSl9YCxcbiAgICAgICAgKVxuXG4gICAgICAgIGNvbnN0cmFpbnRQYXRoID0gYCR7Y29uc3RyYWludFBhdGh9JHtmaWVsZC5uYW1lfS4lLmBcbiAgICAgICAgaWYgKGxvY2FsZSAmJiBmaWVsZC5sb2NhbGl6ZWQgJiYgYWRhcHRlci5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb24pIHtcbiAgICAgICAgICBqb2luc1tuZXdUYWJsZU5hbWVdID0gYW5kKFxuICAgICAgICAgICAgZXEoYWRhcHRlci50YWJsZXNbdGFibGVOYW1lXS5pZCwgYWRhcHRlci50YWJsZXNbbmV3VGFibGVOYW1lXS5fcGFyZW50SUQpLFxuICAgICAgICAgICAgZXEoYWRhcHRlci50YWJsZXNbbmV3VGFibGVOYW1lXS5fbG9jYWxlLCBsb2NhbGUpLFxuICAgICAgICAgIClcbiAgICAgICAgICBpZiAobG9jYWxlICE9PSAnYWxsJykge1xuICAgICAgICAgICAgY29uc3RyYWludHMucHVzaCh7XG4gICAgICAgICAgICAgIGNvbHVtbk5hbWU6ICdfbG9jYWxlJyxcbiAgICAgICAgICAgICAgdGFibGU6IGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0sXG4gICAgICAgICAgICAgIHZhbHVlOiBsb2NhbGUsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBqb2luc1tuZXdUYWJsZU5hbWVdID0gZXEoXG4gICAgICAgICAgICBhZGFwdGVyLnRhYmxlc1t0YWJsZU5hbWVdLmlkLFxuICAgICAgICAgICAgYWRhcHRlci50YWJsZXNbbmV3VGFibGVOYW1lXS5fcGFyZW50SUQsXG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBnZXRUYWJsZUNvbHVtbkZyb21QYXRoKHtcbiAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgIGNvbGxlY3Rpb25QYXRoLFxuICAgICAgICAgIGNvbnN0cmFpbnRQYXRoLFxuICAgICAgICAgIGNvbnN0cmFpbnRzLFxuICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICAgIGpvaW5BbGlhc2VzLFxuICAgICAgICAgIGpvaW5zLFxuICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICBwYXRoU2VnbWVudHM6IHBhdGhTZWdtZW50cy5zbGljZSgxKSxcbiAgICAgICAgICByb290VGFibGVOYW1lLFxuICAgICAgICAgIHNlbGVjdEZpZWxkcyxcbiAgICAgICAgICB0YWJsZU5hbWU6IG5ld1RhYmxlTmFtZSxcbiAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgY2FzZSAnYmxvY2tzJzoge1xuICAgICAgICBsZXQgYmxvY2tUYWJsZUNvbHVtbjogVGFibGVDb2x1bW5cbiAgICAgICAgbGV0IG5ld1RhYmxlTmFtZTogc3RyaW5nXG5cbiAgICAgICAgLy8gaGFuZGxlIGJsb2NrVHlwZSBxdWVyaWVzXG4gICAgICAgIGlmIChwYXRoU2VnbWVudHNbMV0gPT09ICdibG9ja1R5cGUnKSB7XG4gICAgICAgICAgLy8gZmluZCB0aGUgYmxvY2sgY29uZmlnIHVzaW5nIHRoZSB2YWx1ZVxuICAgICAgICAgIGNvbnN0IGJsb2NrVHlwZXMgPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXVxuICAgICAgICAgIGJsb2NrVHlwZXMuZm9yRWFjaCgoYmxvY2tUeXBlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBibG9jayA9IGZpZWxkLmJsb2Nrcy5maW5kKChibG9jaykgPT4gYmxvY2suc2x1ZyA9PT0gYmxvY2tUeXBlKVxuXG4gICAgICAgICAgICBuZXdUYWJsZU5hbWUgPSBhZGFwdGVyLnRhYmxlTmFtZU1hcC5nZXQoXG4gICAgICAgICAgICAgIGAke3RhYmxlTmFtZX1fYmxvY2tzXyR7dG9TbmFrZUNhc2UoYmxvY2suc2x1Zyl9YCxcbiAgICAgICAgICAgIClcblxuICAgICAgICAgICAgam9pbnNbbmV3VGFibGVOYW1lXSA9IGVxKFxuICAgICAgICAgICAgICBhZGFwdGVyLnRhYmxlc1t0YWJsZU5hbWVdLmlkLFxuICAgICAgICAgICAgICBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLl9wYXJlbnRJRCxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGNvbnN0cmFpbnRzLnB1c2goe1xuICAgICAgICAgICAgICBjb2x1bW5OYW1lOiAnX3BhdGgnLFxuICAgICAgICAgICAgICB0YWJsZTogYWRhcHRlci50YWJsZXNbbmV3VGFibGVOYW1lXSxcbiAgICAgICAgICAgICAgdmFsdWU6IHBhdGhTZWdtZW50c1swXSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSlcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29uc3RyYWludHMsXG4gICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgIGdldE5vdE51bGxDb2x1bW5CeVZhbHVlOiAoKSA9PiAnaWQnLFxuICAgICAgICAgICAgdGFibGU6IGFkYXB0ZXIudGFibGVzW3RhYmxlTmFtZV0sXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaGFzQmxvY2tGaWVsZCA9IGZpZWxkLmJsb2Nrcy5zb21lKChibG9jaykgPT4ge1xuICAgICAgICAgIG5ld1RhYmxlTmFtZSA9IGFkYXB0ZXIudGFibGVOYW1lTWFwLmdldChgJHt0YWJsZU5hbWV9X2Jsb2Nrc18ke3RvU25ha2VDYXNlKGJsb2NrLnNsdWcpfWApXG4gICAgICAgICAgY29uc3RyYWludFBhdGggPSBgJHtjb25zdHJhaW50UGF0aH0ke2ZpZWxkLm5hbWV9LiUuYFxuXG4gICAgICAgICAgbGV0IHJlc3VsdFxuICAgICAgICAgIGNvbnN0IGJsb2NrQ29uc3RyYWludHMgPSBbXVxuICAgICAgICAgIGNvbnN0IGJsb2NrU2VsZWN0RmllbGRzID0ge31cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmVzdWx0ID0gZ2V0VGFibGVDb2x1bW5Gcm9tUGF0aCh7XG4gICAgICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgICAgIGNvbGxlY3Rpb25QYXRoLFxuICAgICAgICAgICAgICBjb25zdHJhaW50UGF0aCxcbiAgICAgICAgICAgICAgY29uc3RyYWludHM6IGJsb2NrQ29uc3RyYWludHMsXG4gICAgICAgICAgICAgIGZpZWxkczogYmxvY2suZmllbGRzLFxuICAgICAgICAgICAgICBqb2luQWxpYXNlcyxcbiAgICAgICAgICAgICAgam9pbnMsXG4gICAgICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICAgICAgcGF0aFNlZ21lbnRzOiBwYXRoU2VnbWVudHMuc2xpY2UoMSksXG4gICAgICAgICAgICAgIHJvb3RUYWJsZU5hbWUsXG4gICAgICAgICAgICAgIHNlbGVjdEZpZWxkczogYmxvY2tTZWxlY3RGaWVsZHMsXG4gICAgICAgICAgICAgIHRhYmxlTmFtZTogbmV3VGFibGVOYW1lLFxuICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIC8vIHRoaXMgaXMgZmluZSwgbm90IGV2ZXJ5IGJsb2NrIHdpbGwgaGF2ZSB0aGUgZmllbGRcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cbiAgICAgICAgICBibG9ja1RhYmxlQ29sdW1uID0gcmVzdWx0XG4gICAgICAgICAgY29uc3RyYWludHMgPSBjb25zdHJhaW50cy5jb25jYXQoYmxvY2tDb25zdHJhaW50cylcbiAgICAgICAgICBzZWxlY3RGaWVsZHMgPSB7IC4uLnNlbGVjdEZpZWxkcywgLi4uYmxvY2tTZWxlY3RGaWVsZHMgfVxuICAgICAgICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQgJiYgYWRhcHRlci5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb24pIHtcbiAgICAgICAgICAgIGpvaW5zW25ld1RhYmxlTmFtZV0gPSBhbmQoXG4gICAgICAgICAgICAgIGVxKGFkYXB0ZXIudGFibGVzW3RhYmxlTmFtZV0uaWQsIGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0uX3BhcmVudElEKSxcbiAgICAgICAgICAgICAgZXEoYWRhcHRlci50YWJsZXNbbmV3VGFibGVOYW1lXS5fbG9jYWxlLCBsb2NhbGUpLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgaWYgKGxvY2FsZSkge1xuICAgICAgICAgICAgICBjb25zdHJhaW50cy5wdXNoKHtcbiAgICAgICAgICAgICAgICBjb2x1bW5OYW1lOiAnX2xvY2FsZScsXG4gICAgICAgICAgICAgICAgdGFibGU6IGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0sXG4gICAgICAgICAgICAgICAgdmFsdWU6IGxvY2FsZSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgam9pbnNbbmV3VGFibGVOYW1lXSA9IGVxKFxuICAgICAgICAgICAgICBhZGFwdGVyLnRhYmxlc1t0YWJsZU5hbWVdLmlkLFxuICAgICAgICAgICAgICBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLl9wYXJlbnRJRCxcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfSlcbiAgICAgICAgaWYgKGhhc0Jsb2NrRmllbGQpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29sdW1uTmFtZTogYmxvY2tUYWJsZUNvbHVtbi5jb2x1bW5OYW1lLFxuICAgICAgICAgICAgY29uc3RyYWludHMsXG4gICAgICAgICAgICBmaWVsZDogYmxvY2tUYWJsZUNvbHVtbi5maWVsZCxcbiAgICAgICAgICAgIHBhdGhTZWdtZW50czogcGF0aFNlZ21lbnRzLnNsaWNlKDEpLFxuICAgICAgICAgICAgcmF3Q29sdW1uOiBibG9ja1RhYmxlQ29sdW1uLnJhd0NvbHVtbixcbiAgICAgICAgICAgIHRhYmxlOiBibG9ja1RhYmxlQ29sdW1uLnRhYmxlLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICdyZWxhdGlvbnNoaXAnOlxuICAgICAgY2FzZSAndXBsb2FkJzoge1xuICAgICAgICBsZXQgcmVsYXRpb25zaGlwRmllbGRzXG4gICAgICAgIGNvbnN0IHJlbGF0aW9uVGFibGVOYW1lID0gYCR7cm9vdFRhYmxlTmFtZX0ke2FkYXB0ZXIucmVsYXRpb25zaGlwc1N1ZmZpeH1gXG4gICAgICAgIGNvbnN0IG5ld0NvbGxlY3Rpb25QYXRoID0gcGF0aFNlZ21lbnRzLnNsaWNlKDEpLmpvaW4oJy4nKVxuICAgICAgICBjb25zdCBhbGlhc1JlbGF0aW9uc2hpcFRhYmxlTmFtZSA9IHV1aWQoKVxuICAgICAgICBjb25zdCBhbGlhc1JlbGF0aW9uc2hpcFRhYmxlID0gYWxpYXMoXG4gICAgICAgICAgYWRhcHRlci50YWJsZXNbcmVsYXRpb25UYWJsZU5hbWVdLFxuICAgICAgICAgIGFsaWFzUmVsYXRpb25zaGlwVGFibGVOYW1lLFxuICAgICAgICApXG5cbiAgICAgICAgLy8gSm9pbiBpbiB0aGUgcmVsYXRpb25zaGlwcyB0YWJsZVxuICAgICAgICBpZiAobG9jYWxlICYmIGZpZWxkLmxvY2FsaXplZCAmJiBhZGFwdGVyLnBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbikge1xuICAgICAgICAgIGpvaW5BbGlhc2VzLnB1c2goe1xuICAgICAgICAgICAgY29uZGl0aW9uOiBhbmQoXG4gICAgICAgICAgICAgIGVxKChhbGlhc1RhYmxlIHx8IGFkYXB0ZXIudGFibGVzW3Jvb3RUYWJsZU5hbWVdKS5pZCwgYWxpYXNSZWxhdGlvbnNoaXBUYWJsZS5wYXJlbnQpLFxuICAgICAgICAgICAgICBlcShhbGlhc1JlbGF0aW9uc2hpcFRhYmxlLmxvY2FsZSwgbG9jYWxlKSxcbiAgICAgICAgICAgICAgbGlrZShhbGlhc1JlbGF0aW9uc2hpcFRhYmxlLnBhdGgsIGAke2NvbnN0cmFpbnRQYXRofSR7ZmllbGQubmFtZX1gKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0YWJsZTogYWxpYXNSZWxhdGlvbnNoaXBUYWJsZSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIGlmIChsb2NhbGUgIT09ICdhbGwnKSB7XG4gICAgICAgICAgICBjb25zdHJhaW50cy5wdXNoKHtcbiAgICAgICAgICAgICAgY29sdW1uTmFtZTogJ2xvY2FsZScsXG4gICAgICAgICAgICAgIHRhYmxlOiBhbGlhc1JlbGF0aW9uc2hpcFRhYmxlLFxuICAgICAgICAgICAgICB2YWx1ZTogbG9jYWxlLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gSm9pbiBpbiB0aGUgcmVsYXRpb25zaGlwcyB0YWJsZVxuICAgICAgICAgIGpvaW5BbGlhc2VzLnB1c2goe1xuICAgICAgICAgICAgY29uZGl0aW9uOiBhbmQoXG4gICAgICAgICAgICAgIGVxKChhbGlhc1RhYmxlIHx8IGFkYXB0ZXIudGFibGVzW3Jvb3RUYWJsZU5hbWVdKS5pZCwgYWxpYXNSZWxhdGlvbnNoaXBUYWJsZS5wYXJlbnQpLFxuICAgICAgICAgICAgICBsaWtlKGFsaWFzUmVsYXRpb25zaGlwVGFibGUucGF0aCwgYCR7Y29uc3RyYWludFBhdGh9JHtmaWVsZC5uYW1lfWApLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRhYmxlOiBhbGlhc1JlbGF0aW9uc2hpcFRhYmxlLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cblxuICAgICAgICBzZWxlY3RGaWVsZHNbYCR7cmVsYXRpb25UYWJsZU5hbWV9LnBhdGhgXSA9IGFsaWFzUmVsYXRpb25zaGlwVGFibGUucGF0aFxuXG4gICAgICAgIGxldCBuZXdBbGlhc1RhYmxlXG5cbiAgICAgICAgaWYgKHR5cGVvZiBmaWVsZC5yZWxhdGlvblRvID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIGNvbnN0IHJlbGF0aW9uc2hpcENvbmZpZyA9IGFkYXB0ZXIucGF5bG9hZC5jb2xsZWN0aW9uc1tmaWVsZC5yZWxhdGlvblRvXS5jb25maWdcblxuICAgICAgICAgIG5ld1RhYmxlTmFtZSA9IGFkYXB0ZXIudGFibGVOYW1lTWFwLmdldCh0b1NuYWtlQ2FzZShyZWxhdGlvbnNoaXBDb25maWcuc2x1ZykpXG5cbiAgICAgICAgICAvLyBwYXJlbnQgdG8gcmVsYXRpb25zaGlwIGpvaW4gdGFibGVcbiAgICAgICAgICByZWxhdGlvbnNoaXBGaWVsZHMgPSByZWxhdGlvbnNoaXBDb25maWcuZmllbGRzXG5cbiAgICAgICAgICBuZXdBbGlhc1RhYmxlID0gYWxpYXMoYWRhcHRlci50YWJsZXNbbmV3VGFibGVOYW1lXSwgdG9TbmFrZUNhc2UodXVpZCgpKSlcblxuICAgICAgICAgIGpvaW5BbGlhc2VzLnB1c2goe1xuICAgICAgICAgICAgY29uZGl0aW9uOiBlcShuZXdBbGlhc1RhYmxlLmlkLCBhbGlhc1JlbGF0aW9uc2hpcFRhYmxlW2Ake2ZpZWxkLnJlbGF0aW9uVG99SURgXSksXG4gICAgICAgICAgICB0YWJsZTogbmV3QWxpYXNUYWJsZSxcbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgaWYgKG5ld0NvbGxlY3Rpb25QYXRoID09PSAnJyB8fCBuZXdDb2xsZWN0aW9uUGF0aCA9PT0gJ2lkJykge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgY29sdW1uTmFtZTogYCR7ZmllbGQucmVsYXRpb25Ub31JRGAsXG4gICAgICAgICAgICAgIGNvbnN0cmFpbnRzLFxuICAgICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgICAgdGFibGU6IGFsaWFzUmVsYXRpb25zaGlwVGFibGUsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKG5ld0NvbGxlY3Rpb25QYXRoID09PSAndmFsdWUnKSB7XG4gICAgICAgICAgY29uc3QgdGFibGVDb2x1bW5zTmFtZXMgPSBmaWVsZC5yZWxhdGlvblRvLm1hcCgocmVsYXRpb25UbykgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVsYXRpb25UYWJsZU5hbWUgPSBhZGFwdGVyLnRhYmxlTmFtZU1hcC5nZXQoXG4gICAgICAgICAgICAgIHRvU25ha2VDYXNlKGFkYXB0ZXIucGF5bG9hZC5jb2xsZWN0aW9uc1tyZWxhdGlvblRvXS5jb25maWcuc2x1ZyksXG4gICAgICAgICAgICApXG5cbiAgICAgICAgICAgIHJldHVybiBgXCIke2FsaWFzUmVsYXRpb25zaGlwVGFibGVOYW1lfVwiLlwiJHtyZWxhdGlvblRhYmxlTmFtZX1faWRcImBcbiAgICAgICAgICB9KVxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgcmF3Q29sdW1uOiBzcWwucmF3KGBDT0FMRVNDRSgke3RhYmxlQ29sdW1uc05hbWVzLmpvaW4oJywgJyl9KWApLFxuICAgICAgICAgICAgdGFibGU6IGFsaWFzUmVsYXRpb25zaGlwVGFibGUsXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKG5ld0NvbGxlY3Rpb25QYXRoID09PSAncmVsYXRpb25UbycpIHtcbiAgICAgICAgICBjb25zdCByZWxhdGlvblRvID0gQXJyYXkuaXNBcnJheShmaWVsZC5yZWxhdGlvblRvKSA/IGZpZWxkLnJlbGF0aW9uVG8gOiBbZmllbGQucmVsYXRpb25Ub11cblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgZ2V0Tm90TnVsbENvbHVtbkJ5VmFsdWU6ICh2YWwpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgbWF0Y2hlZFJlbGF0aW9uID0gcmVsYXRpb25Uby5maW5kKChyZWxhdGlvbikgPT4gcmVsYXRpb24gPT09IHZhbClcbiAgICAgICAgICAgICAgaWYgKG1hdGNoZWRSZWxhdGlvbikgcmV0dXJuIGAke21hdGNoZWRSZWxhdGlvbn1JRGBcbiAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRhYmxlOiBhbGlhc1JlbGF0aW9uc2hpcFRhYmxlLFxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyBuZXcgQVBJRXJyb3IoJ05vdCBzdXBwb3J0ZWQnKVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGdldFRhYmxlQ29sdW1uRnJvbVBhdGgoe1xuICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgYWxpYXNUYWJsZTogbmV3QWxpYXNUYWJsZSxcbiAgICAgICAgICBjb2xsZWN0aW9uUGF0aDogbmV3Q29sbGVjdGlvblBhdGgsXG4gICAgICAgICAgY29uc3RyYWludHMsXG4gICAgICAgICAgZmllbGRzOiByZWxhdGlvbnNoaXBGaWVsZHMsXG4gICAgICAgICAgam9pbkFsaWFzZXMsXG4gICAgICAgICAgam9pbnMsXG4gICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgIHBhdGhTZWdtZW50czogcGF0aFNlZ21lbnRzLnNsaWNlKDEpLFxuICAgICAgICAgIHJvb3RUYWJsZU5hbWU6IG5ld1RhYmxlTmFtZSxcbiAgICAgICAgICBzZWxlY3RGaWVsZHMsXG4gICAgICAgICAgdGFibGVOYW1lOiBuZXdUYWJsZU5hbWUsXG4gICAgICAgICAgdmFsdWUsXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGZpZWxkQWZmZWN0c0RhdGEoZmllbGQpKSB7XG4gICAgICBpZiAoZmllbGQubG9jYWxpemVkICYmIGFkYXB0ZXIucGF5bG9hZC5jb25maWcubG9jYWxpemF0aW9uKSB7XG4gICAgICAgIC8vIElmIGxvY2FsaXplZCwgd2UgZ28gdG8gbG9jYWxpemVkIHRhYmxlIGFuZCBzZXQgYWxpYXNUYWJsZSB0byB1bmRlZmluZWRcbiAgICAgICAgLy8gc28gaXQgaXMgbm90IHBpY2tlZCB1cCBiZWxvdyB0byBiZSB1c2VkIGFzIHRhcmdldFRhYmxlXG4gICAgICAgIG5ld1RhYmxlTmFtZSA9IGAke3RhYmxlTmFtZX0ke2FkYXB0ZXIubG9jYWxlc1N1ZmZpeH1gXG5cbiAgICAgICAgY29uc3QgcGFyZW50VGFibGUgPSBhbGlhc1RhYmxlIHx8IGFkYXB0ZXIudGFibGVzW3RhYmxlTmFtZV1cblxuICAgICAgICBqb2luc1tuZXdUYWJsZU5hbWVdID0gZXEocGFyZW50VGFibGUuaWQsIGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0uX3BhcmVudElEKVxuXG4gICAgICAgIGFsaWFzVGFibGUgPSB1bmRlZmluZWRcblxuICAgICAgICBpZiAobG9jYWxlICE9PSAnYWxsJykge1xuICAgICAgICAgIGNvbnN0cmFpbnRzLnB1c2goe1xuICAgICAgICAgICAgY29sdW1uTmFtZTogJ19sb2NhbGUnLFxuICAgICAgICAgICAgdGFibGU6IGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0sXG4gICAgICAgICAgICB2YWx1ZTogbG9jYWxlLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgdGFyZ2V0VGFibGUgPSBhbGlhc1RhYmxlIHx8IGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV1cblxuICAgICAgc2VsZWN0RmllbGRzW2Ake25ld1RhYmxlTmFtZX0uJHtjb2x1bW5QcmVmaXh9JHtmaWVsZC5uYW1lfWBdID1cbiAgICAgICAgdGFyZ2V0VGFibGVbYCR7Y29sdW1uUHJlZml4fSR7ZmllbGQubmFtZX1gXVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb2x1bW5OYW1lOiBgJHtjb2x1bW5QcmVmaXh9JHtmaWVsZC5uYW1lfWAsXG4gICAgICAgIGNvbnN0cmFpbnRzLFxuICAgICAgICBmaWVsZCxcbiAgICAgICAgcGF0aFNlZ21lbnRzLFxuICAgICAgICB0YWJsZTogdGFyZ2V0VGFibGUsXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdGhyb3cgbmV3IEFQSUVycm9yKGBDYW5ub3QgZmluZCBmaWVsZCBmb3IgcGF0aCBhdCAke2ZpZWxkUGF0aH1gKVxufVxuIl0sIm5hbWVzIjpbImdldFRhYmxlQ29sdW1uRnJvbVBhdGgiLCJhZGFwdGVyIiwiYWxpYXNUYWJsZSIsImNvbGxlY3Rpb25QYXRoIiwiY29sdW1uUHJlZml4IiwiY29uc3RyYWludFBhdGgiLCJpbmNvbWluZ0NvbnN0cmFpbnRQYXRoIiwiY29uc3RyYWludHMiLCJmaWVsZHMiLCJqb2luQWxpYXNlcyIsImpvaW5zIiwibG9jYWxlIiwiaW5jb21pbmdMb2NhbGUiLCJwYXRoU2VnbWVudHMiLCJpbmNvbWluZ1NlZ21lbnRzIiwicm9vdFRhYmxlTmFtZSIsImluY29taW5nUm9vdFRhYmxlTmFtZSIsInNlbGVjdEZpZWxkcyIsInRhYmxlTmFtZSIsInRhYmxlTmFtZVN1ZmZpeCIsInZhbHVlIiwiZmllbGRQYXRoIiwiZmllbGQiLCJmbGF0dGVuVG9wTGV2ZWxGaWVsZHMiLCJmaW5kIiwiZmllbGRUb0ZpbmQiLCJmaWVsZEFmZmVjdHNEYXRhIiwibmFtZSIsIm5ld1RhYmxlTmFtZSIsImlkIiwidGFibGVzIiwiY29sdW1uTmFtZSIsInR5cGUiLCJpZFR5cGUiLCJ0YWJsZSIsImxvY2FsaXplZCIsInBheWxvYWQiLCJjb25maWciLCJsb2NhbGl6YXRpb24iLCJtYXRjaGVkTG9jYWxlIiwibG9jYWxlQ29kZXMiLCJzcGxpY2UiLCJ0YWJzIiwibWFwIiwidGFiIiwic2xpY2UiLCJ0YWJIYXNOYW1lIiwidG9TbmFrZUNhc2UiLCJsb2NhbGVzU3VmZml4IiwiZXEiLCJfcGFyZW50SUQiLCJwdXNoIiwiaGFzTWFueSIsInRhYmxlTmFtZU1hcCIsImdldCIsImFuZCIsInBhcmVudCIsIl9sb2NhbGUiLCJ0YWJsZVR5cGUiLCJqb2luQ29uc3RyYWludHMiLCJwYXRoIiwiYmxvY2tUYWJsZUNvbHVtbiIsImJsb2NrVHlwZXMiLCJBcnJheSIsImlzQXJyYXkiLCJmb3JFYWNoIiwiYmxvY2tUeXBlIiwiYmxvY2siLCJibG9ja3MiLCJzbHVnIiwiZ2V0Tm90TnVsbENvbHVtbkJ5VmFsdWUiLCJoYXNCbG9ja0ZpZWxkIiwic29tZSIsInJlc3VsdCIsImJsb2NrQ29uc3RyYWludHMiLCJibG9ja1NlbGVjdEZpZWxkcyIsImVycm9yIiwiY29uY2F0IiwicmF3Q29sdW1uIiwicmVsYXRpb25zaGlwRmllbGRzIiwicmVsYXRpb25UYWJsZU5hbWUiLCJyZWxhdGlvbnNoaXBzU3VmZml4IiwibmV3Q29sbGVjdGlvblBhdGgiLCJqb2luIiwiYWxpYXNSZWxhdGlvbnNoaXBUYWJsZU5hbWUiLCJ1dWlkIiwiYWxpYXNSZWxhdGlvbnNoaXBUYWJsZSIsImFsaWFzIiwiY29uZGl0aW9uIiwibGlrZSIsIm5ld0FsaWFzVGFibGUiLCJyZWxhdGlvblRvIiwicmVsYXRpb25zaGlwQ29uZmlnIiwiY29sbGVjdGlvbnMiLCJ0YWJsZUNvbHVtbnNOYW1lcyIsInNxbCIsInJhdyIsInZhbCIsIm1hdGNoZWRSZWxhdGlvbiIsInJlbGF0aW9uIiwidW5kZWZpbmVkIiwiQVBJRXJyb3IiLCJwYXJlbnRUYWJsZSIsInRhcmdldFRhYmxlIl0sIm1hcHBpbmdzIjoiQUFBQSxvQ0FBb0M7Ozs7K0JBNkR2QkE7OztlQUFBQTs7OzRCQXhEc0I7d0JBQ2I7d0JBQ0c7dUJBQ29COzJCQUNQO29FQUNkO3NCQUNHOzs7Ozs7QUFrRHBCLE1BQU1BLHlCQUF5QixDQUFDLEVBQ3JDQyxPQUFPLEVBQ1BDLFVBQVUsRUFDVkMsY0FBYyxFQUNkQyxlQUFlLEVBQUUsRUFDakJDLGdCQUFnQkMsc0JBQXNCLEVBQ3RDQyxjQUFjLEVBQUUsRUFDaEJDLE1BQU0sRUFDTkMsV0FBVyxFQUNYQyxLQUFLLEVBQ0xDLFFBQVFDLGNBQWMsRUFDdEJDLGNBQWNDLGdCQUFnQixFQUM5QkMsZUFBZUMscUJBQXFCLEVB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
@@ -12,8 +12,8 @@ const _drizzleorm = require("drizzle-orm");
12
12
  const _errors = require("payload/errors");
13
13
  const _types = require("payload/types");
14
14
  const _buildAndOrConditions = require("./buildAndOrConditions");
15
- const _createJSONQuery = require("./createJSONQuery");
16
15
  const _convertPathToJSONTraversal = require("./createJSONQuery/convertPathToJSONTraversal");
16
+ const _createJSONQuery = require("./createJSONQuery");
17
17
  const _getTableColumnFromPath = require("./getTableColumnFromPath");
18
18
  const _operatorMap = require("./operatorMap");
19
19
  const _sanitizeQueryValue = require("./sanitizeQueryValue");
@@ -189,4 +189,4 @@ async function parseParams({ adapter, fields, joinAliases, joins, locale, select
189
189
  return result;
190
190
  }
191
191
 
192
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9xdWVyaWVzL3BhcnNlUGFyYW1zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWF3YWl0LWluLWxvb3AgKi9cbmltcG9ydCB0eXBlIHsgU1FMIH0gZnJvbSAnZHJpenpsZS1vcm0nXG5pbXBvcnQgdHlwZSB7IEZpZWxkLCBPcGVyYXRvciwgV2hlcmUgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgeyBhbmQsIGlsaWtlLCBpc05vdE51bGwsIGlzTnVsbCwgbmUsIG5vdEluQXJyYXksIG9yLCBzcWwgfSBmcm9tICdkcml6emxlLW9ybSdcbmltcG9ydCB7IFF1ZXJ5RXJyb3IgfSBmcm9tICdwYXlsb2FkL2Vycm9ycydcbmltcG9ydCB7IHZhbGlkT3BlcmF0b3JzIH0gZnJvbSAncGF5bG9hZC90eXBlcydcblxuaW1wb3J0IHR5cGUgeyBHZW5lcmljQ29sdW1uLCBQb3N0Z3Jlc0FkYXB0ZXIgfSBmcm9tICcuLi90eXBlcydcbmltcG9ydCB0eXBlIHsgQnVpbGRRdWVyeUpvaW5BbGlhc2VzLCBCdWlsZFF1ZXJ5Sm9pbnMgfSBmcm9tICcuL2J1aWxkUXVlcnknXG5cbmltcG9ydCB7IGJ1aWxkQW5kT3JDb25kaXRpb25zIH0gZnJvbSAnLi9idWlsZEFuZE9yQ29uZGl0aW9ucydcbmltcG9ydCB7IGNyZWF0ZUpTT05RdWVyeSB9IGZyb20gJy4vY3JlYXRlSlNPTlF1ZXJ5J1xuaW1wb3J0IHsgY29udmVydFBhdGhUb0pTT05UcmF2ZXJzYWwgfSBmcm9tICcuL2NyZWF0ZUpTT05RdWVyeS9jb252ZXJ0UGF0aFRvSlNPTlRyYXZlcnNhbCdcbmltcG9ydCB7IGdldFRhYmxlQ29sdW1uRnJvbVBhdGggfSBmcm9tICcuL2dldFRhYmxlQ29sdW1uRnJvbVBhdGgnXG5pbXBvcnQgeyBvcGVyYXRvck1hcCB9IGZyb20gJy4vb3BlcmF0b3JNYXAnXG5pbXBvcnQgeyBzYW5pdGl6ZVF1ZXJ5VmFsdWUgfSBmcm9tICcuL3Nhbml0aXplUXVlcnlWYWx1ZSdcblxudHlwZSBBcmdzID0ge1xuICBhZGFwdGVyOiBQb3N0Z3Jlc0FkYXB0ZXJcbiAgZmllbGRzOiBGaWVsZFtdXG4gIGpvaW5BbGlhc2VzOiBCdWlsZFF1ZXJ5Sm9pbkFsaWFzZXNcbiAgam9pbnM6IEJ1aWxkUXVlcnlKb2luc1xuICBsb2NhbGU6IHN0cmluZ1xuICBzZWxlY3RGaWVsZHM6IFJlY29yZDxzdHJpbmcsIEdlbmVyaWNDb2x1bW4+XG4gIHRhYmxlTmFtZTogc3RyaW5nXG4gIHdoZXJlOiBXaGVyZVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcGFyc2VQYXJhbXMoe1xuICBhZGFwdGVyLFxuICBmaWVsZHMsXG4gIGpvaW5BbGlhc2VzLFxuICBqb2lucyxcbiAgbG9jYWxlLFxuICBzZWxlY3RGaWVsZHMsXG4gIHRhYmxlTmFtZSxcbiAgd2hlcmUsXG59OiBBcmdzKTogUHJvbWlzZTxTUUw+IHtcbiAgbGV0IHJlc3VsdDogU1FMXG4gIGNvbnN0IGNvbnN0cmFpbnRzOiBTUUxbXSA9IFtdXG5cbiAgaWYgKHR5cGVvZiB3aGVyZSA9PT0gJ29iamVjdCcgJiYgT2JqZWN0LmtleXMod2hlcmUpLmxlbmd0aCA+IDApIHtcbiAgICAvLyBXZSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGUgd2hlcmVLZXkgaXMgYW4gQU5ELCBPUiwgb3IgYSBzY2hlbWEgcGF0aFxuICAgIGZvciAoY29uc3QgcmVsYXRpb25PclBhdGggb2YgT2JqZWN0LmtleXMod2hlcmUpKSB7XG4gICAgICBpZiAocmVsYXRpb25PclBhdGgpIHtcbiAgICAgICAgY29uc3QgY29uZGl0aW9uID0gd2hlcmVbcmVsYXRpb25PclBhdGhdXG4gICAgICAgIGxldCBjb25kaXRpb25PcGVyYXRvcjogJ2FuZCcgfCAnb3InXG4gICAgICAgIGlmIChyZWxhdGlvbk9yUGF0aC50b0xvd2VyQ2FzZSgpID09PSAnYW5kJykge1xuICAgICAgICAgIGNvbmRpdGlvbk9wZXJhdG9yID0gJ2FuZCdcbiAgICAgICAgfSBlbHNlIGlmIChyZWxhdGlvbk9yUGF0aC50b0xvd2VyQ2FzZSgpID09PSAnb3InKSB7XG4gICAgICAgICAgY29uZGl0aW9uT3BlcmF0b3IgPSAnb3InXG4gICAgICAgIH1cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY29uZGl0aW9uKSkge1xuICAgICAgICAgIGNvbnN0IGJ1aWx0Q29uZGl0aW9ucyA9IGF3YWl0IGJ1aWxkQW5kT3JDb25kaXRpb25zKHtcbiAgICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgICBmaWVsZHMsXG4gICAgICAgICAgICBqb2luQWxpYXNlcyxcbiAgICAgICAgICAgIGpvaW5zLFxuICAgICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgICAgc2VsZWN0RmllbGRzLFxuICAgICAgICAgICAgdGFibGVOYW1lLFxuICAgICAgICAgICAgd2hlcmU6IGNvbmRpdGlvbixcbiAgICAgICAgICB9KVxuICAgICAgICAgIGlmIChidWlsdENvbmRpdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmVzdWx0ID0gb3BlcmF0b3JNYXBbY29uZGl0aW9uT3BlcmF0b3JdKC4uLmJ1aWx0Q29uZGl0aW9ucylcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gSXQncyBhIHBhdGggLSBhbmQgdGhlcmUgY2FuIGJlIG11bHRpcGxlIGNvbXBhcmlzb25zIG9uIGEgc2luZ2xlIHBhdGguXG4gICAgICAgICAgLy8gRm9yIGV4YW1wbGUgLSB0aXRsZSBsaWtlICd0ZXN0JyBhbmQgdGl0bGUgbm90IGVxdWFsIHRvICd0ZXN0ZXInXG4gICAgICAgICAgLy8gU28gd2UgbmVlZCB0byBsb29wIG9uIGtleXMgYWdhaW4gaGVyZSB0byBoYW5kbGUgZWFjaCBvcGVyYXRvciBpbmRlcGVuZGVudGx5XG4gICAgICAgICAgY29uc3QgcGF0aE9wZXJhdG9ycyA9IHdoZXJlW3JlbGF0aW9uT3JQYXRoXVxuICAgICAgICAgIGlmICh0eXBlb2YgcGF0aE9wZXJhdG9ycyA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qgb3BlcmF0b3Igb2YgT2JqZWN0LmtleXMocGF0aE9wZXJhdG9ycykpIHtcbiAgICAgICAgICAgICAgaWYgKHZhbGlkT3BlcmF0b3JzLmluY2x1ZGVzKG9wZXJhdG9yIGFzIE9wZXJhdG9yKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbCA9IHdoZXJlW3JlbGF0aW9uT3JQYXRoXVtvcGVyYXRvcl1cbiAgICAgICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgICBjb2x1bW5OYW1lLFxuICAgICAgICAgICAgICAgICAgY29uc3RyYWludHM6IHF1ZXJ5Q29uc3RyYWludHMsXG4gICAgICAgICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgICAgICAgIGdldE5vdE51bGxDb2x1bW5CeVZhbHVlLFxuICAgICAgICAgICAgICAgICAgcGF0aFNlZ21lbnRzLFxuICAgICAgICAgICAgICAgICAgcmF3Q29sdW1uLFxuICAgICAgICAgICAgICAgICAgdGFibGUsXG4gICAgICAgICAgICAgICAgfSA9IGdldFRhYmxlQ29sdW1uRnJvbVBhdGgoe1xuICAgICAgICAgICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICAgICAgICAgIGNvbGxlY3Rpb25QYXRoOiByZWxhdGlvbk9yUGF0aCxcbiAgICAgICAgICAgICAgICAgIGZpZWxkcyxcbiAgICAgICAgICAgICAgICAgIGpvaW5BbGlhc2VzLFxuICAgICAgICAgICAgICAgICAgam9pbnMsXG4gICAgICAgICAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgICAgICAgICBwYXRoU2VnbWVudHM6IHJlbGF0aW9uT3JQYXRoLnJlcGxhY2UoL19fL2csICcuJykuc3BsaXQoJy4nKSxcbiAgICAgICAgICAgICAgICAgIHNlbGVjdEZpZWxkcyxcbiAgICAgICAgICAgICAgICAgIHRhYmxlTmFtZSxcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWwsXG4gICAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgICAgIHF1ZXJ5Q29uc3RyYWludHMuZm9yRWFjaCgoeyBjb2x1bW5OYW1lOiBjb2wsIHRhYmxlOiBjb25zdHJhaW50VGFibGUsIHZhbHVlIH0pID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLmluZGV4T2YoJyUnKSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0cmFpbnRzLnB1c2gob3BlcmF0b3JNYXAubGlrZShjb25zdHJhaW50VGFibGVbY29sXSwgdmFsdWUpKVxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3RyYWludHMucHVzaChvcGVyYXRvck1hcC5lcXVhbHMoY29uc3RyYWludFRhYmxlW2NvbF0sIHZhbHVlKSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgWydqc29uJywgJ3JpY2hUZXh0J10uaW5jbHVkZXMoZmllbGQudHlwZSkgJiZcbiAgICAgICAgICAgICAgICAgIEFycmF5LmlzQXJyYXkocGF0aFNlZ21lbnRzKSAmJlxuICAgICAgICAgICAgICAgICAgcGF0aFNlZ21lbnRzLmxlbmd0aCA+IDFcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHNlZ21lbnRzID0gcGF0aFNlZ21lbnRzLnNsaWNlKDEpXG4gICAgICAgICAgICAgICAgICBzZWdtZW50cy51bnNoaWZ0KHRhYmxlW2NvbHVtbk5hbWVdLm5hbWUpXG5cbiAgICAgICAgICAgICAgICAgIGlmIChmaWVsZC50eXBlID09PSAncmljaFRleHQnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGpzb25RdWVyeSA9IGNyZWF0ZUpTT05RdWVyeSh7XG4gICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgcGF0aFNlZ21lbnRzOiBzZWdtZW50cyxcbiAgICAgICAgICAgICAgICAgICAgICB0cmVhdEFzQXJyYXk6IFsnY2hpbGRyZW4nXSxcbiAgICAgICAgICAgICAgICAgICAgICB0cmVhdFJvb3RBc0FycmF5OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWwsXG4gICAgICAgICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3RyYWludHMucHVzaChzcWwucmF3KGpzb25RdWVyeSkpXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIGNvbnN0IGpzb25RdWVyeSA9IGNvbnZlcnRQYXRoVG9KU09OVHJhdmVyc2FsKHBhdGhTZWdtZW50cylcbiAgICAgICAgICAgICAgICAgIGNvbnN0IG9wZXJhdG9yS2V5cyA9IHtcbiAgICAgICAgICAgICAgICAgICAgY29udGFpbnM6IHsgb3BlcmF0b3I6ICdpbGlrZScsIHdpbGRjYXJkOiAnJScgfSxcbiAgICAgICAgICAgICAgICAgICAgZXF1YWxzOiB7IG9wZXJhdG9yOiAnPScsIHdpbGRjYXJkOiAnJyB9LFxuICAgICAgICAgICAgICAgICAgICBleGlzdHM6IHsgb3BlcmF0b3I6IHZhbCA9PT0gdHJ1ZSA/ICdpcyBub3QgbnVsbCcgOiAnaXMgbnVsbCcgfSxcbiAgICAgICAgICAgICAgICAgICAgbGlrZTogeyBvcGVyYXRvcjogJ2xpa2UnLCB3aWxkY2FyZDogJyUnIH0sXG4gICAgICAgICAgICAgICAgICAgIG5vdF9lcXVhbHM6IHsgb3BlcmF0b3I6ICc8PicsIHdpbGRjYXJkOiAnJyB9LFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgbGV0IGZvcm1hdHRlZFZhbHVlID0gYCcke29wZXJhdG9yS2V5c1tvcGVyYXRvcl0ud2lsZGNhcmR9JHt2YWx9JHtvcGVyYXRvcktleXNbb3BlcmF0b3JdLndpbGRjYXJkfSdgXG5cbiAgICAgICAgICAgICAgICAgIGlmIChvcGVyYXRvciA9PT0gJ2V4aXN0cycpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkVmFsdWUgPSAnJ1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICBjb25zdHJhaW50cy5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBzcWwucmF3KFxuICAgICAgICAgICAgICAgICAgICAgIGAke3RhYmxlW2NvbHVtbk5hbWVdLm5hbWV9JHtqc29uUXVlcnl9ICR7b3BlcmF0b3JLZXlzW29wZXJhdG9yXS5vcGVyYXRvcn0gJHtmb3JtYXR0ZWRWYWx1ZX1gLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChnZXROb3ROdWxsQ29sdW1uQnlWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgY29uc3QgY29sdW1uTmFtZSA9IGdldE5vdE51bGxDb2x1bW5CeVZhbHVlKHZhbClcbiAgICAgICAgICAgICAgICAgIGlmIChjb2x1bW5OYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0cmFpbnRzLnB1c2goaXNOb3ROdWxsKHRhYmxlW2NvbHVtbk5hbWVdKSlcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBRdWVyeUVycm9yKFt7IHBhdGg6IHJlbGF0aW9uT3JQYXRoIH1dKVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAob3BlcmF0b3IgPT09ICdsaWtlJykge1xuICAgICAgICAgICAgICAgICAgY29uc3RyYWludHMucHVzaChcbiAgICAgICAgICAgICAgICAgICAgYW5kKC4uLnZhbC5zcGxpdCgnICcpLm1hcCgod29yZCkgPT4gaWxpa2UodGFibGVbY29sdW1uTmFtZV0sIGAlJHt3b3JkfSVgKSkpLFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBzYW5pdGl6ZWRRdWVyeVZhbHVlID0gc2FuaXRpemVRdWVyeVZhbHVlKHtcbiAgICAgICAgICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgICAgICAgIG9wZXJhdG9yLFxuICAgICAgICAgICAgICAgICAgcmVsYXRpb25PclBhdGgsXG4gICAgICAgICAgICAgICAgICB2YWwsXG4gICAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgICAgIGlmIChzYW5pdGl6ZWRRdWVyeVZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IHsgb3BlcmF0b3I6IHF1ZXJ5T3BlcmF0b3IsIHZhbHVlOiBxdWVyeVZhbHVlIH0gPSBzYW5pdGl6ZWRRdWVyeVZhbHVlXG5cbiAgICAgICAgICAgICAgICBpZiAocXVlcnlPcGVyYXRvciA9PT0gJ25vdF9lcXVhbHMnICYmIHF1ZXJ5VmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0cmFpbnRzLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG9yKFxuICAgICAgICAgICAgICAgICAgICAgIGlzTnVsbChyYXdDb2x1bW4gfHwgdGFibGVbY29sdW1uTmFtZV0pLFxuICAgICAgICAgICAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbiAgICAgICAgICAgICAgICAgICAgICBuZTxhbnk+KHJhd0NvbHVtbiB8fCB0YWJsZVtjb2x1bW5OYW1lXSwgcXVlcnlWYWx1ZSksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgIChmaWVsZC50eXBlID09PSAncmVsYXRpb25zaGlwJyB8fCBmaWVsZC50eXBlID09PSAndXBsb2FkJykgJiZcbiAgICAgICAgICAgICAgICAgIEFycmF5LmlzQXJyYXkocXVlcnlWYWx1ZSkgJiZcbiAgICAgICAgICAgICAgICAgIG9wZXJhdG9yID09PSAnbm90X2luJ1xuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgY29uc3RyYWludHMucHVzaChcbiAgICAgICAgICAgICAgICAgICAgc3FsYCR7bm90SW5BcnJheSh0YWJsZVtjb2x1bW5OYW1lXSwgcXVlcnlWYWx1ZSl9IE9SXG4gICAgICAgICAgICAgICAgICAgICR7dGFibGVbY29sdW1uTmFtZV19XG4gICAgICAgICAgICAgICAgICAgIElTXG4gICAgICAgICAgICAgICAgICAgIE5VTExgLFxuICAgICAgICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChvcGVyYXRvciA9PT0gJ2VxdWFscycgJiYgcXVlcnlWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgY29uc3RyYWludHMucHVzaChpc051bGwocmF3Q29sdW1uIHx8IHRhYmxlW2NvbHVtbk5hbWVdKSlcbiAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKG9wZXJhdG9yID09PSAnbm90X2VxdWFscycgJiYgcXVlcnlWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgY29uc3RyYWludHMucHVzaChpc05vdE51bGwocmF3Q29sdW1uIHx8IHRhYmxlW2NvbHVtbk5hbWVdKSlcbiAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3RyYWludHMucHVzaChcbiAgICAgICAgICAgICAgICAgIG9wZXJhdG9yTWFwW3F1ZXJ5T3BlcmF0b3JdKHJhd0NvbHVtbiB8fCB0YWJsZVtjb2x1bW5OYW1lXSwgcXVlcnlWYWx1ZSksXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmIChjb25zdHJhaW50cy5sZW5ndGggPiAwKSB7XG4gICAgaWYgKHJlc3VsdCkge1xuICAgICAgcmVzdWx0ID0gYW5kKHJlc3VsdCwgLi4uY29uc3RyYWludHMpXG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdCA9IGFuZCguLi5jb25zdHJhaW50cylcbiAgICB9XG4gIH1cbiAgaWYgKGNvbnN0cmFpbnRzLmxlbmd0aCA9PT0gMSAmJiAhcmVzdWx0KSB7XG4gICAgO1tyZXN1bHRdID0gY29uc3RyYWludHNcbiAgfVxuXG4gIHJldHVybiByZXN1bHRcbn1cbiJdLCJuYW1lcyI6WyJwYXJzZVBhcmFtcyIsImFkYXB0ZXIiLCJmaWVsZHMiLCJqb2luQWxpYXNlcyIsImpvaW5zIiwibG9jYWxlIiwic2VsZWN0RmllbGRzIiwidGFibGVOYW1lIiwid2hlcmUiLCJyZXN1bHQiLCJjb25zdHJhaW50cyIsIk9iamVjdCIsImtleXMiLCJsZW5ndGgiLCJyZWxhdGlvbk9yUGF0aCIsImNvbmRpdGlvbiIsImNvbmRpdGlvbk9wZXJhdG9yIiwidG9Mb3dlckNhc2UiLCJBcnJheSIsImlzQXJyYXkiLCJidWlsdENvbmRpdGlvbnMiLCJidWlsZEFuZE9yQ29uZGl0aW9ucyIsIm9wZXJhdG9yTWFwIiwicGF0aE9wZXJhdG9ycyIsIm9wZXJhdG9yIiwidmFsaWRPcGVyYXRvcnMiLCJpbmNsdWRlcyIsInZhbCIsImNvbHVtbk5hbWUiLCJxdWVyeUNvbnN0cmFpbnRzIiwiZmllbGQiLCJnZXROb3ROdWxsQ29sdW1uQnlWYWx1ZSIsInBhdGhTZWdtZW50cyIsInJhd0NvbHVtbiIsInRhYmxlIiwiZ2V0VGFibGVDb2x1bW5Gcm9tUGF0aCIsImNvbGxlY3Rpb25QYXRoIiwicmVwbGFjZSIsInNwbGl0IiwidmFsdWUiLCJmb3JFYWNoIiwiY29sIiwiY29uc3RyYWludFRhYmxlIiwiaW5kZXhPZiIsInB1c2giLCJsaWtlIiwiZXF1YWxzIiwidHlwZSIsInNlZ21lbnRzIiwic2xpY2UiLCJ1bnNoaWZ0IiwibmFtZSIsImpzb25RdWVyeSIsImNyZWF0ZUpTT05RdWVyeSIsInRyZWF0QXNBcnJheSIsInRyZWF0Um9vdEFzQXJyYXkiLCJzcWwiLCJyYXciLCJjb252ZXJ0UGF0aFRvSlNPTlRyYXZlcnNhbCIsIm9wZXJhdG9yS2V5cyIsImNvbnRhaW5zIiwid2lsZGNhcmQiLCJleGlzdHMiLCJub3RfZXF1YWxzIiwiZm9ybWF0dGVkVmFsdWUiLCJpc05vdE51bGwiLCJRdWVyeUVycm9yIiwicGF0aCIsImFuZCIsIm1hcCIsIndvcmQiLCJpbGlrZSIsInNhbml0aXplZFF1ZXJ5VmFsdWUiLCJzYW5pdGl6ZVF1ZXJ5VmFsdWUiLCJxdWVyeU9wZXJhdG9yIiwicXVlcnlWYWx1ZSIsIm9yIiwiaXNOdWxsIiwibmUiLCJub3RJbkFycmF5Il0sIm1hcHBpbmdzIjoiQUFBQSxtQ0FBbUM7Ozs7K0JBNkJiQTs7O2VBQUFBOzs7NEJBekJpRDt3QkFDNUM7dUJBQ0k7c0NBS007aUNBQ0w7NENBQ1c7d0NBQ0o7NkJBQ1g7b0NBQ087QUFhNUIsZUFBZUEsWUFBWSxFQUNoQ0MsT0FBTyxFQUNQQyxNQUFNLEVBQ05DLFdBQVcsRUFDWEMsS0FBSyxFQUNMQyxNQUFNLEVBQ05DLFlBQVksRUFDWkMsU0FBUyxFQUNUQyxLQUFLLEVBQ0E7SUFDTCxJQUFJQztJQUNKLE1BQU1DLGNBQXFCLEVBQUU7SUFFN0Is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
192
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9xdWVyaWVzL3BhcnNlUGFyYW1zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWF3YWl0LWluLWxvb3AgKi9cbmltcG9ydCB0eXBlIHsgU1FMIH0gZnJvbSAnZHJpenpsZS1vcm0nXG5pbXBvcnQgdHlwZSB7IEZpZWxkLCBPcGVyYXRvciwgV2hlcmUgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgeyBhbmQsIGlsaWtlLCBpc05vdE51bGwsIGlzTnVsbCwgbmUsIG5vdEluQXJyYXksIG9yLCBzcWwgfSBmcm9tICdkcml6emxlLW9ybSdcbmltcG9ydCB7IFF1ZXJ5RXJyb3IgfSBmcm9tICdwYXlsb2FkL2Vycm9ycydcbmltcG9ydCB7IHZhbGlkT3BlcmF0b3JzIH0gZnJvbSAncGF5bG9hZC90eXBlcydcblxuaW1wb3J0IHR5cGUgeyBHZW5lcmljQ29sdW1uLCBQb3N0Z3Jlc0FkYXB0ZXIgfSBmcm9tICcuLi90eXBlcydcbmltcG9ydCB0eXBlIHsgQnVpbGRRdWVyeUpvaW5BbGlhc2VzLCBCdWlsZFF1ZXJ5Sm9pbnMgfSBmcm9tICcuL2J1aWxkUXVlcnknXG5cbmltcG9ydCB7IGJ1aWxkQW5kT3JDb25kaXRpb25zIH0gZnJvbSAnLi9idWlsZEFuZE9yQ29uZGl0aW9ucydcbmltcG9ydCB7IGNvbnZlcnRQYXRoVG9KU09OVHJhdmVyc2FsIH0gZnJvbSAnLi9jcmVhdGVKU09OUXVlcnkvY29udmVydFBhdGhUb0pTT05UcmF2ZXJzYWwnXG5pbXBvcnQgeyBjcmVhdGVKU09OUXVlcnkgfSBmcm9tICcuL2NyZWF0ZUpTT05RdWVyeSdcbmltcG9ydCB7IGdldFRhYmxlQ29sdW1uRnJvbVBhdGggfSBmcm9tICcuL2dldFRhYmxlQ29sdW1uRnJvbVBhdGgnXG5pbXBvcnQgeyBvcGVyYXRvck1hcCB9IGZyb20gJy4vb3BlcmF0b3JNYXAnXG5pbXBvcnQgeyBzYW5pdGl6ZVF1ZXJ5VmFsdWUgfSBmcm9tICcuL3Nhbml0aXplUXVlcnlWYWx1ZSdcblxudHlwZSBBcmdzID0ge1xuICBhZGFwdGVyOiBQb3N0Z3Jlc0FkYXB0ZXJcbiAgZmllbGRzOiBGaWVsZFtdXG4gIGpvaW5BbGlhc2VzOiBCdWlsZFF1ZXJ5Sm9pbkFsaWFzZXNcbiAgam9pbnM6IEJ1aWxkUXVlcnlKb2luc1xuICBsb2NhbGU6IHN0cmluZ1xuICBzZWxlY3RGaWVsZHM6IFJlY29yZDxzdHJpbmcsIEdlbmVyaWNDb2x1bW4+XG4gIHRhYmxlTmFtZTogc3RyaW5nXG4gIHdoZXJlOiBXaGVyZVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcGFyc2VQYXJhbXMoe1xuICBhZGFwdGVyLFxuICBmaWVsZHMsXG4gIGpvaW5BbGlhc2VzLFxuICBqb2lucyxcbiAgbG9jYWxlLFxuICBzZWxlY3RGaWVsZHMsXG4gIHRhYmxlTmFtZSxcbiAgd2hlcmUsXG59OiBBcmdzKTogUHJvbWlzZTxTUUw+IHtcbiAgbGV0IHJlc3VsdDogU1FMXG4gIGNvbnN0IGNvbnN0cmFpbnRzOiBTUUxbXSA9IFtdXG5cbiAgaWYgKHR5cGVvZiB3aGVyZSA9PT0gJ29iamVjdCcgJiYgT2JqZWN0LmtleXMod2hlcmUpLmxlbmd0aCA+IDApIHtcbiAgICAvLyBXZSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGUgd2hlcmVLZXkgaXMgYW4gQU5ELCBPUiwgb3IgYSBzY2hlbWEgcGF0aFxuICAgIGZvciAoY29uc3QgcmVsYXRpb25PclBhdGggb2YgT2JqZWN0LmtleXMod2hlcmUpKSB7XG4gICAgICBpZiAocmVsYXRpb25PclBhdGgpIHtcbiAgICAgICAgY29uc3QgY29uZGl0aW9uID0gd2hlcmVbcmVsYXRpb25PclBhdGhdXG4gICAgICAgIGxldCBjb25kaXRpb25PcGVyYXRvcjogJ2FuZCcgfCAnb3InXG4gICAgICAgIGlmIChyZWxhdGlvbk9yUGF0aC50b0xvd2VyQ2FzZSgpID09PSAnYW5kJykge1xuICAgICAgICAgIGNvbmRpdGlvbk9wZXJhdG9yID0gJ2FuZCdcbiAgICAgICAgfSBlbHNlIGlmIChyZWxhdGlvbk9yUGF0aC50b0xvd2VyQ2FzZSgpID09PSAnb3InKSB7XG4gICAgICAgICAgY29uZGl0aW9uT3BlcmF0b3IgPSAnb3InXG4gICAgICAgIH1cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY29uZGl0aW9uKSkge1xuICAgICAgICAgIGNvbnN0IGJ1aWx0Q29uZGl0aW9ucyA9IGF3YWl0IGJ1aWxkQW5kT3JDb25kaXRpb25zKHtcbiAgICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgICBmaWVsZHMsXG4gICAgICAgICAgICBqb2luQWxpYXNlcyxcbiAgICAgICAgICAgIGpvaW5zLFxuICAgICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgICAgc2VsZWN0RmllbGRzLFxuICAgICAgICAgICAgdGFibGVOYW1lLFxuICAgICAgICAgICAgd2hlcmU6IGNvbmRpdGlvbixcbiAgICAgICAgICB9KVxuICAgICAgICAgIGlmIChidWlsdENvbmRpdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmVzdWx0ID0gb3BlcmF0b3JNYXBbY29uZGl0aW9uT3BlcmF0b3JdKC4uLmJ1aWx0Q29uZGl0aW9ucylcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gSXQncyBhIHBhdGggLSBhbmQgdGhlcmUgY2FuIGJlIG11bHRpcGxlIGNvbXBhcmlzb25zIG9uIGEgc2luZ2xlIHBhdGguXG4gICAgICAgICAgLy8gRm9yIGV4YW1wbGUgLSB0aXRsZSBsaWtlICd0ZXN0JyBhbmQgdGl0bGUgbm90IGVxdWFsIHRvICd0ZXN0ZXInXG4gICAgICAgICAgLy8gU28gd2UgbmVlZCB0byBsb29wIG9uIGtleXMgYWdhaW4gaGVyZSB0byBoYW5kbGUgZWFjaCBvcGVyYXRvciBpbmRlcGVuZGVudGx5XG4gICAgICAgICAgY29uc3QgcGF0aE9wZXJhdG9ycyA9IHdoZXJlW3JlbGF0aW9uT3JQYXRoXVxuICAgICAgICAgIGlmICh0eXBlb2YgcGF0aE9wZXJhdG9ycyA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qgb3BlcmF0b3Igb2YgT2JqZWN0LmtleXMocGF0aE9wZXJhdG9ycykpIHtcbiAgICAgICAgICAgICAgaWYgKHZhbGlkT3BlcmF0b3JzLmluY2x1ZGVzKG9wZXJhdG9yIGFzIE9wZXJhdG9yKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbCA9IHdoZXJlW3JlbGF0aW9uT3JQYXRoXVtvcGVyYXRvcl1cbiAgICAgICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgICBjb2x1bW5OYW1lLFxuICAgICAgICAgICAgICAgICAgY29uc3RyYWludHM6IHF1ZXJ5Q29uc3RyYWludHMsXG4gICAgICAgICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgICAgICAgIGdldE5vdE51bGxDb2x1bW5CeVZhbHVlLFxuICAgICAgICAgICAgICAgICAgcGF0aFNlZ21lbnRzLFxuICAgICAgICAgICAgICAgICAgcmF3Q29sdW1uLFxuICAgICAgICAgICAgICAgICAgdGFibGUsXG4gICAgICAgICAgICAgICAgfSA9IGdldFRhYmxlQ29sdW1uRnJvbVBhdGgoe1xuICAgICAgICAgICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICAgICAgICAgIGNvbGxlY3Rpb25QYXRoOiByZWxhdGlvbk9yUGF0aCxcbiAgICAgICAgICAgICAgICAgIGZpZWxkcyxcbiAgICAgICAgICAgICAgICAgIGpvaW5BbGlhc2VzLFxuICAgICAgICAgICAgICAgICAgam9pbnMsXG4gICAgICAgICAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgICAgICAgICBwYXRoU2VnbWVudHM6IHJlbGF0aW9uT3JQYXRoLnJlcGxhY2UoL19fL2csICcuJykuc3BsaXQoJy4nKSxcbiAgICAgICAgICAgICAgICAgIHNlbGVjdEZpZWxkcyxcbiAgICAgICAgICAgICAgICAgIHRhYmxlTmFtZSxcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWwsXG4gICAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgICAgIHF1ZXJ5Q29uc3RyYWludHMuZm9yRWFjaCgoeyBjb2x1bW5OYW1lOiBjb2wsIHRhYmxlOiBjb25zdHJhaW50VGFibGUsIHZhbHVlIH0pID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLmluZGV4T2YoJyUnKSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0cmFpbnRzLnB1c2gob3BlcmF0b3JNYXAubGlrZShjb25zdHJhaW50VGFibGVbY29sXSwgdmFsdWUpKVxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3RyYWludHMucHVzaChvcGVyYXRvck1hcC5lcXVhbHMoY29uc3RyYWludFRhYmxlW2NvbF0sIHZhbHVlKSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgWydqc29uJywgJ3JpY2hUZXh0J10uaW5jbHVkZXMoZmllbGQudHlwZSkgJiZcbiAgICAgICAgICAgICAgICAgIEFycmF5LmlzQXJyYXkocGF0aFNlZ21lbnRzKSAmJlxuICAgICAgICAgICAgICAgICAgcGF0aFNlZ21lbnRzLmxlbmd0aCA+IDFcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHNlZ21lbnRzID0gcGF0aFNlZ21lbnRzLnNsaWNlKDEpXG4gICAgICAgICAgICAgICAgICBzZWdtZW50cy51bnNoaWZ0KHRhYmxlW2NvbHVtbk5hbWVdLm5hbWUpXG5cbiAgICAgICAgICAgICAgICAgIGlmIChmaWVsZC50eXBlID09PSAncmljaFRleHQnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGpzb25RdWVyeSA9IGNyZWF0ZUpTT05RdWVyeSh7XG4gICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgcGF0aFNlZ21lbnRzOiBzZWdtZW50cyxcbiAgICAgICAgICAgICAgICAgICAgICB0cmVhdEFzQXJyYXk6IFsnY2hpbGRyZW4nXSxcbiAgICAgICAgICAgICAgICAgICAgICB0cmVhdFJvb3RBc0FycmF5OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWwsXG4gICAgICAgICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3RyYWludHMucHVzaChzcWwucmF3KGpzb25RdWVyeSkpXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIGNvbnN0IGpzb25RdWVyeSA9IGNvbnZlcnRQYXRoVG9KU09OVHJhdmVyc2FsKHBhdGhTZWdtZW50cylcbiAgICAgICAgICAgICAgICAgIGNvbnN0IG9wZXJhdG9yS2V5cyA9IHtcbiAgICAgICAgICAgICAgICAgICAgY29udGFpbnM6IHsgb3BlcmF0b3I6ICdpbGlrZScsIHdpbGRjYXJkOiAnJScgfSxcbiAgICAgICAgICAgICAgICAgICAgZXF1YWxzOiB7IG9wZXJhdG9yOiAnPScsIHdpbGRjYXJkOiAnJyB9LFxuICAgICAgICAgICAgICAgICAgICBleGlzdHM6IHsgb3BlcmF0b3I6IHZhbCA9PT0gdHJ1ZSA/ICdpcyBub3QgbnVsbCcgOiAnaXMgbnVsbCcgfSxcbiAgICAgICAgICAgICAgICAgICAgbGlrZTogeyBvcGVyYXRvcjogJ2xpa2UnLCB3aWxkY2FyZDogJyUnIH0sXG4gICAgICAgICAgICAgICAgICAgIG5vdF9lcXVhbHM6IHsgb3BlcmF0b3I6ICc8PicsIHdpbGRjYXJkOiAnJyB9LFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgbGV0IGZvcm1hdHRlZFZhbHVlID0gYCcke29wZXJhdG9yS2V5c1tvcGVyYXRvcl0ud2lsZGNhcmR9JHt2YWx9JHtvcGVyYXRvcktleXNbb3BlcmF0b3JdLndpbGRjYXJkfSdgXG5cbiAgICAgICAgICAgICAgICAgIGlmIChvcGVyYXRvciA9PT0gJ2V4aXN0cycpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkVmFsdWUgPSAnJ1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICBjb25zdHJhaW50cy5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBzcWwucmF3KFxuICAgICAgICAgICAgICAgICAgICAgIGAke3RhYmxlW2NvbHVtbk5hbWVdLm5hbWV9JHtqc29uUXVlcnl9ICR7b3BlcmF0b3JLZXlzW29wZXJhdG9yXS5vcGVyYXRvcn0gJHtmb3JtYXR0ZWRWYWx1ZX1gLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChnZXROb3ROdWxsQ29sdW1uQnlWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgY29uc3QgY29sdW1uTmFtZSA9IGdldE5vdE51bGxDb2x1bW5CeVZhbHVlKHZhbClcbiAgICAgICAgICAgICAgICAgIGlmIChjb2x1bW5OYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0cmFpbnRzLnB1c2goaXNOb3ROdWxsKHRhYmxlW2NvbHVtbk5hbWVdKSlcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBRdWVyeUVycm9yKFt7IHBhdGg6IHJlbGF0aW9uT3JQYXRoIH1dKVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAob3BlcmF0b3IgPT09ICdsaWtlJykge1xuICAgICAgICAgICAgICAgICAgY29uc3RyYWludHMucHVzaChcbiAgICAgICAgICAgICAgICAgICAgYW5kKC4uLnZhbC5zcGxpdCgnICcpLm1hcCgod29yZCkgPT4gaWxpa2UodGFibGVbY29sdW1uTmFtZV0sIGAlJHt3b3JkfSVgKSkpLFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBzYW5pdGl6ZWRRdWVyeVZhbHVlID0gc2FuaXRpemVRdWVyeVZhbHVlKHtcbiAgICAgICAgICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgICAgICAgIG9wZXJhdG9yLFxuICAgICAgICAgICAgICAgICAgcmVsYXRpb25PclBhdGgsXG4gICAgICAgICAgICAgICAgICB2YWwsXG4gICAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgICAgIGlmIChzYW5pdGl6ZWRRdWVyeVZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IHsgb3BlcmF0b3I6IHF1ZXJ5T3BlcmF0b3IsIHZhbHVlOiBxdWVyeVZhbHVlIH0gPSBzYW5pdGl6ZWRRdWVyeVZhbHVlXG5cbiAgICAgICAgICAgICAgICBpZiAocXVlcnlPcGVyYXRvciA9PT0gJ25vdF9lcXVhbHMnICYmIHF1ZXJ5VmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0cmFpbnRzLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG9yKFxuICAgICAgICAgICAgICAgICAgICAgIGlzTnVsbChyYXdDb2x1bW4gfHwgdGFibGVbY29sdW1uTmFtZV0pLFxuICAgICAgICAgICAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbiAgICAgICAgICAgICAgICAgICAgICBuZTxhbnk+KHJhd0NvbHVtbiB8fCB0YWJsZVtjb2x1bW5OYW1lXSwgcXVlcnlWYWx1ZSksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgIChmaWVsZC50eXBlID09PSAncmVsYXRpb25zaGlwJyB8fCBmaWVsZC50eXBlID09PSAndXBsb2FkJykgJiZcbiAgICAgICAgICAgICAgICAgIEFycmF5LmlzQXJyYXkocXVlcnlWYWx1ZSkgJiZcbiAgICAgICAgICAgICAgICAgIG9wZXJhdG9yID09PSAnbm90X2luJ1xuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgY29uc3RyYWludHMucHVzaChcbiAgICAgICAgICAgICAgICAgICAgc3FsYCR7bm90SW5BcnJheSh0YWJsZVtjb2x1bW5OYW1lXSwgcXVlcnlWYWx1ZSl9IE9SXG4gICAgICAgICAgICAgICAgICAgICR7dGFibGVbY29sdW1uTmFtZV19XG4gICAgICAgICAgICAgICAgICAgIElTXG4gICAgICAgICAgICAgICAgICAgIE5VTExgLFxuICAgICAgICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChvcGVyYXRvciA9PT0gJ2VxdWFscycgJiYgcXVlcnlWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgY29uc3RyYWludHMucHVzaChpc051bGwocmF3Q29sdW1uIHx8IHRhYmxlW2NvbHVtbk5hbWVdKSlcbiAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKG9wZXJhdG9yID09PSAnbm90X2VxdWFscycgJiYgcXVlcnlWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgY29uc3RyYWludHMucHVzaChpc05vdE51bGwocmF3Q29sdW1uIHx8IHRhYmxlW2NvbHVtbk5hbWVdKSlcbiAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3RyYWludHMucHVzaChcbiAgICAgICAgICAgICAgICAgIG9wZXJhdG9yTWFwW3F1ZXJ5T3BlcmF0b3JdKHJhd0NvbHVtbiB8fCB0YWJsZVtjb2x1bW5OYW1lXSwgcXVlcnlWYWx1ZSksXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmIChjb25zdHJhaW50cy5sZW5ndGggPiAwKSB7XG4gICAgaWYgKHJlc3VsdCkge1xuICAgICAgcmVzdWx0ID0gYW5kKHJlc3VsdCwgLi4uY29uc3RyYWludHMpXG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdCA9IGFuZCguLi5jb25zdHJhaW50cylcbiAgICB9XG4gIH1cbiAgaWYgKGNvbnN0cmFpbnRzLmxlbmd0aCA9PT0gMSAmJiAhcmVzdWx0KSB7XG4gICAgO1tyZXN1bHRdID0gY29uc3RyYWludHNcbiAgfVxuXG4gIHJldHVybiByZXN1bHRcbn1cbiJdLCJuYW1lcyI6WyJwYXJzZVBhcmFtcyIsImFkYXB0ZXIiLCJmaWVsZHMiLCJqb2luQWxpYXNlcyIsImpvaW5zIiwibG9jYWxlIiwic2VsZWN0RmllbGRzIiwidGFibGVOYW1lIiwid2hlcmUiLCJyZXN1bHQiLCJjb25zdHJhaW50cyIsIk9iamVjdCIsImtleXMiLCJsZW5ndGgiLCJyZWxhdGlvbk9yUGF0aCIsImNvbmRpdGlvbiIsImNvbmRpdGlvbk9wZXJhdG9yIiwidG9Mb3dlckNhc2UiLCJBcnJheSIsImlzQXJyYXkiLCJidWlsdENvbmRpdGlvbnMiLCJidWlsZEFuZE9yQ29uZGl0aW9ucyIsIm9wZXJhdG9yTWFwIiwicGF0aE9wZXJhdG9ycyIsIm9wZXJhdG9yIiwidmFsaWRPcGVyYXRvcnMiLCJpbmNsdWRlcyIsInZhbCIsImNvbHVtbk5hbWUiLCJxdWVyeUNvbnN0cmFpbnRzIiwiZmllbGQiLCJnZXROb3ROdWxsQ29sdW1uQnlWYWx1ZSIsInBhdGhTZWdtZW50cyIsInJhd0NvbHVtbiIsInRhYmxlIiwiZ2V0VGFibGVDb2x1bW5Gcm9tUGF0aCIsImNvbGxlY3Rpb25QYXRoIiwicmVwbGFjZSIsInNwbGl0IiwidmFsdWUiLCJmb3JFYWNoIiwiY29sIiwiY29uc3RyYWludFRhYmxlIiwiaW5kZXhPZiIsInB1c2giLCJsaWtlIiwiZXF1YWxzIiwidHlwZSIsInNlZ21lbnRzIiwic2xpY2UiLCJ1bnNoaWZ0IiwibmFtZSIsImpzb25RdWVyeSIsImNyZWF0ZUpTT05RdWVyeSIsInRyZWF0QXNBcnJheSIsInRyZWF0Um9vdEFzQXJyYXkiLCJzcWwiLCJyYXciLCJjb252ZXJ0UGF0aFRvSlNPTlRyYXZlcnNhbCIsIm9wZXJhdG9yS2V5cyIsImNvbnRhaW5zIiwid2lsZGNhcmQiLCJleGlzdHMiLCJub3RfZXF1YWxzIiwiZm9ybWF0dGVkVmFsdWUiLCJpc05vdE51bGwiLCJRdWVyeUVycm9yIiwicGF0aCIsImFuZCIsIm1hcCIsIndvcmQiLCJpbGlrZSIsInNhbml0aXplZFF1ZXJ5VmFsdWUiLCJzYW5pdGl6ZVF1ZXJ5VmFsdWUiLCJxdWVyeU9wZXJhdG9yIiwicXVlcnlWYWx1ZSIsIm9yIiwiaXNOdWxsIiwibmUiLCJub3RJbkFycmF5Il0sIm1hcHBpbmdzIjoiQUFBQSxtQ0FBbUM7Ozs7K0JBNkJiQTs7O2VBQUFBOzs7NEJBekJpRDt3QkFDNUM7dUJBQ0k7c0NBS007NENBQ007aUNBQ1g7d0NBQ087NkJBQ1g7b0NBQ087QUFhNUIsZUFBZUEsWUFBWSxFQUNoQ0MsT0FBTyxFQUNQQyxNQUFNLEVBQ05DLFdBQVcsRUFDWEMsS0FBSyxFQUNMQyxNQUFNLEVBQ05DLFlBQVksRUFDWkMsU0FBUyxFQUNUQyxLQUFLLEVBQ0E7SUFDTCxJQUFJQztJQUNKLE1BQU1DLGNBQXFCLEVBQUU7SUFFN0Is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
@@ -1 +1 @@
1
- {"version":3,"file":"queryDrafts.d.ts","sourceRoot":"","sources":["../src/queryDrafts.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,WAAW,EAAkB,MAAM,kBAAkB,CAAA;AAMnE,eAAO,MAAM,WAAW,EAAE,WA+CzB,CAAA"}
1
+ {"version":3,"file":"queryDrafts.d.ts","sourceRoot":"","sources":["../src/queryDrafts.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,WAAW,EAAkB,MAAM,kBAAkB,CAAA;AAQnE,eAAO,MAAM,WAAW,EAAE,WAuCzB,CAAA"}
@@ -10,15 +10,16 @@ Object.defineProperty(exports, "queryDrafts", {
10
10
  });
11
11
  const _database = require("payload/database");
12
12
  const _versions = require("payload/versions");
13
+ const _tosnakecase = /*#__PURE__*/ _interop_require_default(require("to-snake-case"));
13
14
  const _findMany = require("./find/findMany");
14
- const _getTableName = require("./schema/getTableName");
15
+ function _interop_require_default(obj) {
16
+ return obj && obj.__esModule ? obj : {
17
+ default: obj
18
+ };
19
+ }
15
20
  const queryDrafts = async function queryDrafts({ collection, limit, locale, page = 1, pagination, req = {}, sort, where }) {
16
21
  const collectionConfig = this.payload.collections[collection].config;
17
- const tableName = (0, _getTableName.getTableName)({
18
- adapter: this,
19
- config: collectionConfig,
20
- versions: true
21
- });
22
+ const tableName = this.tableNameMap.get(`_${(0, _tosnakecase.default)(collectionConfig.slug)}${this.versionsSuffix}`);
22
23
  const fields = (0, _versions.buildVersionCollectionFields)(collectionConfig);
23
24
  const combinedWhere = (0, _database.combineQueries)({
24
25
  latest: {
@@ -52,4 +53,4 @@ const queryDrafts = async function queryDrafts({ collection, limit, locale, page
52
53
  };
53
54
  };
54
55
 
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9xdWVyeURyYWZ0cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFBheWxvYWRSZXF1ZXN0LCBTYW5pdGl6ZWRDb2xsZWN0aW9uQ29uZmlnIH0gZnJvbSAncGF5bG9hZC90eXBlcydcblxuaW1wb3J0IHsgdHlwZSBRdWVyeURyYWZ0cywgY29tYmluZVF1ZXJpZXMgfSBmcm9tICdwYXlsb2FkL2RhdGFiYXNlJ1xuaW1wb3J0IHsgYnVpbGRWZXJzaW9uQ29sbGVjdGlvbkZpZWxkcyB9IGZyb20gJ3BheWxvYWQvdmVyc2lvbnMnXG5cbmltcG9ydCB7IGZpbmRNYW55IH0gZnJvbSAnLi9maW5kL2ZpbmRNYW55J1xuaW1wb3J0IHsgZ2V0VGFibGVOYW1lIH0gZnJvbSAnLi9zY2hlbWEvZ2V0VGFibGVOYW1lJ1xuXG5leHBvcnQgY29uc3QgcXVlcnlEcmFmdHM6IFF1ZXJ5RHJhZnRzID0gYXN5bmMgZnVuY3Rpb24gcXVlcnlEcmFmdHMoe1xuICBjb2xsZWN0aW9uLFxuICBsaW1pdCxcbiAgbG9jYWxlLFxuICBwYWdlID0gMSxcbiAgcGFnaW5hdGlvbixcbiAgcmVxID0ge30gYXMgUGF5bG9hZFJlcXVlc3QsXG4gIHNvcnQsXG4gIHdoZXJlLFxufSkge1xuICBjb25zdCBjb2xsZWN0aW9uQ29uZmlnOiBTYW5pdGl6ZWRDb2xsZWN0aW9uQ29uZmlnID0gdGhpcy5wYXlsb2FkLmNvbGxlY3Rpb25zW2NvbGxlY3Rpb25dLmNvbmZpZ1xuICBjb25zdCB0YWJsZU5hbWUgPSBnZXRUYWJsZU5hbWUoe1xuICAgIGFkYXB0ZXI6IHRoaXMsXG4gICAgY29uZmlnOiBjb2xsZWN0aW9uQ29uZmlnLFxuICAgIHZlcnNpb25zOiB0cnVlLFxuICB9KVxuICBjb25zdCBmaWVsZHMgPSBidWlsZFZlcnNpb25Db2xsZWN0aW9uRmllbGRzKGNvbGxlY3Rpb25Db25maWcpXG5cbiAgY29uc3QgY29tYmluZWRXaGVyZSA9IGNvbWJpbmVRdWVyaWVzKHsgbGF0ZXN0OiB7IGVxdWFsczogdHJ1ZSB9IH0sIHdoZXJlKVxuXG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGZpbmRNYW55KHtcbiAgICBhZGFwdGVyOiB0aGlzLFxuICAgIGZpZWxkcyxcbiAgICBsaW1pdCxcbiAgICBsb2NhbGUsXG4gICAgcGFnZSxcbiAgICBwYWdpbmF0aW9uLFxuICAgIHJlcSxcbiAgICBzb3J0LFxuICAgIHRhYmxlTmFtZSxcbiAgICB3aGVyZTogY29tYmluZWRXaGVyZSxcbiAgfSlcblxuICByZXR1cm4ge1xuICAgIC4uLnJlc3VsdCxcbiAgICBkb2NzOiByZXN1bHQuZG9jcy5tYXAoKGRvYykgPT4ge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICBkb2MgPSB7XG4gICAgICAgIGlkOiBkb2MucGFyZW50LFxuICAgICAgICAuLi5kb2MudmVyc2lvbixcbiAgICAgICAgY3JlYXRlZEF0OiBkb2MuY3JlYXRlZEF0LFxuICAgICAgICB1cGRhdGVkQXQ6IGRvYy51cGRhdGVkQXQsXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBkb2NcbiAgICB9KSxcbiAgfVxufVxuIl0sIm5hbWVzIjpbInF1ZXJ5RHJhZnRzIiwiY29sbGVjdGlvbiIsImxpbWl0IiwibG9jYWxlIiwicGFnZSIsInBhZ2luYXRpb24iLCJyZXEiLCJzb3J0Iiwid2hlcmUiLCJjb2xsZWN0aW9uQ29uZmlnIiwicGF5bG9hZCIsImNvbGxlY3Rpb25zIiwiY29uZmlnIiwidGFibGVOYW1lIiwiZ2V0VGFibGVOYW1lIiwiYWRhcHRlciIsInZlcnNpb25zIiwiZmllbGRzIiwiYnVpbGRWZXJzaW9uQ29sbGVjdGlvbkZpZWxkcyIsImNvbWJpbmVkV2hlcmUiLCJjb21iaW5lUXVlcmllcyIsImxhdGVzdCIsImVxdWFscyIsInJlc3VsdCIsImZpbmRNYW55IiwiZG9jcyIsIm1hcCIsImRvYyIsImlkIiwicGFyZW50IiwidmVyc2lvbiIsImNyZWF0ZWRBdCIsInVwZGF0ZWRBdCJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFRYUE7OztlQUFBQTs7OzBCQU5vQzswQkFDSjswQkFFcEI7OEJBQ0k7QUFFdEIsTUFBTUEsY0FBMkIsZUFBZUEsWUFBWSxFQUNqRUMsVUFBVSxFQUNWQyxLQUFLLEVBQ0xDLE1BQU0sRUFDTkMsT0FBTyxDQUFDLEVBQ1JDLFVBQVUsRUFDVkMsTUFBTSxDQUFDLENBQW1CLEVBQzFCQyxJQUFJLEVBQ0pDLEtBQUssRUFDTjtJQUNDLE1BQU1DLG1CQUE4QyxJQUFJLENBQUNDLE9BQU8sQ0FBQ0MsV0FBVyxDQUFDVixXQUFXLENBQUNXLE1BQU07SUFDL0YsTUFBTUMsWUFBWUMsSUFBQUEsMEJBQVksRUFBQztRQUM3QkMsU0FBUyxJQUFJO1FBQ2JILFFBQVFIO1FBQ1JPLFVBQVU7SUFDWjtJQUNBLE1BQU1DLFNBQVNDLElBQUFBLHNDQUE0QixFQUFDVDtJQUU1QyxNQUFNVSxnQkFBZ0JDLElBQUFBLHdCQUFjLEVBQUM7UUFBRUMsUUFBUTtZQUFFQyxRQUFRO1FBQUs7SUFBRSxHQUFHZDtJQUVuRSxNQUFNZSxTQUFTLE1BQU1DLElBQUFBLGtCQUFRLEVBQUM7UUFDNUJULFNBQVMsSUFBSTtRQUNiRTtRQUNBZjtRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBTTtRQUNBTCxPQUFPVztJQUNUO0lBRUEsT0FBTztRQUNMLEdBQUdJLE1BQU07UUFDVEUsTUFBTUYsT0FBT0UsSUFBSSxDQUFDQyxHQUFHLENBQUMsQ0FBQ0M7WUFDckIsNkNBQTZDO1lBQzdDQSxNQUFNO2dCQUNKQyxJQUFJRCxJQUFJRSxNQUFNO2dCQUNkLEdBQUdGLElBQUlHLE9BQU87Z0JBQ2RDLFdBQVdKLElBQUlJLFNBQVM7Z0JBQ3hCQyxXQUFXTCxJQUFJSyxTQUFTO1lBQzFCO1lBRUEsT0FBT0w7UUFDVDtJQUNGO0FBQ0YifQ==
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9xdWVyeURyYWZ0cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFBheWxvYWRSZXF1ZXN0LCBTYW5pdGl6ZWRDb2xsZWN0aW9uQ29uZmlnIH0gZnJvbSAncGF5bG9hZC90eXBlcydcblxuaW1wb3J0IHsgdHlwZSBRdWVyeURyYWZ0cywgY29tYmluZVF1ZXJpZXMgfSBmcm9tICdwYXlsb2FkL2RhdGFiYXNlJ1xuaW1wb3J0IHsgYnVpbGRWZXJzaW9uQ29sbGVjdGlvbkZpZWxkcyB9IGZyb20gJ3BheWxvYWQvdmVyc2lvbnMnXG5pbXBvcnQgdG9TbmFrZUNhc2UgZnJvbSAndG8tc25ha2UtY2FzZSdcblxuaW1wb3J0IHR5cGUgeyBQb3N0Z3Jlc0FkYXB0ZXIgfSBmcm9tICcuL3R5cGVzJ1xuXG5pbXBvcnQgeyBmaW5kTWFueSB9IGZyb20gJy4vZmluZC9maW5kTWFueSdcblxuZXhwb3J0IGNvbnN0IHF1ZXJ5RHJhZnRzOiBRdWVyeURyYWZ0cyA9IGFzeW5jIGZ1bmN0aW9uIHF1ZXJ5RHJhZnRzKFxuICB0aGlzOiBQb3N0Z3Jlc0FkYXB0ZXIsXG4gIHsgY29sbGVjdGlvbiwgbGltaXQsIGxvY2FsZSwgcGFnZSA9IDEsIHBhZ2luYXRpb24sIHJlcSA9IHt9IGFzIFBheWxvYWRSZXF1ZXN0LCBzb3J0LCB3aGVyZSB9LFxuKSB7XG4gIGNvbnN0IGNvbGxlY3Rpb25Db25maWc6IFNhbml0aXplZENvbGxlY3Rpb25Db25maWcgPSB0aGlzLnBheWxvYWQuY29sbGVjdGlvbnNbY29sbGVjdGlvbl0uY29uZmlnXG4gIGNvbnN0IHRhYmxlTmFtZSA9IHRoaXMudGFibGVOYW1lTWFwLmdldChcbiAgICBgXyR7dG9TbmFrZUNhc2UoY29sbGVjdGlvbkNvbmZpZy5zbHVnKX0ke3RoaXMudmVyc2lvbnNTdWZmaXh9YCxcbiAgKVxuICBjb25zdCBmaWVsZHMgPSBidWlsZFZlcnNpb25Db2xsZWN0aW9uRmllbGRzKGNvbGxlY3Rpb25Db25maWcpXG5cbiAgY29uc3QgY29tYmluZWRXaGVyZSA9IGNvbWJpbmVRdWVyaWVzKHsgbGF0ZXN0OiB7IGVxdWFsczogdHJ1ZSB9IH0sIHdoZXJlKVxuXG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGZpbmRNYW55KHtcbiAgICBhZGFwdGVyOiB0aGlzLFxuICAgIGZpZWxkcyxcbiAgICBsaW1pdCxcbiAgICBsb2NhbGUsXG4gICAgcGFnZSxcbiAgICBwYWdpbmF0aW9uLFxuICAgIHJlcSxcbiAgICBzb3J0LFxuICAgIHRhYmxlTmFtZSxcbiAgICB3aGVyZTogY29tYmluZWRXaGVyZSxcbiAgfSlcblxuICByZXR1cm4ge1xuICAgIC4uLnJlc3VsdCxcbiAgICBkb2NzOiByZXN1bHQuZG9jcy5tYXAoKGRvYykgPT4ge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICBkb2MgPSB7XG4gICAgICAgIGlkOiBkb2MucGFyZW50LFxuICAgICAgICAuLi5kb2MudmVyc2lvbixcbiAgICAgICAgY3JlYXRlZEF0OiBkb2MuY3JlYXRlZEF0LFxuICAgICAgICB1cGRhdGVkQXQ6IGRvYy51cGRhdGVkQXQsXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBkb2NcbiAgICB9KSxcbiAgfVxufVxuIl0sIm5hbWVzIjpbInF1ZXJ5RHJhZnRzIiwiY29sbGVjdGlvbiIsImxpbWl0IiwibG9jYWxlIiwicGFnZSIsInBhZ2luYXRpb24iLCJyZXEiLCJzb3J0Iiwid2hlcmUiLCJjb2xsZWN0aW9uQ29uZmlnIiwicGF5bG9hZCIsImNvbGxlY3Rpb25zIiwiY29uZmlnIiwidGFibGVOYW1lIiwidGFibGVOYW1lTWFwIiwiZ2V0IiwidG9TbmFrZUNhc2UiLCJzbHVnIiwidmVyc2lvbnNTdWZmaXgiLCJmaWVsZHMiLCJidWlsZFZlcnNpb25Db2xsZWN0aW9uRmllbGRzIiwiY29tYmluZWRXaGVyZSIsImNvbWJpbmVRdWVyaWVzIiwibGF0ZXN0IiwiZXF1YWxzIiwicmVzdWx0IiwiZmluZE1hbnkiLCJhZGFwdGVyIiwiZG9jcyIsIm1hcCIsImRvYyIsImlkIiwicGFyZW50IiwidmVyc2lvbiIsImNyZWF0ZWRBdCIsInVwZGF0ZWRBdCJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFVYUE7OztlQUFBQTs7OzBCQVJvQzswQkFDSjtvRUFDckI7MEJBSUM7Ozs7OztBQUVsQixNQUFNQSxjQUEyQixlQUFlQSxZQUVyRCxFQUFFQyxVQUFVLEVBQUVDLEtBQUssRUFBRUMsTUFBTSxFQUFFQyxPQUFPLENBQUMsRUFBRUMsVUFBVSxFQUFFQyxNQUFNLENBQUMsQ0FBbUIsRUFBRUMsSUFBSSxFQUFFQyxLQUFLLEVBQUU7SUFFNUYsTUFBTUMsbUJBQThDLElBQUksQ0FBQ0MsT0FBTyxDQUFDQyxXQUFXLENBQUNWLFdBQVcsQ0FBQ1csTUFBTTtJQUMvRixNQUFNQyxZQUFZLElBQUksQ0FBQ0MsWUFBWSxDQUFDQyxHQUFHLENBQ3JDLENBQUMsQ0FBQyxFQUFFQyxJQUFBQSxvQkFBVyxFQUFDUCxpQkFBaUJRLElBQUksRUFBRSxFQUFFLElBQUksQ0FBQ0MsY0FBYyxDQUFDLENBQUM7SUFFaEUsTUFBTUMsU0FBU0MsSUFBQUEsc0NBQTRCLEVBQUNYO0lBRTVDLE1BQU1ZLGdCQUFnQkMsSUFBQUEsd0JBQWMsRUFBQztRQUFFQyxRQUFRO1lBQUVDLFFBQVE7UUFBSztJQUFFLEdBQUdoQjtJQUVuRSxNQUFNaUIsU0FBUyxNQUFNQyxJQUFBQSxrQkFBUSxFQUFDO1FBQzVCQyxTQUFTLElBQUk7UUFDYlI7UUFDQWpCO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FNO1FBQ0FMLE9BQU9hO0lBQ1Q7SUFFQSxPQUFPO1FBQ0wsR0FBR0ksTUFBTTtRQUNURyxNQUFNSCxPQUFPRyxJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDQztZQUNyQiw2Q0FBNkM7WUFDN0NBLE1BQU07Z0JBQ0pDLElBQUlELElBQUlFLE1BQU07Z0JBQ2QsR0FBR0YsSUFBSUcsT0FBTztnQkFDZEMsV0FBV0osSUFBSUksU0FBUztnQkFDeEJDLFdBQVdMLElBQUlLLFNBQVM7WUFDMUI7WUFFQSxPQUFPTDtRQUNUO0lBQ0Y7QUFDRiJ9
@@ -1,10 +1,11 @@
1
- import type { IndexBuilder, PgColumnBuilder, UniqueConstraintBuilder } from 'drizzle-orm/pg-core';
2
- import type { Field } from 'payload/types';
1
+ import type { ForeignKeyBuilder, IndexBuilder, PgColumnBuilder, UniqueConstraintBuilder } from 'drizzle-orm/pg-core';
2
+ import { Field } from 'payload/types';
3
3
  import type { GenericColumns, PostgresAdapter } from '../types';
4
+ export type BaseExtraConfig = Record<string, (cols: GenericColumns) => ForeignKeyBuilder | IndexBuilder | UniqueConstraintBuilder>;
4
5
  type Args = {
5
6
  adapter: PostgresAdapter;
6
7
  baseColumns?: Record<string, PgColumnBuilder>;
7
- baseExtraConfig?: Record<string, (cols: GenericColumns) => IndexBuilder | UniqueConstraintBuilder>;
8
+ baseExtraConfig?: BaseExtraConfig;
8
9
  buildNumbers?: boolean;
9
10
  buildRelationships?: boolean;
10
11
  buildTexts?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/schema/build.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,YAAY,EACZ,eAAe,EAEf,uBAAuB,EACxB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAM1C,OAAO,KAAK,EAAE,cAAc,EAAwB,eAAe,EAAE,MAAM,UAAU,CAAA;AAOrF,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,eAAe,CAAA;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IAC7C,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,YAAY,GAAG,uBAAuB,CAAC,CAAA;IAClG,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,cAAc,EAAE,OAAO,CAAA;IACvB,aAAa,EAAE,OAAO,CAAA;IACtB,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,oBAAoB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC1C,iBAAiB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,QAAQ,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,KAAK,MAAM,GAAG;IACZ,kBAAkB,EAAE,OAAO,GAAG,OAAO,CAAA;IACrC,gBAAgB,EAAE,OAAO,GAAG,OAAO,CAAA;IACnC,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACtC,CAAA;AAED,eAAO,MAAM,UAAU,wQAiBpB,IAAI,KAAG,MAyUT,CAAA"}
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/schema/build.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,iBAAiB,EACjB,YAAY,EACZ,eAAe,EAEf,uBAAuB,EACxB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,KAAK,EAAoB,MAAM,eAAe,CAAA;AAevD,OAAO,KAAK,EAAE,cAAc,EAAwB,eAAe,EAAE,MAAM,UAAU,CAAA;AAOrF,MAAM,MAAM,eAAe,GAAG,MAAM,CAClC,MAAM,EACN,CAAC,IAAI,EAAE,cAAc,KAAK,iBAAiB,GAAG,YAAY,GAAG,uBAAuB,CACrF,CAAA;AAED,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,eAAe,CAAA;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IAC7C,eAAe,CAAC,EAAE,eAAe,CAAA;IACjC,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,cAAc,EAAE,OAAO,CAAA;IACvB,aAAa,EAAE,OAAO,CAAA;IACtB,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,oBAAoB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC1C,iBAAiB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,QAAQ,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,KAAK,MAAM,GAAG;IACZ,kBAAkB,EAAE,OAAO,GAAG,OAAO,CAAA;IACrC,gBAAgB,EAAE,OAAO,GAAG,OAAO,CAAA;IACnC,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACtC,CAAA;AAED,eAAO,MAAM,UAAU,wQAiBpB,IAAI,KAAG,MAoWT,CAAA"}