@payloadcms/db-postgres 0.8.1 → 0.8.3

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 +3 -3
  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 +2 -2
  75. package/dist/schema/getTableName.d.ts.map +0 -1
  76. package/dist/schema/getTableName.js +0 -43
@@ -9,8 +9,8 @@ Object.defineProperty(exports, "updateVersion", {
9
9
  }
10
10
  });
11
11
  const _versions = require("payload/versions");
12
+ const _tosnakecase = /*#__PURE__*/ _interop_require_default(require("to-snake-case"));
12
13
  const _buildQuery = /*#__PURE__*/ _interop_require_default(require("./queries/buildQuery"));
13
- const _getTableName = require("./schema/getTableName");
14
14
  const _upsertRow = require("./upsertRow");
15
15
  function _interop_require_default(obj) {
16
16
  return obj && obj.__esModule ? obj : {
@@ -25,11 +25,7 @@ async function updateVersion({ id, collection, locale, req = {}, versionData, wh
25
25
  equals: id
26
26
  }
27
27
  };
28
- const tableName = (0, _getTableName.getTableName)({
29
- adapter: this,
30
- config: collectionConfig,
31
- versions: true
32
- });
28
+ const tableName = this.tableNameMap.get(`_${(0, _tosnakecase.default)(collectionConfig.slug)}${this.versionsSuffix}`);
33
29
  const fields = (0, _versions.buildVersionCollectionFields)(collectionConfig);
34
30
  const { where } = await (0, _buildQuery.default)({
35
31
  adapter: this,
@@ -52,4 +48,4 @@ async function updateVersion({ id, collection, locale, req = {}, versionData, wh
52
48
  return result;
53
49
  }
54
50
 
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91cGRhdGVWZXJzaW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgVHlwZVdpdGhWZXJzaW9uLCBVcGRhdGVWZXJzaW9uQXJncyB9IGZyb20gJ3BheWxvYWQvZGF0YWJhc2UnXG5pbXBvcnQgdHlwZSB7IFBheWxvYWRSZXF1ZXN0LCBTYW5pdGl6ZWRDb2xsZWN0aW9uQ29uZmlnLCBUeXBlV2l0aElEIH0gZnJvbSAncGF5bG9hZC90eXBlcydcblxuaW1wb3J0IHsgYnVpbGRWZXJzaW9uQ29sbGVjdGlvbkZpZWxkcyB9IGZyb20gJ3BheWxvYWQvdmVyc2lvbnMnXG5cbmltcG9ydCB0eXBlIHsgUG9zdGdyZXNBZGFwdGVyIH0gZnJvbSAnLi90eXBlcydcblxuaW1wb3J0IGJ1aWxkUXVlcnkgZnJvbSAnLi9xdWVyaWVzL2J1aWxkUXVlcnknXG5pbXBvcnQgeyBnZXRUYWJsZU5hbWUgfSBmcm9tICcuL3NjaGVtYS9nZXRUYWJsZU5hbWUnXG5pbXBvcnQgeyB1cHNlcnRSb3cgfSBmcm9tICcuL3Vwc2VydFJvdydcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHVwZGF0ZVZlcnNpb248VCBleHRlbmRzIFR5cGVXaXRoSUQ+KFxuICB0aGlzOiBQb3N0Z3Jlc0FkYXB0ZXIsXG4gIHtcbiAgICBpZCxcbiAgICBjb2xsZWN0aW9uLFxuICAgIGxvY2FsZSxcbiAgICByZXEgPSB7fSBhcyBQYXlsb2FkUmVxdWVzdCxcbiAgICB2ZXJzaW9uRGF0YSxcbiAgICB3aGVyZTogd2hlcmVBcmcsXG4gIH06IFVwZGF0ZVZlcnNpb25BcmdzPFQ+LFxuKSB7XG4gIGNvbnN0IGRiID0gdGhpcy5zZXNzaW9uc1tyZXEudHJhbnNhY3Rpb25JRF0/LmRiIHx8IHRoaXMuZHJpenpsZVxuICBjb25zdCBjb2xsZWN0aW9uQ29uZmlnOiBTYW5pdGl6ZWRDb2xsZWN0aW9uQ29uZmlnID0gdGhpcy5wYXlsb2FkLmNvbGxlY3Rpb25zW2NvbGxlY3Rpb25dLmNvbmZpZ1xuICBjb25zdCB3aGVyZVRvVXNlID0gd2hlcmVBcmcgfHwgeyBpZDogeyBlcXVhbHM6IGlkIH0gfVxuICBjb25zdCB0YWJsZU5hbWUgPSBnZXRUYWJsZU5hbWUoe1xuICAgIGFkYXB0ZXI6IHRoaXMsXG4gICAgY29uZmlnOiBjb2xsZWN0aW9uQ29uZmlnLFxuICAgIHZlcnNpb25zOiB0cnVlLFxuICB9KVxuICBjb25zdCBmaWVsZHMgPSBidWlsZFZlcnNpb25Db2xsZWN0aW9uRmllbGRzKGNvbGxlY3Rpb25Db25maWcpXG5cbiAgY29uc3QgeyB3aGVyZSB9ID0gYXdhaXQgYnVpbGRRdWVyeSh7XG4gICAgYWRhcHRlcjogdGhpcyxcbiAgICBmaWVsZHMsXG4gICAgbG9jYWxlLFxuICAgIHRhYmxlTmFtZSxcbiAgICB3aGVyZTogd2hlcmVUb1VzZSxcbiAgfSlcblxuICBjb25zdCByZXN1bHQgPSBhd2FpdCB1cHNlcnRSb3c8VHlwZVdpdGhWZXJzaW9uPFQ+Pih7XG4gICAgaWQsXG4gICAgYWRhcHRlcjogdGhpcyxcbiAgICBkYXRhOiB2ZXJzaW9uRGF0YSxcbiAgICBkYixcbiAgICBmaWVsZHMsXG4gICAgb3BlcmF0aW9uOiAndXBkYXRlJyxcbiAgICByZXEsXG4gICAgdGFibGVOYW1lLFxuICAgIHdoZXJlLFxuICB9KVxuXG4gIHJldHVybiByZXN1bHRcbn1cbiJdLCJuYW1lcyI6WyJ1cGRhdGVWZXJzaW9uIiwiaWQiLCJjb2xsZWN0aW9uIiwibG9jYWxlIiwicmVxIiwidmVyc2lvbkRhdGEiLCJ3aGVyZSIsIndoZXJlQXJnIiwiZGIiLCJzZXNzaW9ucyIsInRyYW5zYWN0aW9uSUQiLCJkcml6emxlIiwiY29sbGVjdGlvbkNvbmZpZyIsInBheWxvYWQiLCJjb2xsZWN0aW9ucyIsImNvbmZpZyIsIndoZXJlVG9Vc2UiLCJlcXVhbHMiLCJ0YWJsZU5hbWUiLCJnZXRUYWJsZU5hbWUiLCJhZGFwdGVyIiwidmVyc2lvbnMiLCJmaWVsZHMiLCJidWlsZFZlcnNpb25Db2xsZWN0aW9uRmllbGRzIiwiYnVpbGRRdWVyeSIsInJlc3VsdCIsInVwc2VydFJvdyIsImRhdGEiLCJvcGVyYXRpb24iXSwibWFwcGluZ3MiOiI7Ozs7K0JBV3NCQTs7O2VBQUFBOzs7MEJBUnVCO21FQUl0Qjs4QkFDTTsyQkFDSDs7Ozs7O0FBRW5CLGVBQWVBLGNBRXBCLEVBQ0VDLEVBQUUsRUFDRkMsVUFBVSxFQUNWQyxNQUFNLEVBQ05DLE1BQU0sQ0FBQyxDQUFtQixFQUMxQkMsV0FBVyxFQUNYQyxPQUFPQyxRQUFRLEVBQ007SUFFdkIsTUFBTUMsS0FBSyxJQUFJLENBQUNDLFFBQVEsQ0FBQ0wsSUFBSU0sYUFBYSxDQUFDLEVBQUVGLE1BQU0sSUFBSSxDQUFDRyxPQUFPO0lBQy9ELE1BQU1DLG1CQUE4QyxJQUFJLENBQUNDLE9BQU8sQ0FBQ0MsV0FBVyxDQUFDWixXQUFXLENBQUNhLE1BQU07SUFDL0YsTUFBTUMsYUFBYVQsWUFBWTtRQUFFTixJQUFJO1lBQUVnQixRQUFRaEI7UUFBRztJQUFFO0lBQ3BELE1BQU1pQixZQUFZQyxJQUFBQSwwQkFBWSxFQUFDO1FBQzdCQyxTQUFTLElBQUk7UUFDYkwsUUFBUUg7UUFDUlMsVUFBVTtJQUNaO0lBQ0EsTUFBTUMsU0FBU0MsSUFBQUEsc0NBQTRCLEVBQUNYO0lBRTVDLE1BQU0sRUFBRU4sS0FBSyxFQUFFLEdBQUcsTUFBTWtCLElBQUFBLG1CQUFVLEVBQUM7UUFDakNKLFNBQVMsSUFBSTtRQUNiRTtRQUNBbkI7UUFDQWU7UUFDQVosT0FBT1U7SUFDVDtJQUVBLE1BQU1TLFNBQVMsTUFBTUMsSUFBQUEsb0JBQVMsRUFBcUI7UUFDakR6QjtRQUNBbUIsU0FBUyxJQUFJO1FBQ2JPLE1BQU10QjtRQUNORztRQUNBYztRQUNBTSxXQUFXO1FBQ1h4QjtRQUNBYztRQUNBWjtJQUNGO0lBRUEsT0FBT21CO0FBQ1QifQ==
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91cGRhdGVWZXJzaW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgVHlwZVdpdGhWZXJzaW9uLCBVcGRhdGVWZXJzaW9uQXJncyB9IGZyb20gJ3BheWxvYWQvZGF0YWJhc2UnXG5pbXBvcnQgdHlwZSB7IFBheWxvYWRSZXF1ZXN0LCBTYW5pdGl6ZWRDb2xsZWN0aW9uQ29uZmlnLCBUeXBlV2l0aElEIH0gZnJvbSAncGF5bG9hZC90eXBlcydcblxuaW1wb3J0IHsgYnVpbGRWZXJzaW9uQ29sbGVjdGlvbkZpZWxkcyB9IGZyb20gJ3BheWxvYWQvdmVyc2lvbnMnXG5pbXBvcnQgdG9TbmFrZUNhc2UgZnJvbSAndG8tc25ha2UtY2FzZSdcblxuaW1wb3J0IHR5cGUgeyBQb3N0Z3Jlc0FkYXB0ZXIgfSBmcm9tICcuL3R5cGVzJ1xuXG5pbXBvcnQgYnVpbGRRdWVyeSBmcm9tICcuL3F1ZXJpZXMvYnVpbGRRdWVyeSdcbmltcG9ydCB7IHVwc2VydFJvdyB9IGZyb20gJy4vdXBzZXJ0Um93J1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdXBkYXRlVmVyc2lvbjxUIGV4dGVuZHMgVHlwZVdpdGhJRD4oXG4gIHRoaXM6IFBvc3RncmVzQWRhcHRlcixcbiAge1xuICAgIGlkLFxuICAgIGNvbGxlY3Rpb24sXG4gICAgbG9jYWxlLFxuICAgIHJlcSA9IHt9IGFzIFBheWxvYWRSZXF1ZXN0LFxuICAgIHZlcnNpb25EYXRhLFxuICAgIHdoZXJlOiB3aGVyZUFyZyxcbiAgfTogVXBkYXRlVmVyc2lvbkFyZ3M8VD4sXG4pIHtcbiAgY29uc3QgZGIgPSB0aGlzLnNlc3Npb25zW3JlcS50cmFuc2FjdGlvbklEXT8uZGIgfHwgdGhpcy5kcml6emxlXG4gIGNvbnN0IGNvbGxlY3Rpb25Db25maWc6IFNhbml0aXplZENvbGxlY3Rpb25Db25maWcgPSB0aGlzLnBheWxvYWQuY29sbGVjdGlvbnNbY29sbGVjdGlvbl0uY29uZmlnXG4gIGNvbnN0IHdoZXJlVG9Vc2UgPSB3aGVyZUFyZyB8fCB7IGlkOiB7IGVxdWFsczogaWQgfSB9XG4gIGNvbnN0IHRhYmxlTmFtZSA9IHRoaXMudGFibGVOYW1lTWFwLmdldChcbiAgICBgXyR7dG9TbmFrZUNhc2UoY29sbGVjdGlvbkNvbmZpZy5zbHVnKX0ke3RoaXMudmVyc2lvbnNTdWZmaXh9YCxcbiAgKVxuXG4gIGNvbnN0IGZpZWxkcyA9IGJ1aWxkVmVyc2lvbkNvbGxlY3Rpb25GaWVsZHMoY29sbGVjdGlvbkNvbmZpZylcblxuICBjb25zdCB7IHdoZXJlIH0gPSBhd2FpdCBidWlsZFF1ZXJ5KHtcbiAgICBhZGFwdGVyOiB0aGlzLFxuICAgIGZpZWxkcyxcbiAgICBsb2NhbGUsXG4gICAgdGFibGVOYW1lLFxuICAgIHdoZXJlOiB3aGVyZVRvVXNlLFxuICB9KVxuXG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHVwc2VydFJvdzxUeXBlV2l0aFZlcnNpb248VD4+KHtcbiAgICBpZCxcbiAgICBhZGFwdGVyOiB0aGlzLFxuICAgIGRhdGE6IHZlcnNpb25EYXRhLFxuICAgIGRiLFxuICAgIGZpZWxkcyxcbiAgICBvcGVyYXRpb246ICd1cGRhdGUnLFxuICAgIHJlcSxcbiAgICB0YWJsZU5hbWUsXG4gICAgd2hlcmUsXG4gIH0pXG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuIl0sIm5hbWVzIjpbInVwZGF0ZVZlcnNpb24iLCJpZCIsImNvbGxlY3Rpb24iLCJsb2NhbGUiLCJyZXEiLCJ2ZXJzaW9uRGF0YSIsIndoZXJlIiwid2hlcmVBcmciLCJkYiIsInNlc3Npb25zIiwidHJhbnNhY3Rpb25JRCIsImRyaXp6bGUiLCJjb2xsZWN0aW9uQ29uZmlnIiwicGF5bG9hZCIsImNvbGxlY3Rpb25zIiwiY29uZmlnIiwid2hlcmVUb1VzZSIsImVxdWFscyIsInRhYmxlTmFtZSIsInRhYmxlTmFtZU1hcCIsImdldCIsInRvU25ha2VDYXNlIiwic2x1ZyIsInZlcnNpb25zU3VmZml4IiwiZmllbGRzIiwiYnVpbGRWZXJzaW9uQ29sbGVjdGlvbkZpZWxkcyIsImJ1aWxkUXVlcnkiLCJhZGFwdGVyIiwicmVzdWx0IiwidXBzZXJ0Um93IiwiZGF0YSIsIm9wZXJhdGlvbiJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFXc0JBOzs7ZUFBQUE7OzswQkFSdUI7b0VBQ3JCO21FQUlEOzJCQUNHOzs7Ozs7QUFFbkIsZUFBZUEsY0FFcEIsRUFDRUMsRUFBRSxFQUNGQyxVQUFVLEVBQ1ZDLE1BQU0sRUFDTkMsTUFBTSxDQUFDLENBQW1CLEVBQzFCQyxXQUFXLEVBQ1hDLE9BQU9DLFFBQVEsRUFDTTtJQUV2QixNQUFNQyxLQUFLLElBQUksQ0FBQ0MsUUFBUSxDQUFDTCxJQUFJTSxhQUFhLENBQUMsRUFBRUYsTUFBTSxJQUFJLENBQUNHLE9BQU87SUFDL0QsTUFBTUMsbUJBQThDLElBQUksQ0FBQ0MsT0FBTyxDQUFDQyxXQUFXLENBQUNaLFdBQVcsQ0FBQ2EsTUFBTTtJQUMvRixNQUFNQyxhQUFhVCxZQUFZO1FBQUVOLElBQUk7WUFBRWdCLFFBQVFoQjtRQUFHO0lBQUU7SUFDcEQsTUFBTWlCLFlBQVksSUFBSSxDQUFDQyxZQUFZLENBQUNDLEdBQUcsQ0FDckMsQ0FBQyxDQUFDLEVBQUVDLElBQUFBLG9CQUFXLEVBQUNULGlCQUFpQlUsSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDQyxjQUFjLENBQUMsQ0FBQztJQUdoRSxNQUFNQyxTQUFTQyxJQUFBQSxzQ0FBNEIsRUFBQ2I7SUFFNUMsTUFBTSxFQUFFTixLQUFLLEVBQUUsR0FBRyxNQUFNb0IsSUFBQUEsbUJBQVUsRUFBQztRQUNqQ0MsU0FBUyxJQUFJO1FBQ2JIO1FBQ0FyQjtRQUNBZTtRQUNBWixPQUFPVTtJQUNUO0lBRUEsTUFBTVksU0FBUyxNQUFNQyxJQUFBQSxvQkFBUyxFQUFxQjtRQUNqRDVCO1FBQ0EwQixTQUFTLElBQUk7UUFDYkcsTUFBTXpCO1FBQ05HO1FBQ0FnQjtRQUNBTyxXQUFXO1FBQ1gzQjtRQUNBYztRQUNBWjtJQUNGO0lBRUEsT0FBT3NCO0FBQ1QifQ==
@@ -184,13 +184,13 @@ const upsertRow = async ({ id, adapter, data, db, fields, operation, path = '',
184
184
  const insertedBlockRows = {};
185
185
  if (operation === 'update') {
186
186
  for (const blockName of rowToInsert.blocksToDelete){
187
- const blockTableName = adapter.blockTableNames[`${tableName}.${blockName}`];
187
+ const blockTableName = adapter.tableNameMap.get(`${tableName}_blocks_${blockName}`);
188
188
  const blockTable = adapter.tables[blockTableName];
189
189
  await db.delete(blockTable).where((0, _drizzleorm.eq)(blockTable._parentID, insertedRow.id));
190
190
  }
191
191
  }
192
192
  for (const [blockName, blockRows] of Object.entries(blocksToInsert)){
193
- const blockTableName = adapter.blockTableNames[`${tableName}.${blockName}`];
193
+ const blockTableName = adapter.tableNameMap.get(`${tableName}_blocks_${blockName}`);
194
194
  insertedBlockRows[blockName] = await db.insert(adapter.tables[blockTableName]).values(blockRows.map(({ row })=>row)).returning();
195
195
  insertedBlockRows[blockName].forEach((row, i)=>{
196
196
  blockRows[i].row = row;
@@ -285,4 +285,4 @@ const upsertRow = async ({ id, adapter, data, db, fields, operation, path = '',
285
285
  return result;
286
286
  };
287
287
 
288
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91cHNlcnRSb3cvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCB0eXBlIHsgVHlwZVdpdGhJRCB9IGZyb20gJ3BheWxvYWQvdHlwZXMnXG5cbmltcG9ydCB7IGVxIH0gZnJvbSAnZHJpenpsZS1vcm0nXG5pbXBvcnQgeyBWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICdwYXlsb2FkL2Vycm9ycydcbmltcG9ydCB7IGkxOG5Jbml0IH0gZnJvbSAncGF5bG9hZC91dGlsaXRpZXMnXG5cbmltcG9ydCB0eXBlIHsgQmxvY2tSb3dUb0luc2VydCB9IGZyb20gJy4uL3RyYW5zZm9ybS93cml0ZS90eXBlcydcbmltcG9ydCB0eXBlIHsgQXJncyB9IGZyb20gJy4vdHlwZXMnXG5cbmltcG9ydCB7IGJ1aWxkRmluZE1hbnlBcmdzIH0gZnJvbSAnLi4vZmluZC9idWlsZEZpbmRNYW55QXJncydcbmltcG9ydCB7IHRyYW5zZm9ybSB9IGZyb20gJy4uL3RyYW5zZm9ybS9yZWFkJ1xuaW1wb3J0IHsgdHJhbnNmb3JtRm9yV3JpdGUgfSBmcm9tICcuLi90cmFuc2Zvcm0vd3JpdGUnXG5pbXBvcnQgeyBkZWxldGVFeGlzdGluZ0FycmF5Um93cyB9IGZyb20gJy4vZGVsZXRlRXhpc3RpbmdBcnJheVJvd3MnXG5pbXBvcnQgeyBkZWxldGVFeGlzdGluZ1Jvd3NCeVBhdGggfSBmcm9tICcuL2RlbGV0ZUV4aXN0aW5nUm93c0J5UGF0aCdcbmltcG9ydCB7IGluc2VydEFycmF5cyB9IGZyb20gJy4vaW5zZXJ0QXJyYXlzJ1xuXG5leHBvcnQgY29uc3QgdXBzZXJ0Um93ID0gYXN5bmMgPFQgZXh0ZW5kcyBUeXBlV2l0aElEPih7XG4gIGlkLFxuICBhZGFwdGVyLFxuICBkYXRhLFxuICBkYixcbiAgZmllbGRzLFxuICBvcGVyYXRpb24sXG4gIHBhdGggPSAnJyxcbiAgcmVxLFxuICB0YWJsZU5hbWUsXG4gIHVwc2VydFRhcmdldCxcbiAgd2hlcmUsXG59OiBBcmdzKTogUHJvbWlzZTxUPiA9PiB7XG4gIC8vIFNwbGl0IG91dCB0aGUgaW5jb21pbmcgZGF0YSBpbnRvIHRoZSBjb3JyZXNwb25kaW5nOlxuICAvLyBiYXNlIHJvdywgbG9jYWxlcywgcmVsYXRpb25zaGlwcywgYmxvY2tzLCBhbmQgYXJyYXlzXG4gIGNvbnN0IHJvd1RvSW5zZXJ0ID0gdHJhbnNmb3JtRm9yV3JpdGUoe1xuICAgIGFkYXB0ZXIsXG4gICAgZGF0YSxcbiAgICBmaWVsZHMsXG4gICAgcGF0aCxcbiAgICB0YWJsZU5hbWUsXG4gIH0pXG5cbiAgLy8gRmlyc3QsIHdlIGluc2VydCB0aGUgbWFpbiByb3dcbiAgbGV0IGluc2VydGVkUm93OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuXG4gIHRyeSB7XG4gICAgaWYgKG9wZXJhdGlvbiA9PT0gJ3VwZGF0ZScpIHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IHVwc2VydFRhcmdldCB8fCBhZGFwdGVyLnRhYmxlc1t0YWJsZU5hbWVdLmlkXG5cbiAgICAgIGlmIChpZCkge1xuICAgICAgICByb3dUb0luc2VydC5yb3cuaWQgPSBpZFxuICAgICAgICA7W2luc2VydGVkUm93XSA9IGF3YWl0IGRiXG4gICAgICAgICAgLmluc2VydChhZGFwdGVyLnRhYmxlc1t0YWJsZU5hbWVdKVxuICAgICAgICAgIC52YWx1ZXMocm93VG9JbnNlcnQucm93KVxuICAgICAgICAgIC5vbkNvbmZsaWN0RG9VcGRhdGUoeyBzZXQ6IHJvd1RvSW5zZXJ0LnJvdywgdGFyZ2V0IH0pXG4gICAgICAgICAgLnJldHVybmluZygpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICA7W2luc2VydGVkUm93XSA9IGF3YWl0IGRiXG4gICAgICAgICAgLmluc2VydChhZGFwdGVyLnRhYmxlc1t0YWJsZU5hbWVdKVxuICAgICAgICAgIC52YWx1ZXMocm93VG9JbnNlcnQucm93KVxuICAgICAgICAgIC5vbkNvbmZsaWN0RG9VcGRhdGUoeyBzZXQ6IHJvd1RvSW5zZXJ0LnJvdywgdGFyZ2V0LCB3aGVyZSB9KVxuICAgICAgICAgIC5yZXR1cm5pbmcoKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICA7W2luc2VydGVkUm93XSA9IGF3YWl0IGRiXG4gICAgICAgIC5pbnNlcnQoYWRhcHRlci50YWJsZXNbdGFibGVOYW1lXSlcbiAgICAgICAgLnZhbHVlcyhyb3dUb0luc2VydC5yb3cpXG4gICAgICAgIC5yZXR1cm5pbmcoKVxuICAgIH1cblxuICAgIGNvbnN0IGxvY2FsZXNUb0luc2VydDogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXSA9IFtdXG4gICAgY29uc3QgcmVsYXRpb25zVG9JbnNlcnQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W10gPSBbXVxuICAgIGNvbnN0IHRleHRzVG9JbnNlcnQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W10gPSBbXVxuICAgIGNvbnN0IG51bWJlcnNUb0luc2VydDogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXSA9IFtdXG4gICAgY29uc3QgYmxvY2tzVG9JbnNlcnQ6IHsgW2Jsb2NrVHlwZTogc3RyaW5nXTogQmxvY2tSb3dUb0luc2VydFtdIH0gPSB7fVxuICAgIGNvbnN0IHNlbGVjdHNUb0luc2VydDogeyBbc2VsZWN0VGFibGVOYW1lOiBzdHJpbmddOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdIH0gPSB7fVxuXG4gICAgLy8gSWYgdGhlcmUgYXJlIGxvY2FsZSByb3dzIHdpdGggZGF0YSwgYWRkIHRoZSBwYXJlbnQgYW5kIGxvY2FsZSB0byBlYWNoXG4gICAgaWYgKE9iamVjdC5rZXlzKHJvd1RvSW5zZXJ0LmxvY2FsZXMpLmxlbmd0aCA+IDApIHtcbiAgICAgIE9iamVjdC5lbnRyaWVzKHJvd1RvSW5zZXJ0LmxvY2FsZXMpLmZvckVhY2goKFtsb2NhbGUsIGxvY2FsZVJvd10pID0+IHtcbiAgICAgICAgbG9jYWxlUm93Ll9wYXJlbnRJRCA9IGluc2VydGVkUm93LmlkXG4gICAgICAgIGxvY2FsZVJvdy5fbG9jYWxlID0gbG9jYWxlXG4gICAgICAgIGxvY2FsZXNUb0luc2VydC5wdXNoKGxvY2FsZVJvdylcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gSWYgdGhlcmUgYXJlIHJlbGF0aW9uc2hpcHMsIGFkZCBwYXJlbnQgdG8gZWFjaFxuICAgIGlmIChyb3dUb0luc2VydC5yZWxhdGlvbnNoaXBzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJvd1RvSW5zZXJ0LnJlbGF0aW9uc2hpcHMuZm9yRWFjaCgocmVsYXRpb24pID0+IHtcbiAgICAgICAgcmVsYXRpb24ucGFyZW50ID0gaW5zZXJ0ZWRSb3cuaWRcbiAgICAgICAgcmVsYXRpb25zVG9JbnNlcnQucHVzaChyZWxhdGlvbilcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gSWYgdGhlcmUgYXJlIHRleHRzLCBhZGQgcGFyZW50IHRvIGVhY2hcbiAgICBpZiAocm93VG9JbnNlcnQudGV4dHMubGVuZ3RoID4gMCkge1xuICAgICAgcm93VG9JbnNlcnQudGV4dHMuZm9yRWFjaCgodGV4dFJvdykgPT4ge1xuICAgICAgICB0ZXh0Um93LnBhcmVudCA9IGluc2VydGVkUm93LmlkXG4gICAgICAgIHRleHRzVG9JbnNlcnQucHVzaCh0ZXh0Um93KVxuICAgICAgfSlcbiAgICB9XG5cbiAgICAvLyBJZiB0aGVyZSBhcmUgbnVtYmVycywgYWRkIHBhcmVudCB0byBlYWNoXG4gICAgaWYgKHJvd1RvSW5zZXJ0Lm51bWJlcnMubGVuZ3RoID4gMCkge1xuICAgICAgcm93VG9JbnNlcnQubnVtYmVycy5mb3JFYWNoKChudW1iZXJSb3cpID0+IHtcbiAgICAgICAgbnVtYmVyUm93LnBhcmVudCA9IGluc2VydGVkUm93LmlkXG4gICAgICAgIG51bWJlcnNUb0luc2VydC5wdXNoKG51bWJlclJvdylcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gSWYgdGhlcmUgYXJlIHNlbGVjdHMsIGFkZCBwYXJlbnQgdG8gZWFjaCwgYW5kIHRoZW5cbiAgICAvLyBzdG9yZSBieSB0YWJsZSBuYW1lIGFuZCByb3dzXG4gICAgaWYgKE9iamVjdC5rZXlzKHJvd1RvSW5zZXJ0LnNlbGVjdHMpLmxlbmd0aCA+IDApIHtcbiAgICAgIE9iamVjdC5lbnRyaWVzKHJvd1RvSW5zZXJ0LnNlbGVjdHMpLmZvckVhY2goKFtzZWxlY3RUYWJsZU5hbWUsIHNlbGVjdFJvd3NdKSA9PiB7XG4gICAgICAgIHNlbGVjdFJvd3MuZm9yRWFjaCgocm93KSA9PiB7XG4gICAgICAgICAgaWYgKHR5cGVvZiByb3cucGFyZW50ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgcm93LnBhcmVudCA9IGluc2VydGVkUm93LmlkXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghc2VsZWN0c1RvSW5zZXJ0W3NlbGVjdFRhYmxlTmFtZV0pIHNlbGVjdHNUb0luc2VydFtzZWxlY3RUYWJsZU5hbWVdID0gW11cbiAgICAgICAgICBzZWxlY3RzVG9JbnNlcnRbc2VsZWN0VGFibGVOYW1lXS5wdXNoKHJvdylcbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gSWYgdGhlcmUgYXJlIGJsb2NrcywgYWRkIHBhcmVudCB0byBlYWNoLCBhbmQgdGhlblxuICAgIC8vIHN0b3JlIGJ5IHRhYmxlIG5hbWUgYW5kIHJvd3NcbiAgICBPYmplY3Qua2V5cyhyb3dUb0luc2VydC5ibG9ja3MpLmZvckVhY2goKGJsb2NrTmFtZSkgPT4ge1xuICAgICAgcm93VG9JbnNlcnQuYmxvY2tzW2Jsb2NrTmFtZV0uZm9yRWFjaCgoYmxvY2tSb3cpID0+IHtcbiAgICAgICAgYmxvY2tSb3cucm93Ll9wYXJlbnRJRCA9IGluc2VydGVkUm93LmlkXG4gICAgICAgIGlmICghYmxvY2tzVG9JbnNlcnRbYmxvY2tOYW1lXSkgYmxvY2tzVG9JbnNlcnRbYmxvY2tOYW1lXSA9IFtdXG4gICAgICAgIGlmIChibG9ja1Jvdy5yb3cudXVpZCkge1xuICAgICAgICAgIGRlbGV0ZSBibG9ja1Jvdy5yb3cudXVpZFxuICAgICAgICB9XG4gICAgICAgIGJsb2Nrc1RvSW5zZXJ0W2Jsb2NrTmFtZV0ucHVzaChibG9ja1JvdylcbiAgICAgIH0pXG4gICAgfSlcblxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBJTlNFUlQgTE9DQUxFU1xuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIGlmIChsb2NhbGVzVG9JbnNlcnQubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgbG9jYWxlVGFibGUgPSBhZGFwdGVyLnRhYmxlc1tgJHt0YWJsZU5hbWV9JHthZGFwdGVyLmxvY2FsZXNTdWZmaXh9YF1cblxuICAgICAgaWYgKG9wZXJhdGlvbiA9PT0gJ3VwZGF0ZScpIHtcbiAgICAgICAgYXdhaXQgZGIuZGVsZXRlKGxvY2FsZVRhYmxlKS53aGVyZShlcShsb2NhbGVUYWJsZS5fcGFyZW50SUQsIGluc2VydGVkUm93LmlkKSlcbiAgICAgIH1cblxuICAgICAgYXdhaXQgZGIuaW5zZXJ0KGxvY2FsZVRhYmxlKS52YWx1ZXMobG9jYWxlc1RvSW5zZXJ0KVxuICAgIH1cblxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBJTlNFUlQgUkVMQVRJT05TSElQU1xuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIGNvbnN0IHJlbGF0aW9uc2hpcHNUYWJsZU5hbWUgPSBgJHt0YWJsZU5hbWV9JHthZGFwdGVyLnJlbGF0aW9uc2hpcHNTdWZmaXh9YFxuXG4gICAgaWYgKG9wZXJhdGlvbiA9PT0gJ3VwZGF0ZScpIHtcbiAgICAgIGF3YWl0IGRlbGV0ZUV4aXN0aW5nUm93c0J5UGF0aCh7XG4gICAgICAgIGFkYXB0ZXIsXG4gICAgICAgIGRiLFxuICAgICAgICBsb2NhbGVDb2x1bW5OYW1lOiAnbG9jYWxlJyxcbiAgICAgICAgcGFyZW50Q29sdW1uTmFtZTogJ3BhcmVudCcsXG4gICAgICAgIHBhcmVudElEOiBpbnNlcnRlZFJvdy5pZCxcbiAgICAgICAgcGF0aENvbHVtbk5hbWU6ICdwYXRoJyxcbiAgICAgICAgcm93czogWy4uLnJlbGF0aW9uc1RvSW5zZXJ0LCAuLi5yb3dUb0luc2VydC5yZWxhdGlvbnNoaXBzVG9EZWxldGVdLFxuICAgICAgICB0YWJsZU5hbWU6IHJlbGF0aW9uc2hpcHNUYWJsZU5hbWUsXG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmIChyZWxhdGlvbnNUb0luc2VydC5sZW5ndGggPiAwKSB7XG4gICAgICBhd2FpdCBkYi5pbnNlcnQoYWRhcHRlci50YWJsZXNbcmVsYXRpb25zaGlwc1RhYmxlTmFtZV0pLnZhbHVlcyhyZWxhdGlvbnNUb0luc2VydClcbiAgICB9XG5cbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gSU5TRVJUIGhhc01hbnkgVEVYVFNcbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgICBjb25zdCB0ZXh0c1RhYmxlTmFtZSA9IGAke3RhYmxlTmFtZX1fdGV4dHNgXG5cbiAgICBpZiAob3BlcmF0aW9uID09PSAndXBkYXRlJykge1xuICAgICAgYXdhaXQgZGVsZXRlRXhpc3RpbmdSb3dzQnlQYXRoKHtcbiAgICAgICAgYWRhcHRlcixcbiAgICAgICAgZGIsXG4gICAgICAgIGxvY2FsZUNvbHVtbk5hbWU6ICdsb2NhbGUnLFxuICAgICAgICBwYXJlbnRDb2x1bW5OYW1lOiAncGFyZW50JyxcbiAgICAgICAgcGFyZW50SUQ6IGluc2VydGVkUm93LmlkLFxuICAgICAgICBwYXRoQ29sdW1uTmFtZTogJ3BhdGgnLFxuICAgICAgICByb3dzOiB0ZXh0c1RvSW5zZXJ0LFxuICAgICAgICB0YWJsZU5hbWU6IHRleHRzVGFibGVOYW1lLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICBpZiAodGV4dHNUb0luc2VydC5sZW5ndGggPiAwKSB7XG4gICAgICBhd2FpdCBkYi5pbnNlcnQoYWRhcHRlci50YWJsZXNbdGV4dHNUYWJsZU5hbWVdKS52YWx1ZXModGV4dHNUb0luc2VydCkucmV0dXJuaW5nKClcbiAgICB9XG5cbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gSU5TRVJUIGhhc01hbnkgTlVNQkVSU1xuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIGNvbnN0IG51bWJlcnNUYWJsZU5hbWUgPSBgJHt0YWJsZU5hbWV9X251bWJlcnNgXG5cbiAgICBpZiAob3BlcmF0aW9uID09PSAndXBkYXRlJykge1xuICAgICAgYXdhaXQgZGVsZXRlRXhpc3RpbmdSb3dzQnlQYXRoKHtcbiAgICAgICAgYWRhcHRlcixcbiAgICAgICAgZGIsXG4gICAgICAgIGxvY2FsZUNvbHVtbk5hbWU6ICdsb2NhbGUnLFxuICAgICAgICBwYXJlbnRDb2x1bW5OYW1lOiAncGFyZW50JyxcbiAgICAgICAgcGFyZW50SUQ6IGluc2VydGVkUm93LmlkLFxuICAgICAgICBwYXRoQ29sdW1uTmFtZTogJ3BhdGgnLFxuICAgICAgICByb3dzOiBudW1iZXJzVG9JbnNlcnQsXG4gICAgICAgIHRhYmxlTmFtZTogbnVtYmVyc1RhYmxlTmFtZSxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgaWYgKG51bWJlcnNUb0luc2VydC5sZW5ndGggPiAwKSB7XG4gICAgICBhd2FpdCBkYi5pbnNlcnQoYWRhcHRlci50YWJsZXNbbnVtYmVyc1RhYmxlTmFtZV0pLnZhbHVlcyhudW1iZXJzVG9JbnNlcnQpLnJldHVybmluZygpXG4gICAgfVxuXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIElOU0VSVCBCTE9DS1NcbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgICBjb25zdCBpbnNlcnRlZEJsb2NrUm93czogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXT4gPSB7fVxuXG4gICAgaWYgKG9wZXJhdGlvbiA9PT0gJ3VwZGF0ZScpIHtcbiAgICAgIGZvciAoY29uc3QgYmxvY2tOYW1lIG9mIHJvd1RvSW5zZXJ0LmJsb2Nrc1RvRGVsZXRlKSB7XG4gICAgICAgIGNvbnN0IGJsb2NrVGFibGVOYW1lID0gYWRhcHRlci5ibG9ja1RhYmxlTmFtZXNbYCR7dGFibGVOYW1lfS4ke2Jsb2NrTmFtZX1gXVxuICAgICAgICBjb25zdCBibG9ja1RhYmxlID0gYWRhcHRlci50YWJsZXNbYmxvY2tUYWJsZU5hbWVdXG4gICAgICAgIGF3YWl0IGRiLmRlbGV0ZShibG9ja1RhYmxlKS53aGVyZShlcShibG9ja1RhYmxlLl9wYXJlbnRJRCwgaW5zZXJ0ZWRSb3cuaWQpKVxuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgW2Jsb2NrTmFtZSwgYmxvY2tSb3dzXSBvZiBPYmplY3QuZW50cmllcyhibG9ja3NUb0luc2VydCkpIHtcbiAgICAgIGNvbnN0IGJsb2NrVGFibGVOYW1lID0gYWRhcHRlci5ibG9ja1RhYmxlTmFtZXNbYCR7dGFibGVOYW1lfS4ke2Jsb2NrTmFtZX1gXVxuICAgICAgaW5zZXJ0ZWRCbG9ja1Jvd3NbYmxvY2tOYW1lXSA9IGF3YWl0IGRiXG4gICAgICAgIC5pbnNlcnQoYWRhcHRlci50YWJsZXNbYmxvY2tUYWJsZU5hbWVdKVxuICAgICAgICAudmFsdWVzKGJsb2NrUm93cy5tYXAoKHsgcm93IH0pID0+IHJvdykpXG4gICAgICAgIC5yZXR1cm5pbmcoKVxuXG4gICAgICBpbnNlcnRlZEJsb2NrUm93c1tibG9ja05hbWVdLmZvckVhY2goKHJvdywgaSkgPT4ge1xuICAgICAgICBibG9ja1Jvd3NbaV0ucm93ID0gcm93XG4gICAgICB9KVxuXG4gICAgICBjb25zdCBibG9ja0xvY2FsZUluZGV4TWFwOiBudW1iZXJbXSA9IFtdXG5cbiAgICAgIGNvbnN0IGJsb2NrTG9jYWxlUm93c1RvSW5zZXJ0ID0gYmxvY2tSb3dzLnJlZHVjZSgoYWNjLCBibG9ja1JvdywgaSkgPT4ge1xuICAgICAgICBpZiAoT2JqZWN0LmVudHJpZXMoYmxvY2tSb3cubG9jYWxlcykubGVuZ3RoID4gMCkge1xuICAgICAgICAgIE9iamVjdC5lbnRyaWVzKGJsb2NrUm93LmxvY2FsZXMpLmZvckVhY2goKFtibG9ja0xvY2FsZSwgYmxvY2tMb2NhbGVEYXRhXSkgPT4ge1xuICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKGJsb2NrTG9jYWxlRGF0YSkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICBibG9ja0xvY2FsZURhdGEuX3BhcmVudElEID0gYmxvY2tSb3cucm93LmlkXG4gICAgICAgICAgICAgIGJsb2NrTG9jYWxlRGF0YS5fbG9jYWxlID0gYmxvY2tMb2NhbGVcbiAgICAgICAgICAgICAgYWNjLnB1c2goYmxvY2tMb2NhbGVEYXRhKVxuICAgICAgICAgICAgICBibG9ja0xvY2FsZUluZGV4TWFwLnB1c2goaSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFjY1xuICAgICAgfSwgW10pXG5cbiAgICAgIGlmIChibG9ja0xvY2FsZVJvd3NUb0luc2VydC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGF3YWl0IGRiXG4gICAgICAgICAgLmluc2VydChhZGFwdGVyLnRhYmxlc1tgJHtibG9ja1RhYmxlTmFtZX0ke2FkYXB0ZXIubG9jYWxlc1N1ZmZpeH1gXSlcbiAgICAgICAgICAudmFsdWVzKGJsb2NrTG9jYWxlUm93c1RvSW5zZXJ0KVxuICAgICAgICAgIC5yZXR1cm5pbmcoKVxuICAgICAgfVxuXG4gICAgICBhd2FpdCBpbnNlcnRBcnJheXMoe1xuICAgICAgICBhZGFwdGVyLFxuICAgICAgICBhcnJheXM6IGJsb2NrUm93cy5tYXAoKHsgYXJyYXlzIH0pID0+IGFycmF5cyksXG4gICAgICAgIGRiLFxuICAgICAgICBwYXJlbnRSb3dzOiBpbnNlcnRlZEJsb2NrUm93c1tibG9ja05hbWVdLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gSU5TRVJUIEFSUkFZUyBSRUNVUlNJVkVMWVxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIGlmIChvcGVyYXRpb24gPT09ICd1cGRhdGUnKSB7XG4gICAgICBmb3IgKGNvbnN0IGFycmF5VGFibGVOYW1lIG9mIE9iamVjdC5rZXlzKHJvd1RvSW5zZXJ0LmFycmF5cykpIHtcbiAgICAgICAgYXdhaXQgZGVsZXRlRXhpc3RpbmdBcnJheVJvd3Moe1xuICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgZGIsXG4gICAgICAgICAgcGFyZW50SUQ6IGluc2VydGVkUm93LmlkLFxuICAgICAgICAgIHRhYmxlTmFtZTogYXJyYXlUYWJsZU5hbWUsXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuXG4gICAgYXdhaXQgaW5zZXJ0QXJyYXlzKHtcbiAgICAgIGFkYXB0ZXIsXG4gICAgICBhcnJheXM6IFtyb3dUb0luc2VydC5hcnJheXNdLFxuICAgICAgZGIsXG4gICAgICBwYXJlbnRSb3dzOiBbaW5zZXJ0ZWRSb3ddLFxuICAgIH0pXG5cbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gSU5TRVJUIGhhc01hbnkgU0VMRUNUU1xuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIGZvciAoY29uc3QgW3NlbGVjdFRhYmxlTmFtZSwgdGFibGVSb3dzXSBvZiBPYmplY3QuZW50cmllcyhzZWxlY3RzVG9JbnNlcnQpKSB7XG4gICAgICBjb25zdCBzZWxlY3RUYWJsZSA9IGFkYXB0ZXIudGFibGVzW3NlbGVjdFRhYmxlTmFtZV1cbiAgICAgIGlmIChvcGVyYXRpb24gPT09ICd1cGRhdGUnKSB7XG4gICAgICAgIGF3YWl0IGRiLmRlbGV0ZShzZWxlY3RUYWJsZSkud2hlcmUoZXEoc2VsZWN0VGFibGUucGFyZW50LCBpbnNlcnRlZFJvdy5pZCkpXG4gICAgICB9XG4gICAgICBhd2FpdCBkYi5pbnNlcnQoc2VsZWN0VGFibGUpLnZhbHVlcyh0YWJsZVJvd3MpLnJldHVybmluZygpXG4gICAgfVxuXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIEVycm9yIEhhbmRsaW5nXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHRocm93IGVycm9yLmNvZGUgPT09ICcyMzUwNSdcbiAgICAgID8gbmV3IFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgICBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGZpZWxkOiBhZGFwdGVyLmZpZWxkQ29uc3RyYWludHNbdGFibGVOYW1lXVtlcnJvci5jb25zdHJhaW50XSxcbiAgICAgICAgICAgICAgbWVzc2FnZTogcmVxLnQoJ2Vycm9yOnZhbHVlTXVzdEJlVW5pcXVlJyksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgcmVxPy50ID8/IGkxOG5Jbml0KHJlcS5wYXlsb2FkLmNvbmZpZy5pMThuKS50LFxuICAgICAgICApXG4gICAgICA6IGVycm9yXG4gIH1cblxuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIC8vIFJFVFJJRVZFIE5FV0xZIFVQREFURUQgUk9XXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICBjb25zdCBmaW5kTWFueUFyZ3MgPSBidWlsZEZpbmRNYW55QXJncyh7XG4gICAgYWRhcHRlcixcbiAgICBkZXB0aDogMCxcbiAgICBmaWVsZHMsXG4gICAgdGFibGVOYW1lLFxuICB9KVxuXG4gIGZpbmRNYW55QXJncy53aGVyZSA9IGVxKGFkYXB0ZXIudGFibGVzW3RhYmxlTmFtZV0uaWQsIGluc2VydGVkUm93LmlkKVxuXG4gIGNvbnN0IGRvYyA9IGF3YWl0IGRiLnF1ZXJ5W3RhYmxlTmFtZV0uZmluZEZpcnN0KGZpbmRNYW55QXJncylcblxuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIC8vIFRSQU5TRk9STSBEQVRBXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICBjb25zdCByZXN1bHQgPSB0cmFuc2Zvcm08VD4oe1xuICAgIGNvbmZpZzogYWRhcHRlci5wYXlsb2FkLmNvbmZpZyxcbiAgICBkYXRhOiBkb2MsXG4gICAgZmllbGRzLFxuICB9KVxuXG4gIHJldHVybiByZXN1bHRcbn1cbiJdLCJuYW1lcyI6WyJ1cHNlcnRSb3ciLCJpZCIsImFkYXB0ZXIiLCJkYXRhIiwiZGIiLCJmaWVsZHMiLCJvcGVyYXRpb24iLCJwYXRoIiwicmVxIiwidGFibGVOYW1lIiwidXBzZXJ0VGFyZ2V0Iiwid2hlcmUiLCJyb3dUb0luc2VydCIsInRyYW5zZm9ybUZvcldyaXRlIiwiaW5zZXJ0ZWRSb3ciLCJ0YXJnZXQiLCJ0YWJsZXMiLCJyb3ciLCJpbnNlcnQiLCJ2YWx1ZXMiLCJvbkNvbmZsaWN0RG9VcGRhdGUiLCJzZXQiLCJyZXR1cm5pbmciLCJsb2NhbGVzVG9JbnNlcnQiLCJyZWxhdGlvbnNUb0luc2VydCIsInRleHRzVG9JbnNlcnQiLCJudW1iZXJzVG9JbnNlcnQiLCJibG9ja3NUb0luc2VydCIsInNlbGVjdHNUb0luc2VydCIsIk9iamVjdCIsImtleXMiLCJsb2NhbGVzIiwibGVuZ3RoIiwiZW50cmllcyIsImZvckVhY2giLCJsb2NhbGUiLCJsb2NhbGVSb3ciLCJfcGFyZW50SUQiLCJfbG9jYWxlIiwicHVzaCIsInJlbGF0aW9uc2hpcHMiLCJyZWxhdGlvbiIsInBhcmVudCIsInRleHRzIiwidGV4dFJvdyIsIm51bWJlcnMiLCJudW1iZXJSb3ciLCJzZWxlY3RzIiwic2VsZWN0VGFibGVOYW1lIiwic2VsZWN0Um93cyIsImJsb2NrcyIsImJsb2NrTmFtZSIsImJsb2NrUm93IiwidXVpZCIsImxvY2FsZVRhYmxlIiwibG9jYWxlc1N1ZmZpeCIsImRlbGV0ZSIsImVxIiwicmVsYXRpb25zaGlwc1RhYmxlTmFtZSIsInJlbGF0aW9uc2hpcHNTdWZmaXgiLCJkZWxldGVFeGlzdGluZ1Jvd3NCeVBhdGgiLCJsb2NhbGVDb2x1bW5OYW1lIiwicGFyZW50Q29sdW1uTmFtZSIsInBhcmVudElEIiwicGF0aENvbHVtbk5hbWUiLCJyb3dzIiwicmVsYXRpb25zaGlwc1RvRGVsZXRlIiwidGV4dHNUYWJsZU5hbWUiLCJudW1iZXJzVGFibGVOYW1lIiwiaW5zZXJ0ZWRCbG9ja1Jvd3MiLCJibG9ja3NUb0RlbGV0ZSIsImJsb2NrVGFibGVOYW1lIiwiYmxvY2tUYWJsZU5hbWVzIiwiYmxvY2tUYWJsZSIsImJsb2NrUm93cyIsIm1hcCIsImkiLCJibG9ja0xvY2FsZUluZGV4TWFwIiwiYmxvY2tMb2NhbGVSb3dzVG9JbnNlcnQiLCJyZWR1Y2UiLCJhY2MiLCJibG9ja0xvY2FsZSIsImJsb2NrTG9jYWxlRGF0YSIsImluc2VydEFycmF5cyIsImFycmF5cyIsInBhcmVudFJvd3MiLCJhcnJheVRhYmxlTmFtZSIsImRlbGV0ZUV4aXN0aW5nQXJyYXlSb3dzIiwidGFibGVSb3dzIiwic2VsZWN0VGFibGUiLCJlcnJvciIsImNvZGUiLCJWYWxpZGF0aW9uRXJyb3IiLCJmaWVsZCIsImZpZWxkQ29uc3RyYWludHMiLCJjb25zdHJhaW50IiwibWVzc2FnZSIsInQiLCJpMThuSW5pdCIsInBheWxvYWQiLCJjb25maWciLCJpMThuIiwiZmluZE1hbnlBcmdzIiwiYnVpbGRGaW5kTWFueUFyZ3MiLCJkZXB0aCIsImRvYyIsInF1ZXJ5IiwiZmluZEZpcnN0IiwicmVzdWx0IiwidHJhbnNmb3JtIl0sIm1hcHBpbmdzIjoiQUFBQSxvQ0FBb0M7Ozs7K0JBaUJ2QkE7OztlQUFBQTs7OzRCQWRNO3dCQUNhOzJCQUNQO21DQUtTO3NCQUNSO3VCQUNRO3lDQUNNOzBDQUNDOzhCQUNaO0FBRXRCLE1BQU1BLFlBQVksT0FBNkIsRUFDcERDLEVBQUUsRUFDRkMsT0FBTyxFQUNQQyxJQUFJLEVBQ0pDLEVBQUUsRUFDRkMsTUFBTSxFQUNOQyxTQUFTLEVBQ1RDLE9BQU8sRUFBRSxFQUNUQyxHQUFHLEVBQ0hDLFNBQVMsRUFDVEMsWUFBWSxFQUNaQyxLQUFLLEVBQ0E7SUFDTCxzREFBc0Q7SUFDdEQsdURBQXVEO0lBQ3ZELE1BQU1DLGNBQWNDLElBQUFBLHdCQUFpQixFQUFDO1FBQ3BDWDtRQUNBQztRQUNBRTtRQUNBRTtRQUNBRTtJQUNGO0lBRUEsZ0NBQWdDO0lBQ2hDLElBQUlLO0lBRUosSUFBSTtRQUNGLElBQUlSLGNBQWMsVUFBVTtZQUMxQixNQUFNUyxTQUFTTCxnQkFBZ0JSLFFBQVFjLE1BQU0sQ0FBQ1AsVUFBVSxDQUFDUixFQUFFO1lBRTNELElBQUlBLElBQUk7Z0JBQ05XLFlBQVlLLEdBQUcsQ0FBQ2hCLEVBQUUsR0FBR0E7Z0JBQ3BCLENBQUNhLFlBQVksR0FBRyxNQUFNVixHQUNwQmMsTUFBTSxDQUFDaEIsUUFBUWMsTUFBTSxDQUFDUCxVQUFVLEVBQ2hDVSxNQUFNLENBQUNQLFlBQVlLLEdBQUcsRUFDdEJHLGtCQUFrQixDQUFDO29CQUFFQyxLQUFLVCxZQUFZSyxHQUFHO29CQUFFRjtnQkFBTyxHQUNsRE8sU0FBUztZQUNkLE9BQU87Z0JBQ0osQ0FBQ1IsWUFBWSxHQUFHLE1BQU1WLEdBQ3BCYyxNQUFNLENBQUNoQixRQUFRYyxNQUFNLENBQUNQLFVBQVUsRUFDaENVLE1BQU0sQ0FBQ1AsWUFBWUssR0FBRyxFQUN0Qkcsa0JBQWtCLENBQUM7b0JBQUVDLEtBQUtULFlBQVlLLEdBQUc7b0JBQUVGO29CQUFRSjtnQkFBTSxHQUN6RFcsU0FBUztZQUNkO1FBQ0YsT0FBTztZQUNKLENBQUNSLFlBQVksR0FBRyxNQUFNVixHQUNwQmMsTUFBTSxDQUFDaEIsUUFBUWMsTUFBTSxDQUFDUCxVQUFVLEVBQ2hDVSxNQUFNLENBQUNQLFlBQVlLLEdBQUcsRUFDdEJLLFNBQVM7UUFDZDtRQUVBLE1BQU1DLGtCQUE2QyxFQUFFO1FBQ3JELE1BQU1DLG9CQUErQyxFQUFFO1FBQ3ZELE1BQU1DLGdCQUEyQyxFQUFFO1FBQ25ELE1BQU1DLGtCQUE2QyxFQUFFO1FBQ3JELE1BQU1DLGlCQUE4RCxDQUFDO1FBQ3JFLE1BQU1DLGtCQUE0RSxDQUFDO1FBRW5GLHdFQUF3RTtRQUN4RSxJQUFJQyxPQUFPQyxJQUFJLENBQUNsQixZQUFZbUIsT0FBTyxFQUFFQyxNQUFNLEdBQUcsR0FBRztZQUMvQ0gsT0FBT0ksT0FBTyxDQUFDckIsWUFBWW1CLE9BQU8sRUFBRUcsT0FBTyxDQUFDLENBQUMsQ0FBQ0MsUUFBUUMsVUFBVTtnQkFDOURBLFVBQVVDLFNBQVMsR0FBR3ZCLFlBQVliLEVBQUU7Z0JBQ3BDbUMsVUFBVUUsT0FBTyxHQUFHSDtnQkFDcEJaLGdCQUFnQmdCLElBQUksQ0FBQ0g7WUFDdkI7UUFDRjtRQUVBLGlEQUFpRDtRQUNqRCxJQUFJeEIsWUFBWTRCLGFBQWEsQ0FBQ1IsTUFBTSxHQUFHLEdBQUc7WUFDeENwQixZQUFZNEIsYUFBYSxDQUFDTixPQUFPLENBQUMsQ0FBQ087Z0JBQ2pDQSxTQUFTQyxNQUFNLEdBQUc1QixZQUFZYixFQUFFO2dCQUNoQ3VCLGtCQUFrQmUsSUFBSSxDQUFDRTtZQUN6QjtRQUNGO1FBRUEseUNBQXlDO1FBQ3pDLElBQUk3QixZQUFZK0IsS0FBSyxDQUFDWCxNQUFNLEdBQUcsR0FBRztZQUNoQ3BCLFlBQVkrQixLQUFLLENBQUNULE9BQU8sQ0FBQyxDQUFDVTtnQkFDekJBLFFBQVFGLE1BQU0sR0FBRzVCLFlBQVliLEVBQUU7Z0JBQy9Cd0IsY0FBY2MsSUFBSSxDQUFDSztZQUNyQjtRQUNGO1FBRUEsMkNBQTJDO1FBQzNDLElBQUloQyxZQUFZaUMsT0FBTyxDQUFDYixNQUFNLEdBQUcsR0FBRztZQUNsQ3BCLFlBQVlpQyxPQUFPLENBQUNYLE9BQU8sQ0FBQyxDQUFDWTtnQkFDM0JBLFVBQVVKLE1BQU0sR0FBRzVCLFlBQVliLEVBQUU7Z0JBQ2pDeUIsZ0JBQWdCYSxJQUFJLENBQUNPO1lBQ3ZCO1FBQ0Y7UUFFQSxxREFBcUQ7UUFDckQsK0JBQStCO1FBQy9CLElBQUlqQixPQUFPQyxJQUFJLENBQUNsQixZQUFZbUMsT0FBTyxFQUFFZixNQUFNLEdBQUcsR0FBRztZQUMvQ0gsT0FBT0ksT0FBTyxDQUFDckIsWUFBWW1DLE9BQU8sRUFBRWIsT0FBTyxDQUFDLENBQUMsQ0FBQ2MsaUJBQWlCQyxXQUFXO2dCQUN4RUEsV0FBV2YsT0FBTyxDQUFDLENBQUNqQjtvQkFDbEIsSUFBSSxPQUFPQSxJQUFJeUIsTUFBTSxLQUFLLGFBQWE7d0JBQ3JDekIsSUFBSXlCLE1BQU0sR0FBRzVCLFlBQVliLEVBQUU7b0JBQzdCO29CQUNBLElBQUksQ0FBQzJCLGVBQWUsQ0FBQ29CLGdCQUFnQixFQUFFcEIsZUFBZSxDQUFDb0IsZ0JBQWdCLEdBQUcsRUFBRTtvQkFDNUVwQixlQUFlLENBQUNvQixnQkFBZ0IsQ0FBQ1QsSUFBSSxDQUFDdEI7Z0JBQ3hDO1lBQ0Y7UUFDRjtRQUVBLG9EQUFvRDtRQUNwRCwrQkFBK0I7UUFDL0JZLE9BQU9DLElBQUksQ0FBQ2xCLFlBQVlzQyxNQUFNLEVBQUVoQixPQUFPLENBQUMsQ0FBQ2lCO1lBQ3ZDdkMsWUFBWXNDLE1BQU0sQ0FBQ0MsVUFBVSxDQUFDakIsT0FBTyxDQUFDLENBQUNrQjtnQkFDckNBLFNBQVNuQyxHQUFHLENBQUNvQixTQUFTLEdBQUd2QixZQUFZYixFQUFFO2dCQUN2QyxJQUFJLENBQUMwQixjQUFjLENBQUN3QixVQUFVLEVBQUV4QixjQUFjLENBQUN3QixVQUFVLEdBQUcsRUFBRTtnQkFDOUQsSUFBSUMsU0FBU25DLEdBQUcsQ0FBQ29DLElBQUksRUFBRTtvQkFDckIsT0FBT0QsU0FBU25DLEdBQUcsQ0FBQ29DLElBQUk7Z0JBQzFCO2dCQUNBMUIsY0FBYyxDQUFDd0IsVUFBVSxDQUFDWixJQUFJLENBQUNhO1lBQ2pDO1FBQ0Y7UUFFQSxxQ0FBcUM7UUFDckMsaUJBQWlCO1FBQ2pCLHFDQUFxQztRQUVyQyxJQUFJN0IsZ0JBQWdCUyxNQUFNLEdBQUcsR0FBRztZQUM5QixNQUFNc0IsY0FBY3BELFFBQVFjLE1BQU0sQ0FBQyxDQUFDLEVBQUVQLFVBQVUsRUFBRVAsUUFBUXFELGFBQWEsQ0FBQyxDQUFDLENBQUM7WUFFMUUsSUFBSWpELGNBQWMsVUFBVTtnQkFDMUIsTUFBTUYsR0FBR29ELE1BQU0sQ0FBQ0YsYUFBYTNDLEtBQUssQ0FBQzhDLElBQUFBLGNBQUUsRUFBQ0gsWUFBWWpCLFNBQVMsRUFBRXZCLFlBQVliLEVBQUU7WUFDN0U7WUFFQSxNQUFNRyxHQUFHYyxNQUFNLENBQUNvQyxhQUFhbkMsTUFBTSxDQUFDSTtRQUN0QztRQUVBLHFDQUFxQztRQUNyQyx1QkFBdUI7UUFDdkIscUNBQXFDO1FBRXJDLE1BQU1tQyx5QkFBeUIsQ0FBQyxFQUFFakQsVUFBVSxFQUFFUCxRQUFReUQsbUJBQW1CLENBQUMsQ0FBQztRQUUzRSxJQUFJckQsY0FBYyxVQUFVO1lBQzFCLE1BQU1zRCxJQUFBQSxrREFBd0IsRUFBQztnQkFDN0IxRDtnQkFDQUU7Z0JBQ0F5RCxrQkFBa0I7Z0JBQ2xCQyxrQkFBa0I7Z0JBQ2xCQyxVQUFVakQsWUFBWWIsRUFBRTtnQkFDeEIrRCxnQkFBZ0I7Z0JBQ2hCQyxNQUFNO3VCQUFJekM7dUJBQXNCWixZQUFZc0QscUJBQXFCO2lCQUFDO2dCQUNsRXpELFdBQVdpRDtZQUNiO1FBQ0Y7UUFFQSxJQUFJbEMsa0JBQWtCUSxNQUFNLEdBQUcsR0FBRztZQUNoQyxNQUFNNUIsR0FBR2MsTUFBTSxDQUFDaEIsUUFBUWMsTUFBTSxDQUFDMEMsdUJBQXVCLEVBQUV2QyxNQUFNLENBQUNLO1FBQ2pFO1FBRUEscUNBQXFDO1FBQ3JDLHVCQUF1QjtRQUN2QixxQ0FBcUM7UUFFckMsTUFBTTJDLGlCQUFpQixDQUFDLEVBQUUxRCxVQUFVLE1BQU0sQ0FBQztRQUUzQyxJQUFJSCxjQUFjLFVBQVU7WUFDMUIsTUFBTXNELElBQUFBLGtEQUF3QixFQUFDO2dCQUM3QjFEO2dCQUNBRTtnQkFDQXlELGtCQUFrQjtnQkFDbEJDLGtCQUFrQjtnQkFDbEJDLFVBQVVqRCxZQUFZYixFQUFFO2dCQUN4QitELGdCQUFnQjtnQkFDaEJDLE1BQU14QztnQkFDTmhCLFdBQVcwRDtZQUNiO1FBQ0Y7UUFFQSxJQUFJMUMsY0FBY08sTUFBTSxHQUFHLEdBQUc7WUFDNUIsTUFBTTVCLEdBQUdjLE1BQU0sQ0FBQ2hCLFFBQVFjLE1BQU0sQ0FBQ21ELGVBQWUsRUFBRWhELE1BQU0sQ0FBQ00sZUFBZUgsU0FBUztRQUNqRjtRQUVBLHFDQUFxQztRQUNyQyx5QkFBeUI7UUFDekIscUNBQXFDO1FBRXJDLE1BQU04QyxtQkFBbUIsQ0FBQyxFQUFFM0QsVUFBVSxRQUFRLENBQUM7UUFFL0MsSUFBSUgsY0FBYyxVQUFVO1lBQzFCLE1BQU1zRCxJQUFBQSxrREFBd0IsRUFBQztnQkFDN0IxRDtnQkFDQUU7Z0JBQ0F5RCxrQkFBa0I7Z0JBQ2xCQyxrQkFBa0I7Z0JBQ2xCQyxVQUFVakQsWUFBWWIsRUFBRTtnQkFDeEIrRCxnQkFBZ0I7Z0JBQ2hCQyxNQUFNdkM7Z0JBQ05qQixXQUFXMkQ7WUFDYjtRQUNGO1FBRUEsSUFBSTFDLGdCQUFnQk0sTUFBTSxHQUFHLEdBQUc7WUFDOUIsTUFBTTVCLEdBQUdjLE1BQU0sQ0FBQ2hCLFFBQVFjLE1BQU0sQ0FBQ29ELGlCQUFpQixFQUFFakQsTUFBTSxDQUFDTyxpQkFBaUJKLFNBQVM7UUFDckY7UUFFQSxxQ0FBcUM7UUFDckMsZ0JBQWdCO1FBQ2hCLHFDQUFxQztRQUVyQyxNQUFNK0Msb0JBQStELENBQUM7UUFFdEUsSUFBSS9ELGNBQWMsVUFBVTtZQUMxQixLQUFLLE1BQU02QyxhQUFhdkMsWUFBWTBELGNBQWMsQ0FBRTtnQkFDbEQsTUFBTUMsaUJBQWlCckUsUUFBUXNFLGVBQWUsQ0FBQyxDQUFDLEVBQUUvRCxVQUFVLENBQUMsRUFBRTBDLFVBQVUsQ0FBQyxDQUFDO2dCQUMzRSxNQUFNc0IsYUFBYXZFLFFBQVFjLE1BQU0sQ0FBQ3VELGVBQWU7Z0JBQ2pELE1BQU1uRSxHQUFHb0QsTUFBTSxDQUFDaUIsWUFBWTlELEtBQUssQ0FBQzhDLElBQUFBLGNBQUUsRUFBQ2dCLFdBQVdwQyxTQUFTLEVBQUV2QixZQUFZYixFQUFFO1lBQzNFO1FBQ0Y7UUFFQSxLQUFLLE1BQU0sQ0FBQ2tELFdBQVd1QixVQUFVLElBQUk3QyxPQUFPSSxPQUFPLENBQUNOLGdCQUFpQjtZQUNuRSxNQUFNNEMsaUJBQWlCckUsUUFBUXNFLGVBQWUsQ0FBQyxDQUFDLEVBQUUvRCxVQUFVLENBQUMsRUFBRTBDLFVBQVUsQ0FBQyxDQUFDO1lBQzNFa0IsaUJBQWlCLENBQUNsQixVQUFVLEdBQUcsTUFBTS9DLEdBQ2xDYyxNQUFNLENBQUNoQixRQUFRYyxNQUFNLENBQUN1RCxlQUFlLEVBQ3JDcEQsTUFBTSxDQUFDdUQsVUFBVUMsR0FBRyxDQUFDLENBQUMsRUFBRTFELEdBQUcsRUFBRSxHQUFLQSxNQUNsQ0ssU0FBUztZQUVaK0MsaUJBQWlCLENBQUNsQixVQUFVLENBQUNqQixPQUFPLENBQUMsQ0FBQ2pCLEtBQUsyRDtnQkFDekNGLFNBQVMsQ0FBQ0UsRUFBRSxDQUFDM0QsR0FBRyxHQUFHQTtZQUNyQjtZQUVBLE1BQU00RCxzQkFBZ0MsRUFBRTtZQUV4QyxNQUFNQywwQkFBMEJKLFVBQVVLLE1BQU0sQ0FBQyxDQUFDQyxLQUFLNUIsVUFBVXdCO2dCQUMvRCxJQUFJL0MsT0FBT0ksT0FBTyxDQUFDbUIsU0FBU3JCLE9BQU8sRUFBRUMsTUFBTSxHQUFHLEdBQUc7b0JBQy9DSCxPQUFPSSxPQUFPLENBQUNtQixTQUFTckIsT0FBTyxFQUFFRyxPQUFPLENBQUMsQ0FBQyxDQUFDK0MsYUFBYUMsZ0JBQWdCO3dCQUN0RSxJQUFJckQsT0FBT0MsSUFBSSxDQUFDb0QsaUJBQWlCbEQsTUFBTSxHQUFHLEdBQUc7NEJBQzNDa0QsZ0JBQWdCN0MsU0FBUyxHQUFHZSxTQUFTbkMsR0FBRyxDQUFDaEIsRUFBRTs0QkFDM0NpRixnQkFBZ0I1QyxPQUFPLEdBQUcyQzs0QkFDMUJELElBQUl6QyxJQUFJLENBQUMyQzs0QkFDVEwsb0JBQW9CdEMsSUFBSSxDQUFDcUM7d0JBQzNCO29CQUNGO2dCQUNGO2dCQUVBLE9BQU9JO1lBQ1QsR0FBRyxFQUFFO1lBRUwsSUFBSUYsd0JBQXdCOUMsTUFBTSxHQUFHLEdBQUc7Z0JBQ3RDLE1BQU01QixHQUNIYyxNQUFNLENBQUNoQixRQUFRYyxNQUFNLENBQUMsQ0FBQyxFQUFFdUQsZUFBZSxFQUFFckUsUUFBUXFELGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFDbEVwQyxNQUFNLENBQUMyRCx5QkFDUHhELFNBQVM7WUFDZDtZQUVBLE1BQU02RCxJQUFBQSwwQkFBWSxFQUFDO2dCQUNqQmpGO2dCQUNBa0YsUUFBUVYsVUFBVUMsR0FBRyxDQUFDLENBQUMsRUFBRVMsTUFBTSxFQUFFLEdBQUtBO2dCQUN0Q2hGO2dCQUNBaUYsWUFBWWhCLGlCQUFpQixDQUFDbEIsVUFBVTtZQUMxQztRQUNGO1FBRUEscUNBQXFDO1FBQ3JDLDRCQUE0QjtRQUM1QixxQ0FBcUM7UUFFckMsSUFBSTdDLGNBQWMsVUFBVTtZQUMxQixLQUFLLE1BQU1nRixrQkFBa0J6RCxPQUFPQyxJQUFJLENBQUNsQixZQUFZd0UsTUFBTSxFQUFHO2dCQUM1RCxNQUFNRyxJQUFBQSxnREFBdUIsRUFBQztvQkFDNUJyRjtvQkFDQUU7b0JBQ0EyRCxVQUFVakQsWUFBWWIsRUFBRTtvQkFDeEJRLFdBQVc2RTtnQkFDYjtZQUNGO1FBQ0Y7UUFFQSxNQUFNSCxJQUFBQSwwQkFBWSxFQUFDO1lBQ2pCakY7WUFDQWtGLFFBQVE7Z0JBQUN4RSxZQUFZd0UsTUFBTTthQUFDO1lBQzVCaEY7WUFDQWlGLFlBQVk7Z0JBQUN2RTthQUFZO1FBQzNCO1FBRUEscUNBQXFDO1FBQ3JDLHlCQUF5QjtRQUN6QixxQ0FBcUM7UUFFckMsS0FBSyxNQUFNLENBQUNrQyxpQkFBaUJ3QyxVQUFVLElBQUkzRCxPQUFPSSxPQUFPLENBQUNMLGlCQUFrQjtZQUMxRSxNQUFNNkQsY0FBY3ZGLFFBQVFjLE1BQU0sQ0FBQ2dDLGdCQUFnQjtZQUNuRCxJQUFJMUMsY0FBYyxVQUFVO2dCQUMxQixNQUFNRixHQUFHb0QsTUFBTSxDQUFDaUMsYUFBYTlFLEtBQUssQ0FBQzhDLElBQUFBLGNBQUUsRUFBQ2dDLFlBQVkvQyxNQUFNLEVBQUU1QixZQUFZYixFQUFFO1lBQzFFO1lBQ0EsTUFBTUcsR0FBR2MsTUFBTSxDQUFDdUUsYUFBYXRFLE1BQU0sQ0FBQ3FFLFdBQVdsRSxTQUFTO1FBQzFEO0lBRUEscUNBQXFDO0lBQ3JDLGlCQUFpQjtJQUNqQixxQ0FBcUM7SUFDdkMsRUFBRSxPQUFPb0UsT0FBTztRQUNkLE1BQU1BLE1BQU1DLElBQUksS0FBSyxVQUNqQixJQUFJQyx1QkFBZSxDQUNqQjtZQUNFO2dCQUNFQyxPQUFPM0YsUUFBUTRGLGdCQUFnQixDQUFDckYsVUFBVSxDQUFDaUYsTUFBTUssVUFBVSxDQUFDO2dCQUM1REMsU0FBU3hGLElBQUl5RixDQUFDLENBQUM7WUFDakI7U0FDRCxFQUNEekYsS0FBS3lGLEtBQUtDLElBQUFBLG1CQUFRLEVBQUMxRixJQUFJMkYsT0FBTyxDQUFDQyxNQUFNLENBQUNDLElBQUksRUFBRUosQ0FBQyxJQUUvQ1A7SUFDTjtJQUVBLHFDQUFxQztJQUNyQyw2QkFBNkI7SUFDN0IscUNBQXFDO0lBRXJDLE1BQU1ZLGVBQWVDLElBQUFBLG9DQUFpQixFQUFDO1FBQ3JDckc7UUFDQXNHLE9BQU87UUFDUG5HO1FBQ0FJO0lBQ0Y7SUFFQTZGLGFBQWEzRixLQUFLLEdBQUc4QyxJQUFBQSxjQUFFLEVBQUN2RCxRQUFRYyxNQUFNLENBQUNQLFVBQVUsQ0FBQ1IsRUFBRSxFQUFFYSxZQUFZYixFQUFFO0lBRXBFLE1BQU13RyxNQUFNLE1BQU1yRyxHQUFHc0csS0FBSyxDQUFDakcsVUFBVSxDQUFDa0csU0FBUyxDQUFDTDtJQUVoRCxxQ0FBcUM7SUFDckMsaUJBQWlCO0lBQ2pCLHFDQUFxQztJQUVyQyxNQUFNTSxTQUFTQyxJQUFBQSxlQUFTLEVBQUk7UUFDMUJULFFBQVFsRyxRQUFRaUcsT0FBTyxDQUFDQyxNQUFNO1FBQzlCakcsTUFBTXNHO1FBQ05wRztJQUNGO0lBRUEsT0FBT3VHO0FBQ1QifQ==
288
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91cHNlcnRSb3cvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCB0eXBlIHsgVHlwZVdpdGhJRCB9IGZyb20gJ3BheWxvYWQvdHlwZXMnXG5cbmltcG9ydCB7IGVxIH0gZnJvbSAnZHJpenpsZS1vcm0nXG5pbXBvcnQgeyBWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICdwYXlsb2FkL2Vycm9ycydcbmltcG9ydCB7IGkxOG5Jbml0IH0gZnJvbSAncGF5bG9hZC91dGlsaXRpZXMnXG5cbmltcG9ydCB0eXBlIHsgQmxvY2tSb3dUb0luc2VydCB9IGZyb20gJy4uL3RyYW5zZm9ybS93cml0ZS90eXBlcydcbmltcG9ydCB0eXBlIHsgQXJncyB9IGZyb20gJy4vdHlwZXMnXG5cbmltcG9ydCB7IGJ1aWxkRmluZE1hbnlBcmdzIH0gZnJvbSAnLi4vZmluZC9idWlsZEZpbmRNYW55QXJncydcbmltcG9ydCB7IHRyYW5zZm9ybSB9IGZyb20gJy4uL3RyYW5zZm9ybS9yZWFkJ1xuaW1wb3J0IHsgdHJhbnNmb3JtRm9yV3JpdGUgfSBmcm9tICcuLi90cmFuc2Zvcm0vd3JpdGUnXG5pbXBvcnQgeyBkZWxldGVFeGlzdGluZ0FycmF5Um93cyB9IGZyb20gJy4vZGVsZXRlRXhpc3RpbmdBcnJheVJvd3MnXG5pbXBvcnQgeyBkZWxldGVFeGlzdGluZ1Jvd3NCeVBhdGggfSBmcm9tICcuL2RlbGV0ZUV4aXN0aW5nUm93c0J5UGF0aCdcbmltcG9ydCB7IGluc2VydEFycmF5cyB9IGZyb20gJy4vaW5zZXJ0QXJyYXlzJ1xuXG5leHBvcnQgY29uc3QgdXBzZXJ0Um93ID0gYXN5bmMgPFQgZXh0ZW5kcyBUeXBlV2l0aElEPih7XG4gIGlkLFxuICBhZGFwdGVyLFxuICBkYXRhLFxuICBkYixcbiAgZmllbGRzLFxuICBvcGVyYXRpb24sXG4gIHBhdGggPSAnJyxcbiAgcmVxLFxuICB0YWJsZU5hbWUsXG4gIHVwc2VydFRhcmdldCxcbiAgd2hlcmUsXG59OiBBcmdzKTogUHJvbWlzZTxUPiA9PiB7XG4gIC8vIFNwbGl0IG91dCB0aGUgaW5jb21pbmcgZGF0YSBpbnRvIHRoZSBjb3JyZXNwb25kaW5nOlxuICAvLyBiYXNlIHJvdywgbG9jYWxlcywgcmVsYXRpb25zaGlwcywgYmxvY2tzLCBhbmQgYXJyYXlzXG4gIGNvbnN0IHJvd1RvSW5zZXJ0ID0gdHJhbnNmb3JtRm9yV3JpdGUoe1xuICAgIGFkYXB0ZXIsXG4gICAgZGF0YSxcbiAgICBmaWVsZHMsXG4gICAgcGF0aCxcbiAgICB0YWJsZU5hbWUsXG4gIH0pXG5cbiAgLy8gRmlyc3QsIHdlIGluc2VydCB0aGUgbWFpbiByb3dcbiAgbGV0IGluc2VydGVkUm93OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuXG4gIHRyeSB7XG4gICAgaWYgKG9wZXJhdGlvbiA9PT0gJ3VwZGF0ZScpIHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IHVwc2VydFRhcmdldCB8fCBhZGFwdGVyLnRhYmxlc1t0YWJsZU5hbWVdLmlkXG5cbiAgICAgIGlmIChpZCkge1xuICAgICAgICByb3dUb0luc2VydC5yb3cuaWQgPSBpZFxuICAgICAgICA7W2luc2VydGVkUm93XSA9IGF3YWl0IGRiXG4gICAgICAgICAgLmluc2VydChhZGFwdGVyLnRhYmxlc1t0YWJsZU5hbWVdKVxuICAgICAgICAgIC52YWx1ZXMocm93VG9JbnNlcnQucm93KVxuICAgICAgICAgIC5vbkNvbmZsaWN0RG9VcGRhdGUoeyBzZXQ6IHJvd1RvSW5zZXJ0LnJvdywgdGFyZ2V0IH0pXG4gICAgICAgICAgLnJldHVybmluZygpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICA7W2luc2VydGVkUm93XSA9IGF3YWl0IGRiXG4gICAgICAgICAgLmluc2VydChhZGFwdGVyLnRhYmxlc1t0YWJsZU5hbWVdKVxuICAgICAgICAgIC52YWx1ZXMocm93VG9JbnNlcnQucm93KVxuICAgICAgICAgIC5vbkNvbmZsaWN0RG9VcGRhdGUoeyBzZXQ6IHJvd1RvSW5zZXJ0LnJvdywgdGFyZ2V0LCB3aGVyZSB9KVxuICAgICAgICAgIC5yZXR1cm5pbmcoKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICA7W2luc2VydGVkUm93XSA9IGF3YWl0IGRiXG4gICAgICAgIC5pbnNlcnQoYWRhcHRlci50YWJsZXNbdGFibGVOYW1lXSlcbiAgICAgICAgLnZhbHVlcyhyb3dUb0luc2VydC5yb3cpXG4gICAgICAgIC5yZXR1cm5pbmcoKVxuICAgIH1cblxuICAgIGNvbnN0IGxvY2FsZXNUb0luc2VydDogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXSA9IFtdXG4gICAgY29uc3QgcmVsYXRpb25zVG9JbnNlcnQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W10gPSBbXVxuICAgIGNvbnN0IHRleHRzVG9JbnNlcnQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W10gPSBbXVxuICAgIGNvbnN0IG51bWJlcnNUb0luc2VydDogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXSA9IFtdXG4gICAgY29uc3QgYmxvY2tzVG9JbnNlcnQ6IHsgW2Jsb2NrVHlwZTogc3RyaW5nXTogQmxvY2tSb3dUb0luc2VydFtdIH0gPSB7fVxuICAgIGNvbnN0IHNlbGVjdHNUb0luc2VydDogeyBbc2VsZWN0VGFibGVOYW1lOiBzdHJpbmddOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdIH0gPSB7fVxuXG4gICAgLy8gSWYgdGhlcmUgYXJlIGxvY2FsZSByb3dzIHdpdGggZGF0YSwgYWRkIHRoZSBwYXJlbnQgYW5kIGxvY2FsZSB0byBlYWNoXG4gICAgaWYgKE9iamVjdC5rZXlzKHJvd1RvSW5zZXJ0LmxvY2FsZXMpLmxlbmd0aCA+IDApIHtcbiAgICAgIE9iamVjdC5lbnRyaWVzKHJvd1RvSW5zZXJ0LmxvY2FsZXMpLmZvckVhY2goKFtsb2NhbGUsIGxvY2FsZVJvd10pID0+IHtcbiAgICAgICAgbG9jYWxlUm93Ll9wYXJlbnRJRCA9IGluc2VydGVkUm93LmlkXG4gICAgICAgIGxvY2FsZVJvdy5fbG9jYWxlID0gbG9jYWxlXG4gICAgICAgIGxvY2FsZXNUb0luc2VydC5wdXNoKGxvY2FsZVJvdylcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gSWYgdGhlcmUgYXJlIHJlbGF0aW9uc2hpcHMsIGFkZCBwYXJlbnQgdG8gZWFjaFxuICAgIGlmIChyb3dUb0luc2VydC5yZWxhdGlvbnNoaXBzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJvd1RvSW5zZXJ0LnJlbGF0aW9uc2hpcHMuZm9yRWFjaCgocmVsYXRpb24pID0+IHtcbiAgICAgICAgcmVsYXRpb24ucGFyZW50ID0gaW5zZXJ0ZWRSb3cuaWRcbiAgICAgICAgcmVsYXRpb25zVG9JbnNlcnQucHVzaChyZWxhdGlvbilcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gSWYgdGhlcmUgYXJlIHRleHRzLCBhZGQgcGFyZW50IHRvIGVhY2hcbiAgICBpZiAocm93VG9JbnNlcnQudGV4dHMubGVuZ3RoID4gMCkge1xuICAgICAgcm93VG9JbnNlcnQudGV4dHMuZm9yRWFjaCgodGV4dFJvdykgPT4ge1xuICAgICAgICB0ZXh0Um93LnBhcmVudCA9IGluc2VydGVkUm93LmlkXG4gICAgICAgIHRleHRzVG9JbnNlcnQucHVzaCh0ZXh0Um93KVxuICAgICAgfSlcbiAgICB9XG5cbiAgICAvLyBJZiB0aGVyZSBhcmUgbnVtYmVycywgYWRkIHBhcmVudCB0byBlYWNoXG4gICAgaWYgKHJvd1RvSW5zZXJ0Lm51bWJlcnMubGVuZ3RoID4gMCkge1xuICAgICAgcm93VG9JbnNlcnQubnVtYmVycy5mb3JFYWNoKChudW1iZXJSb3cpID0+IHtcbiAgICAgICAgbnVtYmVyUm93LnBhcmVudCA9IGluc2VydGVkUm93LmlkXG4gICAgICAgIG51bWJlcnNUb0luc2VydC5wdXNoKG51bWJlclJvdylcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gSWYgdGhlcmUgYXJlIHNlbGVjdHMsIGFkZCBwYXJlbnQgdG8gZWFjaCwgYW5kIHRoZW5cbiAgICAvLyBzdG9yZSBieSB0YWJsZSBuYW1lIGFuZCByb3dzXG4gICAgaWYgKE9iamVjdC5rZXlzKHJvd1RvSW5zZXJ0LnNlbGVjdHMpLmxlbmd0aCA+IDApIHtcbiAgICAgIE9iamVjdC5lbnRyaWVzKHJvd1RvSW5zZXJ0LnNlbGVjdHMpLmZvckVhY2goKFtzZWxlY3RUYWJsZU5hbWUsIHNlbGVjdFJvd3NdKSA9PiB7XG4gICAgICAgIHNlbGVjdFJvd3MuZm9yRWFjaCgocm93KSA9PiB7XG4gICAgICAgICAgaWYgKHR5cGVvZiByb3cucGFyZW50ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgcm93LnBhcmVudCA9IGluc2VydGVkUm93LmlkXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghc2VsZWN0c1RvSW5zZXJ0W3NlbGVjdFRhYmxlTmFtZV0pIHNlbGVjdHNUb0luc2VydFtzZWxlY3RUYWJsZU5hbWVdID0gW11cbiAgICAgICAgICBzZWxlY3RzVG9JbnNlcnRbc2VsZWN0VGFibGVOYW1lXS5wdXNoKHJvdylcbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gSWYgdGhlcmUgYXJlIGJsb2NrcywgYWRkIHBhcmVudCB0byBlYWNoLCBhbmQgdGhlblxuICAgIC8vIHN0b3JlIGJ5IHRhYmxlIG5hbWUgYW5kIHJvd3NcbiAgICBPYmplY3Qua2V5cyhyb3dUb0luc2VydC5ibG9ja3MpLmZvckVhY2goKGJsb2NrTmFtZSkgPT4ge1xuICAgICAgcm93VG9JbnNlcnQuYmxvY2tzW2Jsb2NrTmFtZV0uZm9yRWFjaCgoYmxvY2tSb3cpID0+IHtcbiAgICAgICAgYmxvY2tSb3cucm93Ll9wYXJlbnRJRCA9IGluc2VydGVkUm93LmlkXG4gICAgICAgIGlmICghYmxvY2tzVG9JbnNlcnRbYmxvY2tOYW1lXSkgYmxvY2tzVG9JbnNlcnRbYmxvY2tOYW1lXSA9IFtdXG4gICAgICAgIGlmIChibG9ja1Jvdy5yb3cudXVpZCkge1xuICAgICAgICAgIGRlbGV0ZSBibG9ja1Jvdy5yb3cudXVpZFxuICAgICAgICB9XG4gICAgICAgIGJsb2Nrc1RvSW5zZXJ0W2Jsb2NrTmFtZV0ucHVzaChibG9ja1JvdylcbiAgICAgIH0pXG4gICAgfSlcblxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBJTlNFUlQgTE9DQUxFU1xuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIGlmIChsb2NhbGVzVG9JbnNlcnQubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgbG9jYWxlVGFibGUgPSBhZGFwdGVyLnRhYmxlc1tgJHt0YWJsZU5hbWV9JHthZGFwdGVyLmxvY2FsZXNTdWZmaXh9YF1cblxuICAgICAgaWYgKG9wZXJhdGlvbiA9PT0gJ3VwZGF0ZScpIHtcbiAgICAgICAgYXdhaXQgZGIuZGVsZXRlKGxvY2FsZVRhYmxlKS53aGVyZShlcShsb2NhbGVUYWJsZS5fcGFyZW50SUQsIGluc2VydGVkUm93LmlkKSlcbiAgICAgIH1cblxuICAgICAgYXdhaXQgZGIuaW5zZXJ0KGxvY2FsZVRhYmxlKS52YWx1ZXMobG9jYWxlc1RvSW5zZXJ0KVxuICAgIH1cblxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBJTlNFUlQgUkVMQVRJT05TSElQU1xuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIGNvbnN0IHJlbGF0aW9uc2hpcHNUYWJsZU5hbWUgPSBgJHt0YWJsZU5hbWV9JHthZGFwdGVyLnJlbGF0aW9uc2hpcHNTdWZmaXh9YFxuXG4gICAgaWYgKG9wZXJhdGlvbiA9PT0gJ3VwZGF0ZScpIHtcbiAgICAgIGF3YWl0IGRlbGV0ZUV4aXN0aW5nUm93c0J5UGF0aCh7XG4gICAgICAgIGFkYXB0ZXIsXG4gICAgICAgIGRiLFxuICAgICAgICBsb2NhbGVDb2x1bW5OYW1lOiAnbG9jYWxlJyxcbiAgICAgICAgcGFyZW50Q29sdW1uTmFtZTogJ3BhcmVudCcsXG4gICAgICAgIHBhcmVudElEOiBpbnNlcnRlZFJvdy5pZCxcbiAgICAgICAgcGF0aENvbHVtbk5hbWU6ICdwYXRoJyxcbiAgICAgICAgcm93czogWy4uLnJlbGF0aW9uc1RvSW5zZXJ0LCAuLi5yb3dUb0luc2VydC5yZWxhdGlvbnNoaXBzVG9EZWxldGVdLFxuICAgICAgICB0YWJsZU5hbWU6IHJlbGF0aW9uc2hpcHNUYWJsZU5hbWUsXG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmIChyZWxhdGlvbnNUb0luc2VydC5sZW5ndGggPiAwKSB7XG4gICAgICBhd2FpdCBkYi5pbnNlcnQoYWRhcHRlci50YWJsZXNbcmVsYXRpb25zaGlwc1RhYmxlTmFtZV0pLnZhbHVlcyhyZWxhdGlvbnNUb0luc2VydClcbiAgICB9XG5cbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gSU5TRVJUIGhhc01hbnkgVEVYVFNcbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgICBjb25zdCB0ZXh0c1RhYmxlTmFtZSA9IGAke3RhYmxlTmFtZX1fdGV4dHNgXG5cbiAgICBpZiAob3BlcmF0aW9uID09PSAndXBkYXRlJykge1xuICAgICAgYXdhaXQgZGVsZXRlRXhpc3RpbmdSb3dzQnlQYXRoKHtcbiAgICAgICAgYWRhcHRlcixcbiAgICAgICAgZGIsXG4gICAgICAgIGxvY2FsZUNvbHVtbk5hbWU6ICdsb2NhbGUnLFxuICAgICAgICBwYXJlbnRDb2x1bW5OYW1lOiAncGFyZW50JyxcbiAgICAgICAgcGFyZW50SUQ6IGluc2VydGVkUm93LmlkLFxuICAgICAgICBwYXRoQ29sdW1uTmFtZTogJ3BhdGgnLFxuICAgICAgICByb3dzOiB0ZXh0c1RvSW5zZXJ0LFxuICAgICAgICB0YWJsZU5hbWU6IHRleHRzVGFibGVOYW1lLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICBpZiAodGV4dHNUb0luc2VydC5sZW5ndGggPiAwKSB7XG4gICAgICBhd2FpdCBkYi5pbnNlcnQoYWRhcHRlci50YWJsZXNbdGV4dHNUYWJsZU5hbWVdKS52YWx1ZXModGV4dHNUb0luc2VydCkucmV0dXJuaW5nKClcbiAgICB9XG5cbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gSU5TRVJUIGhhc01hbnkgTlVNQkVSU1xuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIGNvbnN0IG51bWJlcnNUYWJsZU5hbWUgPSBgJHt0YWJsZU5hbWV9X251bWJlcnNgXG5cbiAgICBpZiAob3BlcmF0aW9uID09PSAndXBkYXRlJykge1xuICAgICAgYXdhaXQgZGVsZXRlRXhpc3RpbmdSb3dzQnlQYXRoKHtcbiAgICAgICAgYWRhcHRlcixcbiAgICAgICAgZGIsXG4gICAgICAgIGxvY2FsZUNvbHVtbk5hbWU6ICdsb2NhbGUnLFxuICAgICAgICBwYXJlbnRDb2x1bW5OYW1lOiAncGFyZW50JyxcbiAgICAgICAgcGFyZW50SUQ6IGluc2VydGVkUm93LmlkLFxuICAgICAgICBwYXRoQ29sdW1uTmFtZTogJ3BhdGgnLFxuICAgICAgICByb3dzOiBudW1iZXJzVG9JbnNlcnQsXG4gICAgICAgIHRhYmxlTmFtZTogbnVtYmVyc1RhYmxlTmFtZSxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgaWYgKG51bWJlcnNUb0luc2VydC5sZW5ndGggPiAwKSB7XG4gICAgICBhd2FpdCBkYi5pbnNlcnQoYWRhcHRlci50YWJsZXNbbnVtYmVyc1RhYmxlTmFtZV0pLnZhbHVlcyhudW1iZXJzVG9JbnNlcnQpLnJldHVybmluZygpXG4gICAgfVxuXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIElOU0VSVCBCTE9DS1NcbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgICBjb25zdCBpbnNlcnRlZEJsb2NrUm93czogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXT4gPSB7fVxuXG4gICAgaWYgKG9wZXJhdGlvbiA9PT0gJ3VwZGF0ZScpIHtcbiAgICAgIGZvciAoY29uc3QgYmxvY2tOYW1lIG9mIHJvd1RvSW5zZXJ0LmJsb2Nrc1RvRGVsZXRlKSB7XG4gICAgICAgIGNvbnN0IGJsb2NrVGFibGVOYW1lID0gYWRhcHRlci50YWJsZU5hbWVNYXAuZ2V0KGAke3RhYmxlTmFtZX1fYmxvY2tzXyR7YmxvY2tOYW1lfWApXG4gICAgICAgIGNvbnN0IGJsb2NrVGFibGUgPSBhZGFwdGVyLnRhYmxlc1tibG9ja1RhYmxlTmFtZV1cbiAgICAgICAgYXdhaXQgZGIuZGVsZXRlKGJsb2NrVGFibGUpLndoZXJlKGVxKGJsb2NrVGFibGUuX3BhcmVudElELCBpbnNlcnRlZFJvdy5pZCkpXG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBbYmxvY2tOYW1lLCBibG9ja1Jvd3NdIG9mIE9iamVjdC5lbnRyaWVzKGJsb2Nrc1RvSW5zZXJ0KSkge1xuICAgICAgY29uc3QgYmxvY2tUYWJsZU5hbWUgPSBhZGFwdGVyLnRhYmxlTmFtZU1hcC5nZXQoYCR7dGFibGVOYW1lfV9ibG9ja3NfJHtibG9ja05hbWV9YClcbiAgICAgIGluc2VydGVkQmxvY2tSb3dzW2Jsb2NrTmFtZV0gPSBhd2FpdCBkYlxuICAgICAgICAuaW5zZXJ0KGFkYXB0ZXIudGFibGVzW2Jsb2NrVGFibGVOYW1lXSlcbiAgICAgICAgLnZhbHVlcyhibG9ja1Jvd3MubWFwKCh7IHJvdyB9KSA9PiByb3cpKVxuICAgICAgICAucmV0dXJuaW5nKClcblxuICAgICAgaW5zZXJ0ZWRCbG9ja1Jvd3NbYmxvY2tOYW1lXS5mb3JFYWNoKChyb3csIGkpID0+IHtcbiAgICAgICAgYmxvY2tSb3dzW2ldLnJvdyA9IHJvd1xuICAgICAgfSlcblxuICAgICAgY29uc3QgYmxvY2tMb2NhbGVJbmRleE1hcDogbnVtYmVyW10gPSBbXVxuXG4gICAgICBjb25zdCBibG9ja0xvY2FsZVJvd3NUb0luc2VydCA9IGJsb2NrUm93cy5yZWR1Y2UoKGFjYywgYmxvY2tSb3csIGkpID0+IHtcbiAgICAgICAgaWYgKE9iamVjdC5lbnRyaWVzKGJsb2NrUm93LmxvY2FsZXMpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBPYmplY3QuZW50cmllcyhibG9ja1Jvdy5sb2NhbGVzKS5mb3JFYWNoKChbYmxvY2tMb2NhbGUsIGJsb2NrTG9jYWxlRGF0YV0pID0+IHtcbiAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhibG9ja0xvY2FsZURhdGEpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgYmxvY2tMb2NhbGVEYXRhLl9wYXJlbnRJRCA9IGJsb2NrUm93LnJvdy5pZFxuICAgICAgICAgICAgICBibG9ja0xvY2FsZURhdGEuX2xvY2FsZSA9IGJsb2NrTG9jYWxlXG4gICAgICAgICAgICAgIGFjYy5wdXNoKGJsb2NrTG9jYWxlRGF0YSlcbiAgICAgICAgICAgICAgYmxvY2tMb2NhbGVJbmRleE1hcC5wdXNoKGkpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhY2NcbiAgICAgIH0sIFtdKVxuXG4gICAgICBpZiAoYmxvY2tMb2NhbGVSb3dzVG9JbnNlcnQubGVuZ3RoID4gMCkge1xuICAgICAgICBhd2FpdCBkYlxuICAgICAgICAgIC5pbnNlcnQoYWRhcHRlci50YWJsZXNbYCR7YmxvY2tUYWJsZU5hbWV9JHthZGFwdGVyLmxvY2FsZXNTdWZmaXh9YF0pXG4gICAgICAgICAgLnZhbHVlcyhibG9ja0xvY2FsZVJvd3NUb0luc2VydClcbiAgICAgICAgICAucmV0dXJuaW5nKClcbiAgICAgIH1cblxuICAgICAgYXdhaXQgaW5zZXJ0QXJyYXlzKHtcbiAgICAgICAgYWRhcHRlcixcbiAgICAgICAgYXJyYXlzOiBibG9ja1Jvd3MubWFwKCh7IGFycmF5cyB9KSA9PiBhcnJheXMpLFxuICAgICAgICBkYixcbiAgICAgICAgcGFyZW50Um93czogaW5zZXJ0ZWRCbG9ja1Jvd3NbYmxvY2tOYW1lXSxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIElOU0VSVCBBUlJBWVMgUkVDVVJTSVZFTFlcbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgICBpZiAob3BlcmF0aW9uID09PSAndXBkYXRlJykge1xuICAgICAgZm9yIChjb25zdCBhcnJheVRhYmxlTmFtZSBvZiBPYmplY3Qua2V5cyhyb3dUb0luc2VydC5hcnJheXMpKSB7XG4gICAgICAgIGF3YWl0IGRlbGV0ZUV4aXN0aW5nQXJyYXlSb3dzKHtcbiAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgIGRiLFxuICAgICAgICAgIHBhcmVudElEOiBpbnNlcnRlZFJvdy5pZCxcbiAgICAgICAgICB0YWJsZU5hbWU6IGFycmF5VGFibGVOYW1lLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cblxuICAgIGF3YWl0IGluc2VydEFycmF5cyh7XG4gICAgICBhZGFwdGVyLFxuICAgICAgYXJyYXlzOiBbcm93VG9JbnNlcnQuYXJyYXlzXSxcbiAgICAgIGRiLFxuICAgICAgcGFyZW50Um93czogW2luc2VydGVkUm93XSxcbiAgICB9KVxuXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIElOU0VSVCBoYXNNYW55IFNFTEVDVFNcbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgICBmb3IgKGNvbnN0IFtzZWxlY3RUYWJsZU5hbWUsIHRhYmxlUm93c10gb2YgT2JqZWN0LmVudHJpZXMoc2VsZWN0c1RvSW5zZXJ0KSkge1xuICAgICAgY29uc3Qgc2VsZWN0VGFibGUgPSBhZGFwdGVyLnRhYmxlc1tzZWxlY3RUYWJsZU5hbWVdXG4gICAgICBpZiAob3BlcmF0aW9uID09PSAndXBkYXRlJykge1xuICAgICAgICBhd2FpdCBkYi5kZWxldGUoc2VsZWN0VGFibGUpLndoZXJlKGVxKHNlbGVjdFRhYmxlLnBhcmVudCwgaW5zZXJ0ZWRSb3cuaWQpKVxuICAgICAgfVxuICAgICAgYXdhaXQgZGIuaW5zZXJ0KHNlbGVjdFRhYmxlKS52YWx1ZXModGFibGVSb3dzKS5yZXR1cm5pbmcoKVxuICAgIH1cblxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBFcnJvciBIYW5kbGluZ1xuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICB0aHJvdyBlcnJvci5jb2RlID09PSAnMjM1MDUnXG4gICAgICA/IG5ldyBWYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgICAgW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBmaWVsZDogYWRhcHRlci5maWVsZENvbnN0cmFpbnRzW3RhYmxlTmFtZV1bZXJyb3IuY29uc3RyYWludF0sXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IHJlcS50KCdlcnJvcjp2YWx1ZU11c3RCZVVuaXF1ZScpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHJlcT8udCA/PyBpMThuSW5pdChyZXEucGF5bG9hZC5jb25maWcuaTE4bikudCxcbiAgICAgICAgKVxuICAgICAgOiBlcnJvclxuICB9XG5cbiAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAvLyBSRVRSSUVWRSBORVdMWSBVUERBVEVEIFJPV1xuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgY29uc3QgZmluZE1hbnlBcmdzID0gYnVpbGRGaW5kTWFueUFyZ3Moe1xuICAgIGFkYXB0ZXIsXG4gICAgZGVwdGg6IDAsXG4gICAgZmllbGRzLFxuICAgIHRhYmxlTmFtZSxcbiAgfSlcblxuICBmaW5kTWFueUFyZ3Mud2hlcmUgPSBlcShhZGFwdGVyLnRhYmxlc1t0YWJsZU5hbWVdLmlkLCBpbnNlcnRlZFJvdy5pZClcblxuICBjb25zdCBkb2MgPSBhd2FpdCBkYi5xdWVyeVt0YWJsZU5hbWVdLmZpbmRGaXJzdChmaW5kTWFueUFyZ3MpXG5cbiAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAvLyBUUkFOU0ZPUk0gREFUQVxuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgY29uc3QgcmVzdWx0ID0gdHJhbnNmb3JtPFQ+KHtcbiAgICBjb25maWc6IGFkYXB0ZXIucGF5bG9hZC5jb25maWcsXG4gICAgZGF0YTogZG9jLFxuICAgIGZpZWxkcyxcbiAgfSlcblxuICByZXR1cm4gcmVzdWx0XG59XG4iXSwibmFtZXMiOlsidXBzZXJ0Um93IiwiaWQiLCJhZGFwdGVyIiwiZGF0YSIsImRiIiwiZmllbGRzIiwib3BlcmF0aW9uIiwicGF0aCIsInJlcSIsInRhYmxlTmFtZSIsInVwc2VydFRhcmdldCIsIndoZXJlIiwicm93VG9JbnNlcnQiLCJ0cmFuc2Zvcm1Gb3JXcml0ZSIsImluc2VydGVkUm93IiwidGFyZ2V0IiwidGFibGVzIiwicm93IiwiaW5zZXJ0IiwidmFsdWVzIiwib25Db25mbGljdERvVXBkYXRlIiwic2V0IiwicmV0dXJuaW5nIiwibG9jYWxlc1RvSW5zZXJ0IiwicmVsYXRpb25zVG9JbnNlcnQiLCJ0ZXh0c1RvSW5zZXJ0IiwibnVtYmVyc1RvSW5zZXJ0IiwiYmxvY2tzVG9JbnNlcnQiLCJzZWxlY3RzVG9JbnNlcnQiLCJPYmplY3QiLCJrZXlzIiwibG9jYWxlcyIsImxlbmd0aCIsImVudHJpZXMiLCJmb3JFYWNoIiwibG9jYWxlIiwibG9jYWxlUm93IiwiX3BhcmVudElEIiwiX2xvY2FsZSIsInB1c2giLCJyZWxhdGlvbnNoaXBzIiwicmVsYXRpb24iLCJwYXJlbnQiLCJ0ZXh0cyIsInRleHRSb3ciLCJudW1iZXJzIiwibnVtYmVyUm93Iiwic2VsZWN0cyIsInNlbGVjdFRhYmxlTmFtZSIsInNlbGVjdFJvd3MiLCJibG9ja3MiLCJibG9ja05hbWUiLCJibG9ja1JvdyIsInV1aWQiLCJsb2NhbGVUYWJsZSIsImxvY2FsZXNTdWZmaXgiLCJkZWxldGUiLCJlcSIsInJlbGF0aW9uc2hpcHNUYWJsZU5hbWUiLCJyZWxhdGlvbnNoaXBzU3VmZml4IiwiZGVsZXRlRXhpc3RpbmdSb3dzQnlQYXRoIiwibG9jYWxlQ29sdW1uTmFtZSIsInBhcmVudENvbHVtbk5hbWUiLCJwYXJlbnRJRCIsInBhdGhDb2x1bW5OYW1lIiwicm93cyIsInJlbGF0aW9uc2hpcHNUb0RlbGV0ZSIsInRleHRzVGFibGVOYW1lIiwibnVtYmVyc1RhYmxlTmFtZSIsImluc2VydGVkQmxvY2tSb3dzIiwiYmxvY2tzVG9EZWxldGUiLCJibG9ja1RhYmxlTmFtZSIsInRhYmxlTmFtZU1hcCIsImdldCIsImJsb2NrVGFibGUiLCJibG9ja1Jvd3MiLCJtYXAiLCJpIiwiYmxvY2tMb2NhbGVJbmRleE1hcCIsImJsb2NrTG9jYWxlUm93c1RvSW5zZXJ0IiwicmVkdWNlIiwiYWNjIiwiYmxvY2tMb2NhbGUiLCJibG9ja0xvY2FsZURhdGEiLCJpbnNlcnRBcnJheXMiLCJhcnJheXMiLCJwYXJlbnRSb3dzIiwiYXJyYXlUYWJsZU5hbWUiLCJkZWxldGVFeGlzdGluZ0FycmF5Um93cyIsInRhYmxlUm93cyIsInNlbGVjdFRhYmxlIiwiZXJyb3IiLCJjb2RlIiwiVmFsaWRhdGlvbkVycm9yIiwiZmllbGQiLCJmaWVsZENvbnN0cmFpbnRzIiwiY29uc3RyYWludCIsIm1lc3NhZ2UiLCJ0IiwiaTE4bkluaXQiLCJwYXlsb2FkIiwiY29uZmlnIiwiaTE4biIsImZpbmRNYW55QXJncyIsImJ1aWxkRmluZE1hbnlBcmdzIiwiZGVwdGgiLCJkb2MiLCJxdWVyeSIsImZpbmRGaXJzdCIsInJlc3VsdCIsInRyYW5zZm9ybSJdLCJtYXBwaW5ncyI6IkFBQUEsb0NBQW9DOzs7OytCQWlCdkJBOzs7ZUFBQUE7Ozs0QkFkTTt3QkFDYTsyQkFDUDttQ0FL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
@@ -53,7 +53,7 @@ const insertArrays = async ({ adapter, arrays, db, parentRows })=>{
53
53
  // Insert locale rows
54
54
  if (adapter.tables[`${tableName}${adapter.localesSuffix}`] && row.locales.length > 0) {
55
55
  if (!row.locales[0]._parentID) {
56
- row.locales = row.locales.map((localeRow, i)=>{
56
+ row.locales = row.locales.map((localeRow)=>{
57
57
  if (typeof localeRow._getParentID === 'function') {
58
58
  localeRow._parentID = localeRow._getParentID(insertedRows);
59
59
  delete localeRow._getParentID;
@@ -75,4 +75,4 @@ const insertArrays = async ({ adapter, arrays, db, parentRows })=>{
75
75
  }
76
76
  };
77
77
 
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91cHNlcnRSb3cvaW5zZXJ0QXJyYXlzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXBhcmFtLXJlYXNzaWduICovXG5pbXBvcnQgdHlwZSB7IEFycmF5Um93VG9JbnNlcnQgfSBmcm9tICcuLi90cmFuc2Zvcm0vd3JpdGUvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IERyaXp6bGVEQiwgUG9zdGdyZXNBZGFwdGVyIH0gZnJvbSAnLi4vdHlwZXMnXG5cbnR5cGUgQXJncyA9IHtcbiAgYWRhcHRlcjogUG9zdGdyZXNBZGFwdGVyXG4gIGFycmF5czoge1xuICAgIFt0YWJsZU5hbWU6IHN0cmluZ106IEFycmF5Um93VG9JbnNlcnRbXVxuICB9W11cbiAgZGI6IERyaXp6bGVEQlxuICBwYXJlbnRSb3dzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdXG59XG5cbnR5cGUgUm93c0J5VGFibGUgPSB7XG4gIFt0YWJsZU5hbWU6IHN0cmluZ106IHtcbiAgICBhcnJheXM6IHtcbiAgICAgIFt0YWJsZU5hbWU6IHN0cmluZ106IEFycmF5Um93VG9JbnNlcnRbXVxuICAgIH1bXVxuICAgIGxvY2FsZXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W11cbiAgICByb3dzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdXG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGluc2VydEFycmF5cyA9IGFzeW5jICh7IGFkYXB0ZXIsIGFycmF5cywgZGIsIHBhcmVudFJvd3MgfTogQXJncyk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAvLyBNYWludGFpbiBhIG1hcCBvZiBmbGF0dGVuZWQgcm93cyBieSB0YWJsZVxuICBjb25zdCByb3dzQnlUYWJsZTogUm93c0J5VGFibGUgPSB7fVxuXG4gIGFycmF5cy5mb3JFYWNoKChhcnJheXNCeVRhYmxlLCBwYXJlbnRSb3dJbmRleCkgPT4ge1xuICAgIE9iamVjdC5lbnRyaWVzKGFycmF5c0J5VGFibGUpLmZvckVhY2goKFt0YWJsZU5hbWUsIGFycmF5Um93c10pID0+IHtcbiAgICAgIC8vIElmIHRoZSB0YWJsZSBkb2Vzbid0IGV4aXN0IGluIG1hcCwgaW5pdGlhbGl6ZSBpdFxuICAgICAgaWYgKCFyb3dzQnlUYWJsZVt0YWJsZU5hbWVdKSB7XG4gICAgICAgIHJvd3NCeVRhYmxlW3RhYmxlTmFtZV0gPSB7XG4gICAgICAgICAgYXJyYXlzOiBbXSxcbiAgICAgICAgICBsb2NhbGVzOiBbXSxcbiAgICAgICAgICByb3dzOiBbXSxcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBwYXJlbnRJRCA9IHBhcmVudFJvd3NbcGFyZW50Um93SW5kZXhdLmlkXG5cbiAgICAgIC8vIEFkZCBhbnkgc3ViIGFycmF5cyB0aGF0IG5lZWQgdG8gYmUgY3JlYXRlZFxuICAgICAgLy8gV2Ugd2lsbCBjYWxsIHRoaXMgcmVjdXJzaXZlbHkgYmVsb3dcbiAgICAgIGFycmF5Um93cy5mb3JFYWNoKChhcnJheVJvdywgaSkgPT4ge1xuICAgICAgICBpZiAoT2JqZWN0LmtleXMoYXJyYXlSb3cuYXJyYXlzKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgcm93c0J5VGFibGVbdGFibGVOYW1lXS5hcnJheXMucHVzaChhcnJheVJvdy5hcnJheXMpXG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZXQgdXAgcGFyZW50IElEcyBmb3IgYm90aCByb3cgYW5kIGxvY2FsZSByb3dcbiAgICAgICAgYXJyYXlSb3cucm93Ll9wYXJlbnRJRCA9IHBhcmVudElEXG4gICAgICAgIHJvd3NCeVRhYmxlW3RhYmxlTmFtZV0ucm93cy5wdXNoKGFycmF5Um93LnJvdylcblxuICAgICAgICBPYmplY3QuZW50cmllcyhhcnJheVJvdy5sb2NhbGVzKS5mb3JFYWNoKChbYXJyYXlSb3dMb2NhbGUsIGFycmF5Um93TG9jYWxlRGF0YV0pID0+IHtcbiAgICAgICAgICBhcnJheVJvd0xvY2FsZURhdGEuX3BhcmVudElEID0gYXJyYXlSb3cucm93LmlkXG4gICAgICAgICAgYXJyYXlSb3dMb2NhbGVEYXRhLl9sb2NhbGUgPSBhcnJheVJvd0xvY2FsZVxuICAgICAgICAgIHJvd3NCeVRhYmxlW3RhYmxlTmFtZV0ubG9jYWxlcy5wdXNoKGFycmF5Um93TG9jYWxlRGF0YSlcbiAgICAgICAgICBpZiAoIWFycmF5Um93LnJvdy5pZCkge1xuICAgICAgICAgICAgYXJyYXlSb3dMb2NhbGVEYXRhLl9nZXRQYXJlbnRJRCA9IChyb3dzKSA9PiByb3dzW2ldLmlkXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgfSlcbiAgICB9KVxuICB9KVxuXG4gIC8vIEluc2VydCBhbGwgY29ycmVzcG9uZGluZyBhcnJheXNcbiAgLy8gKG9uZSBpbnNlcnQgcGVyIGFycmF5IHRhYmxlKVxuICBmb3IgKGNvbnN0IFt0YWJsZU5hbWUsIHJvd10gb2YgT2JqZWN0LmVudHJpZXMocm93c0J5VGFibGUpKSB7XG4gICAgLy8gdGhlIG5lc3RlZCBhcnJheXMgbmVlZCB0aGUgSUQgZm9yIHRoZSBwYXJlbnRJRCBmb3JlaWduIGtleVxuICAgIGxldCBpbnNlcnRlZFJvd3M6IEFyZ3NbJ3BhcmVudFJvd3MnXVxuICAgIGlmIChyb3cucm93cy5sZW5ndGggPiAwKSB7XG4gICAgICBpbnNlcnRlZFJvd3MgPSBhd2FpdCBkYi5pbnNlcnQoYWRhcHRlci50YWJsZXNbdGFibGVOYW1lXSkudmFsdWVzKHJvdy5yb3dzKS5yZXR1cm5pbmcoKVxuICAgIH1cblxuICAgIC8vIEluc2VydCBsb2NhbGUgcm93c1xuICAgIGlmIChhZGFwdGVyLnRhYmxlc1tgJHt0YWJsZU5hbWV9JHthZGFwdGVyLmxvY2FsZXNTdWZmaXh9YF0gJiYgcm93LmxvY2FsZXMubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKCFyb3cubG9jYWxlc1swXS5fcGFyZW50SUQpIHtcbiAgICAgICAgcm93LmxvY2FsZXMgPSByb3cubG9jYWxlcy5tYXAoKGxvY2FsZVJvdywgaSkgPT4ge1xuICAgICAgICAgIGlmICh0eXBlb2YgbG9jYWxlUm93Ll9nZXRQYXJlbnRJRCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgbG9jYWxlUm93Ll9wYXJlbnRJRCA9IGxvY2FsZVJvdy5fZ2V0UGFyZW50SUQoaW5zZXJ0ZWRSb3dzKVxuICAgICAgICAgICAgZGVsZXRlIGxvY2FsZVJvdy5fZ2V0UGFyZW50SURcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGxvY2FsZVJvd1xuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgYXdhaXQgZGJcbiAgICAgICAgLmluc2VydChhZGFwdGVyLnRhYmxlc1tgJHt0YWJsZU5hbWV9JHthZGFwdGVyLmxvY2FsZXNTdWZmaXh9YF0pXG4gICAgICAgIC52YWx1ZXMocm93LmxvY2FsZXMpXG4gICAgICAgIC5yZXR1cm5pbmcoKVxuICAgIH1cblxuICAgIC8vIElmIHRoZXJlIGFyZSBzdWIgYXJyYXlzLCBjYWxsIHRoaXMgZnVuY3Rpb24gcmVjdXJzaXZlbHlcbiAgICBpZiAocm93LmFycmF5cy5sZW5ndGggPiAwKSB7XG4gICAgICBhd2FpdCBpbnNlcnRBcnJheXMoe1xuICAgICAgICBhZGFwdGVyLFxuICAgICAgICBhcnJheXM6IHJvdy5hcnJheXMsXG4gICAgICAgIGRiLFxuICAgICAgICBwYXJlbnRSb3dzOiBpbnNlcnRlZFJvd3MsXG4gICAgICB9KVxuICAgIH1cbiAgfVxufVxuIl0sIm5hbWVzIjpbImluc2VydEFycmF5cyIsImFkYXB0ZXIiLCJhcnJheXMiLCJkYiIsInBhcmVudFJvd3MiLCJyb3dzQnlUYWJsZSIsImZvckVhY2giLCJhcnJheXNCeVRhYmxlIiwicGFyZW50Um93SW5kZXgiLCJPYmplY3QiLCJlbnRyaWVzIiwidGFibGVOYW1lIiwiYXJyYXlSb3dzIiwibG9jYWxlcyIsInJvd3MiLCJwYXJlbnRJRCIsImlkIiwiYXJyYXlSb3ciLCJpIiwia2V5cyIsImxlbmd0aCIsInB1c2giLCJyb3ciLCJfcGFyZW50SUQiLCJhcnJheVJvd0xvY2FsZSIsImFycmF5Um93TG9jYWxlRGF0YSIsIl9sb2NhbGUiLCJfZ2V0UGFyZW50SUQiLCJpbnNlcnRlZFJvd3MiLCJpbnNlcnQiLCJ0YWJsZXMiLCJ2YWx1ZXMiLCJyZXR1cm5pbmciLCJsb2NhbGVzU3VmZml4IiwibWFwIiwibG9jYWxlUm93Il0sIm1hcHBpbmdzIjoiQUFBQSxvQ0FBb0M7Ozs7K0JBdUJ2QkE7OztlQUFBQTs7O0FBQU4sTUFBTUEsZUFBZSxPQUFPLEVBQUVDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxFQUFFLEVBQUVDLFVBQVUsRUFBUTtJQUMxRSw0Q0FBNEM7SUFDNUMsTUFBTUMsY0FBMkIsQ0FBQztJQUVsQ0gsT0FBT0ksT0FBTyxDQUFDLENBQUNDLGVBQWVDO1FBQzdCQyxPQUFPQyxPQUFPLENBQUNILGVBQWVELE9BQU8sQ0FBQyxDQUFDLENBQUNLLFdBQVdDLFVBQVU7WUFDM0QsbURBQW1EO1lBQ25ELElBQUksQ0FBQ1AsV0FBVyxDQUFDTSxVQUFVLEVBQUU7Z0JBQzNCTixXQUFXLENBQUNNLFVBQVUsR0FBRztvQkFDdkJULFFBQVEsRUFBRTtvQkFDVlcsU0FBUyxFQUFFO29CQUNYQyxNQUFNLEVBQUU7Z0JBQ1Y7WUFDRjtZQUVBLE1BQU1DLFdBQVdYLFVBQVUsQ0FBQ0ksZUFBZSxDQUFDUSxFQUFFO1lBRTlDLDZDQUE2QztZQUM3QyxzQ0FBc0M7WUFDdENKLFVBQVVOLE9BQU8sQ0FBQyxDQUFDVyxVQUFVQztnQkFDM0IsSUFBSVQsT0FBT1UsSUFBSSxDQUFDRixTQUFTZixNQUFNLEVBQUVrQixNQUFNLEdBQUcsR0FBRztvQkFDM0NmLFdBQVcsQ0FBQ00sVUFBVSxDQUFDVCxNQUFNLENBQUNtQixJQUFJLENBQUNKLFNBQVNmLE1BQU07Z0JBQ3BEO2dCQUVBLGdEQUFnRDtnQkFDaERlLFNBQVNLLEdBQUcsQ0FBQ0MsU0FBUyxHQUFHUjtnQkFDekJWLFdBQVcsQ0FBQ00sVUFBVSxDQUFDRyxJQUFJLENBQUNPLElBQUksQ0FBQ0osU0FBU0ssR0FBRztnQkFFN0NiLE9BQU9DLE9BQU8sQ0FBQ08sU0FBU0osT0FBTyxFQUFFUCxPQUFPLENBQUMsQ0FBQyxDQUFDa0IsZ0JBQWdCQyxtQkFBbUI7b0JBQzVFQSxtQkFBbUJGLFNBQVMsR0FBR04sU0FBU0ssR0FBRyxDQUFDTixFQUFFO29CQUM5Q1MsbUJBQW1CQyxPQUFPLEdBQUdGO29CQUM3Qm5CLFdBQVcsQ0FBQ00sVUFBVSxDQUFDRSxPQUFPLENBQUNRLElBQUksQ0FBQ0k7b0JBQ3BDLElBQUksQ0FBQ1IsU0FBU0ssR0FBRyxDQUFDTixFQUFFLEVBQUU7d0JBQ3BCUyxtQkFBbUJFLFlBQVksR0FBRyxDQUFDYixPQUFTQSxJQUFJLENBQUNJLEVBQUUsQ0FBQ0YsRUFBRTtvQkFDeEQ7Z0JBQ0Y7WUFDRjtRQUNGO0lBQ0Y7SUFFQSxrQ0FBa0M7SUFDbEMsK0JBQStCO0lBQy9CLEtBQUssTUFBTSxDQUFDTCxXQUFXVyxJQUFJLElBQUliLE9BQU9DLE9BQU8sQ0FBQ0wsYUFBYztRQUMxRCw2REFBNkQ7UUFDN0QsSUFBSXVCO1FBQ0osSUFBSU4sSUFBSVIsSUFBSSxDQUFDTSxNQUFNLEdBQUcsR0FBRztZQUN2QlEsZUFBZSxNQUFNekIsR0FBRzBCLE1BQU0sQ0FBQzVCLFFBQVE2QixNQUFNLENBQUNuQixVQUFVLEVBQUVvQixNQUFNLENBQUNULElBQUlSLElBQUksRUFBRWtCLFNBQVM7UUFDdEY7UUFFQSxxQkFBcUI7UUFDckIsSUFBSS9CLFFBQVE2QixNQUFNLENBQUMsQ0FBQyxFQUFFbkIsVUFBVSxFQUFFVixRQUFRZ0MsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJWCxJQUFJVCxPQUFPLENBQUNPLE1BQU0sR0FBRyxHQUFHO1lBQ3BGLElBQUksQ0FBQ0UsSUFBSVQsT0FBTyxDQUFDLEVBQUUsQ0FBQ1UsU0FBUyxFQUFFO2dCQUM3QkQsSUFBSVQsT0FBTyxHQUFHUyxJQUFJVCxPQUFPLENBQUNxQixHQUFHLENBQUMsQ0FBQ0MsV0FBV2pCO29CQUN4QyxJQUFJLE9BQU9pQixVQUFVUixZQUFZLEtBQUssWUFBWTt3QkFDaERRLFVBQVVaLFNBQVMsR0FBR1ksVUFBVVIsWUFBWSxDQUFDQzt3QkFDN0MsT0FBT08sVUFBVVIsWUFBWTtvQkFDL0I7b0JBQ0EsT0FBT1E7Z0JBQ1Q7WUFDRjtZQUNBLE1BQU1oQyxHQUNIMEIsTUFBTSxDQUFDNUIsUUFBUTZCLE1BQU0sQ0FBQyxDQUFDLEVBQUVuQixVQUFVLEVBQUVWLFFBQVFnQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQzdERixNQUFNLENBQUNULElBQUlULE9BQU8sRUFDbEJtQixTQUFTO1FBQ2Q7UUFFQSwwREFBMEQ7UUFDMUQsSUFBSVYsSUFBSXBCLE1BQU0sQ0FBQ2tCLE1BQU0sR0FBRyxHQUFHO1lBQ3pCLE1BQU1wQixhQUFhO2dCQUNqQkM7Z0JBQ0FDLFFBQVFvQixJQUFJcEIsTUFBTTtnQkFDbEJDO2dCQUNBQyxZQUFZd0I7WUFDZDtRQUNGO0lBQ0Y7QUFDRiJ9
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91cHNlcnRSb3cvaW5zZXJ0QXJyYXlzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXBhcmFtLXJlYXNzaWduICovXG5pbXBvcnQgdHlwZSB7IEFycmF5Um93VG9JbnNlcnQgfSBmcm9tICcuLi90cmFuc2Zvcm0vd3JpdGUvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IERyaXp6bGVEQiwgUG9zdGdyZXNBZGFwdGVyIH0gZnJvbSAnLi4vdHlwZXMnXG5cbnR5cGUgQXJncyA9IHtcbiAgYWRhcHRlcjogUG9zdGdyZXNBZGFwdGVyXG4gIGFycmF5czoge1xuICAgIFt0YWJsZU5hbWU6IHN0cmluZ106IEFycmF5Um93VG9JbnNlcnRbXVxuICB9W11cbiAgZGI6IERyaXp6bGVEQlxuICBwYXJlbnRSb3dzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdXG59XG5cbnR5cGUgUm93c0J5VGFibGUgPSB7XG4gIFt0YWJsZU5hbWU6IHN0cmluZ106IHtcbiAgICBhcnJheXM6IHtcbiAgICAgIFt0YWJsZU5hbWU6IHN0cmluZ106IEFycmF5Um93VG9JbnNlcnRbXVxuICAgIH1bXVxuICAgIGxvY2FsZXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W11cbiAgICByb3dzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdXG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGluc2VydEFycmF5cyA9IGFzeW5jICh7IGFkYXB0ZXIsIGFycmF5cywgZGIsIHBhcmVudFJvd3MgfTogQXJncyk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAvLyBNYWludGFpbiBhIG1hcCBvZiBmbGF0dGVuZWQgcm93cyBieSB0YWJsZVxuICBjb25zdCByb3dzQnlUYWJsZTogUm93c0J5VGFibGUgPSB7fVxuXG4gIGFycmF5cy5mb3JFYWNoKChhcnJheXNCeVRhYmxlLCBwYXJlbnRSb3dJbmRleCkgPT4ge1xuICAgIE9iamVjdC5lbnRyaWVzKGFycmF5c0J5VGFibGUpLmZvckVhY2goKFt0YWJsZU5hbWUsIGFycmF5Um93c10pID0+IHtcbiAgICAgIC8vIElmIHRoZSB0YWJsZSBkb2Vzbid0IGV4aXN0IGluIG1hcCwgaW5pdGlhbGl6ZSBpdFxuICAgICAgaWYgKCFyb3dzQnlUYWJsZVt0YWJsZU5hbWVdKSB7XG4gICAgICAgIHJvd3NCeVRhYmxlW3RhYmxlTmFtZV0gPSB7XG4gICAgICAgICAgYXJyYXlzOiBbXSxcbiAgICAgICAgICBsb2NhbGVzOiBbXSxcbiAgICAgICAgICByb3dzOiBbXSxcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBwYXJlbnRJRCA9IHBhcmVudFJvd3NbcGFyZW50Um93SW5kZXhdLmlkXG5cbiAgICAgIC8vIEFkZCBhbnkgc3ViIGFycmF5cyB0aGF0IG5lZWQgdG8gYmUgY3JlYXRlZFxuICAgICAgLy8gV2Ugd2lsbCBjYWxsIHRoaXMgcmVjdXJzaXZlbHkgYmVsb3dcbiAgICAgIGFycmF5Um93cy5mb3JFYWNoKChhcnJheVJvdywgaSkgPT4ge1xuICAgICAgICBpZiAoT2JqZWN0LmtleXMoYXJyYXlSb3cuYXJyYXlzKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgcm93c0J5VGFibGVbdGFibGVOYW1lXS5hcnJheXMucHVzaChhcnJheVJvdy5hcnJheXMpXG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZXQgdXAgcGFyZW50IElEcyBmb3IgYm90aCByb3cgYW5kIGxvY2FsZSByb3dcbiAgICAgICAgYXJyYXlSb3cucm93Ll9wYXJlbnRJRCA9IHBhcmVudElEXG4gICAgICAgIHJvd3NCeVRhYmxlW3RhYmxlTmFtZV0ucm93cy5wdXNoKGFycmF5Um93LnJvdylcblxuICAgICAgICBPYmplY3QuZW50cmllcyhhcnJheVJvdy5sb2NhbGVzKS5mb3JFYWNoKChbYXJyYXlSb3dMb2NhbGUsIGFycmF5Um93TG9jYWxlRGF0YV0pID0+IHtcbiAgICAgICAgICBhcnJheVJvd0xvY2FsZURhdGEuX3BhcmVudElEID0gYXJyYXlSb3cucm93LmlkXG4gICAgICAgICAgYXJyYXlSb3dMb2NhbGVEYXRhLl9sb2NhbGUgPSBhcnJheVJvd0xvY2FsZVxuICAgICAgICAgIHJvd3NCeVRhYmxlW3RhYmxlTmFtZV0ubG9jYWxlcy5wdXNoKGFycmF5Um93TG9jYWxlRGF0YSlcbiAgICAgICAgICBpZiAoIWFycmF5Um93LnJvdy5pZCkge1xuICAgICAgICAgICAgYXJyYXlSb3dMb2NhbGVEYXRhLl9nZXRQYXJlbnRJRCA9IChyb3dzKSA9PiByb3dzW2ldLmlkXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgfSlcbiAgICB9KVxuICB9KVxuXG4gIC8vIEluc2VydCBhbGwgY29ycmVzcG9uZGluZyBhcnJheXNcbiAgLy8gKG9uZSBpbnNlcnQgcGVyIGFycmF5IHRhYmxlKVxuICBmb3IgKGNvbnN0IFt0YWJsZU5hbWUsIHJvd10gb2YgT2JqZWN0LmVudHJpZXMocm93c0J5VGFibGUpKSB7XG4gICAgLy8gdGhlIG5lc3RlZCBhcnJheXMgbmVlZCB0aGUgSUQgZm9yIHRoZSBwYXJlbnRJRCBmb3JlaWduIGtleVxuICAgIGxldCBpbnNlcnRlZFJvd3M6IEFyZ3NbJ3BhcmVudFJvd3MnXVxuICAgIGlmIChyb3cucm93cy5sZW5ndGggPiAwKSB7XG4gICAgICBpbnNlcnRlZFJvd3MgPSBhd2FpdCBkYi5pbnNlcnQoYWRhcHRlci50YWJsZXNbdGFibGVOYW1lXSkudmFsdWVzKHJvdy5yb3dzKS5yZXR1cm5pbmcoKVxuICAgIH1cblxuICAgIC8vIEluc2VydCBsb2NhbGUgcm93c1xuICAgIGlmIChhZGFwdGVyLnRhYmxlc1tgJHt0YWJsZU5hbWV9JHthZGFwdGVyLmxvY2FsZXNTdWZmaXh9YF0gJiYgcm93LmxvY2FsZXMubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKCFyb3cubG9jYWxlc1swXS5fcGFyZW50SUQpIHtcbiAgICAgICAgcm93LmxvY2FsZXMgPSByb3cubG9jYWxlcy5tYXAoKGxvY2FsZVJvdykgPT4ge1xuICAgICAgICAgIGlmICh0eXBlb2YgbG9jYWxlUm93Ll9nZXRQYXJlbnRJRCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgbG9jYWxlUm93Ll9wYXJlbnRJRCA9IGxvY2FsZVJvdy5fZ2V0UGFyZW50SUQoaW5zZXJ0ZWRSb3dzKVxuICAgICAgICAgICAgZGVsZXRlIGxvY2FsZVJvdy5fZ2V0UGFyZW50SURcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGxvY2FsZVJvd1xuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgYXdhaXQgZGJcbiAgICAgICAgLmluc2VydChhZGFwdGVyLnRhYmxlc1tgJHt0YWJsZU5hbWV9JHthZGFwdGVyLmxvY2FsZXNTdWZmaXh9YF0pXG4gICAgICAgIC52YWx1ZXMocm93LmxvY2FsZXMpXG4gICAgICAgIC5yZXR1cm5pbmcoKVxuICAgIH1cblxuICAgIC8vIElmIHRoZXJlIGFyZSBzdWIgYXJyYXlzLCBjYWxsIHRoaXMgZnVuY3Rpb24gcmVjdXJzaXZlbHlcbiAgICBpZiAocm93LmFycmF5cy5sZW5ndGggPiAwKSB7XG4gICAgICBhd2FpdCBpbnNlcnRBcnJheXMoe1xuICAgICAgICBhZGFwdGVyLFxuICAgICAgICBhcnJheXM6IHJvdy5hcnJheXMsXG4gICAgICAgIGRiLFxuICAgICAgICBwYXJlbnRSb3dzOiBpbnNlcnRlZFJvd3MsXG4gICAgICB9KVxuICAgIH1cbiAgfVxufVxuIl0sIm5hbWVzIjpbImluc2VydEFycmF5cyIsImFkYXB0ZXIiLCJhcnJheXMiLCJkYiIsInBhcmVudFJvd3MiLCJyb3dzQnlUYWJsZSIsImZvckVhY2giLCJhcnJheXNCeVRhYmxlIiwicGFyZW50Um93SW5kZXgiLCJPYmplY3QiLCJlbnRyaWVzIiwidGFibGVOYW1lIiwiYXJyYXlSb3dzIiwibG9jYWxlcyIsInJvd3MiLCJwYXJlbnRJRCIsImlkIiwiYXJyYXlSb3ciLCJpIiwia2V5cyIsImxlbmd0aCIsInB1c2giLCJyb3ciLCJfcGFyZW50SUQiLCJhcnJheVJvd0xvY2FsZSIsImFycmF5Um93TG9jYWxlRGF0YSIsIl9sb2NhbGUiLCJfZ2V0UGFyZW50SUQiLCJpbnNlcnRlZFJvd3MiLCJpbnNlcnQiLCJ0YWJsZXMiLCJ2YWx1ZXMiLCJyZXR1cm5pbmciLCJsb2NhbGVzU3VmZml4IiwibWFwIiwibG9jYWxlUm93Il0sIm1hcHBpbmdzIjoiQUFBQSxvQ0FBb0M7Ozs7K0JBdUJ2QkE7OztlQUFBQTs7O0FBQU4sTUFBTUEsZUFBZSxPQUFPLEVBQUVDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxFQUFFLEVBQUVDLFVBQVUsRUFBUTtJQUMxRSw0Q0FBNEM7SUFDNUMsTUFBTUMsY0FBMkIsQ0FBQztJQUVsQ0gsT0FBT0ksT0FBTyxDQUFDLENBQUNDLGVBQWVDO1FBQzdCQyxPQUFPQyxPQUFPLENBQUNILGVBQWVELE9BQU8sQ0FBQyxDQUFDLENBQUNLLFdBQVdDLFVBQVU7WUFDM0QsbURBQW1EO1lBQ25ELElBQUksQ0FBQ1AsV0FBVyxDQUFDTSxVQUFVLEVBQUU7Z0JBQzNCTixXQUFXLENBQUNNLFVBQVUsR0FBRztvQkFDdkJULFFBQVEsRUFBRTtvQkFDVlcsU0FBUyxFQUFFO29CQUNYQyxNQUFNLEVBQUU7Z0JBQ1Y7WUFDRjtZQUVBLE1BQU1DLFdBQVdYLFVBQVUsQ0FBQ0ksZUFBZSxDQUFDUSxFQUFFO1lBRTlDLDZDQUE2QztZQUM3QyxzQ0FBc0M7WUFDdENKLFVBQVVOLE9BQU8sQ0FBQyxDQUFDVyxVQUFVQztnQkFDM0IsSUFBSVQsT0FBT1UsSUFBSSxDQUFDRixTQUFTZixNQUFNLEVBQUVrQixNQUFNLEdBQUcsR0FBRztvQkFDM0NmLFdBQVcsQ0FBQ00sVUFBVSxDQUFDVCxNQUFNLENBQUNtQixJQUFJLENBQUNKLFNBQVNmLE1BQU07Z0JBQ3BEO2dCQUVBLGdEQUFnRDtnQkFDaERlLFNBQVNLLEdBQUcsQ0FBQ0MsU0FBUyxHQUFHUjtnQkFDekJWLFdBQVcsQ0FBQ00sVUFBVSxDQUFDRyxJQUFJLENBQUNPLElBQUksQ0FBQ0osU0FBU0ssR0FBRztnQkFFN0NiLE9BQU9DLE9BQU8sQ0FBQ08sU0FBU0osT0FBTyxFQUFFUCxPQUFPLENBQUMsQ0FBQyxDQUFDa0IsZ0JBQWdCQyxtQkFBbUI7b0JBQzVFQSxtQkFBbUJGLFNBQVMsR0FBR04sU0FBU0ssR0FBRyxDQUFDTixFQUFFO29CQUM5Q1MsbUJBQW1CQyxPQUFPLEdBQUdGO29CQUM3Qm5CLFdBQVcsQ0FBQ00sVUFBVSxDQUFDRSxPQUFPLENBQUNRLElBQUksQ0FBQ0k7b0JBQ3BDLElBQUksQ0FBQ1IsU0FBU0ssR0FBRyxDQUFDTixFQUFFLEVBQUU7d0JBQ3BCUyxtQkFBbUJFLFlBQVksR0FBRyxDQUFDYixPQUFTQSxJQUFJLENBQUNJLEVBQUUsQ0FBQ0YsRUFBRTtvQkFDeEQ7Z0JBQ0Y7WUFDRjtRQUNGO0lBQ0Y7SUFFQSxrQ0FBa0M7SUFDbEMsK0JBQStCO0lBQy9CLEtBQUssTUFBTSxDQUFDTCxXQUFXVyxJQUFJLElBQUliLE9BQU9DLE9BQU8sQ0FBQ0wsYUFBYztRQUMxRCw2REFBNkQ7UUFDN0QsSUFBSXVCO1FBQ0osSUFBSU4sSUFBSVIsSUFBSSxDQUFDTSxNQUFNLEdBQUcsR0FBRztZQUN2QlEsZUFBZSxNQUFNekIsR0FBRzBCLE1BQU0sQ0FBQzVCLFFBQVE2QixNQUFNLENBQUNuQixVQUFVLEVBQUVvQixNQUFNLENBQUNULElBQUlSLElBQUksRUFBRWtCLFNBQVM7UUFDdEY7UUFFQSxxQkFBcUI7UUFDckIsSUFBSS9CLFFBQVE2QixNQUFNLENBQUMsQ0FBQyxFQUFFbkIsVUFBVSxFQUFFVixRQUFRZ0MsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJWCxJQUFJVCxPQUFPLENBQUNPLE1BQU0sR0FBRyxHQUFHO1lBQ3BGLElBQUksQ0FBQ0UsSUFBSVQsT0FBTyxDQUFDLEVBQUUsQ0FBQ1UsU0FBUyxFQUFFO2dCQUM3QkQsSUFBSVQsT0FBTyxHQUFHUyxJQUFJVCxPQUFPLENBQUNxQixHQUFHLENBQUMsQ0FBQ0M7b0JBQzdCLElBQUksT0FBT0EsVUFBVVIsWUFBWSxLQUFLLFlBQVk7d0JBQ2hEUSxVQUFVWixTQUFTLEdBQUdZLFVBQVVSLFlBQVksQ0FBQ0M7d0JBQzdDLE9BQU9PLFVBQVVSLFlBQVk7b0JBQy9CO29CQUNBLE9BQU9RO2dCQUNUO1lBQ0Y7WUFDQSxNQUFNaEMsR0FDSDBCLE1BQU0sQ0FBQzVCLFFBQVE2QixNQUFNLENBQUMsQ0FBQyxFQUFFbkIsVUFBVSxFQUFFVixRQUFRZ0MsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUM3REYsTUFBTSxDQUFDVCxJQUFJVCxPQUFPLEVBQ2xCbUIsU0FBUztRQUNkO1FBRUEsMERBQTBEO1FBQzFELElBQUlWLElBQUlwQixNQUFNLENBQUNrQixNQUFNLEdBQUcsR0FBRztZQUN6QixNQUFNcEIsYUFBYTtnQkFDakJDO2dCQUNBQyxRQUFRb0IsSUFBSXBCLE1BQU07Z0JBQ2xCQztnQkFDQUMsWUFBWXdCO1lBQ2Q7UUFDRjtJQUNGO0FBQ0YifQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@payloadcms/db-postgres",
3
- "version": "0.8.1",
3
+ "version": "0.8.3",
4
4
  "description": "The officially supported Postgres database adapter for Payload",
5
5
  "repository": {
6
6
  "type": "git",
@@ -29,7 +29,7 @@
29
29
  "devDependencies": {
30
30
  "@types/pg": "8.10.2",
31
31
  "@types/to-snake-case": "1.0.0",
32
- "payload": "2.14.0",
32
+ "payload": "2.18.0",
33
33
  "@payloadcms/eslint-config": "1.1.1"
34
34
  },
35
35
  "peerDependencies": {
@@ -1 +0,0 @@
1
- {"version":3,"file":"getTableName.d.ts","sourceRoot":"","sources":["../../src/schema/getTableName.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAKxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAE/C,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,eAAe,CAAA;IACxB,8CAA8C;IAC9C,MAAM,EAAE;QACN,MAAM,CAAC,EAAE,gBAAgB,CAAA;QACzB,QAAQ,CAAC,EAAE,gBAAgB,CAAA;QAC3B,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,IAAI,CAAC,EAAE,MAAM,CAAA;KACd,CAAA;IACD,2DAA2D;IAC3D,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,mGAAmG;IACnG,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,mFAAmF;IACnF,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,oCAAoC;IACpC,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,uHAAuH;IACvH,MAAM,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAA;IAC9B,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,kGAAkG;IAClG,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,0IAWtB,IAAI,KAAG,MA4BT,CAAA"}
@@ -1,43 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "getTableName", {
6
- enumerable: true,
7
- get: function() {
8
- return getTableName;
9
- }
10
- });
11
- const _errors = require("payload/errors");
12
- const _tosnakecase = /*#__PURE__*/ _interop_require_default(require("to-snake-case"));
13
- function _interop_require_default(obj) {
14
- return obj && obj.__esModule ? obj : {
15
- default: obj
16
- };
17
- }
18
- const getTableName = ({ adapter, config: { name, slug }, config, locales = false, parentTableName, prefix = '', relationships = false, target = 'dbName', throwValidationError = false, versions = false })=>{
19
- let result;
20
- let custom = config[target];
21
- if (!custom && target === 'enumName') {
22
- custom = config['dbName'];
23
- }
24
- if (custom) {
25
- result = typeof custom === 'function' ? custom({
26
- tableName: parentTableName
27
- }) : custom;
28
- } else {
29
- result = `${prefix}${(0, _tosnakecase.default)(name ?? slug)}`;
30
- }
31
- if (locales) result = `${result}${adapter.localesSuffix}`;
32
- if (versions) result = `_${result}${adapter.versionsSuffix}`;
33
- if (relationships) result = `${result}${adapter.relationshipsSuffix}`;
34
- if (!throwValidationError) {
35
- return result;
36
- }
37
- if (result.length > 63) {
38
- throw new _errors.APIError(`Exceeded max identifier length for table or enum name of 63 characters. Invalid name: ${result}`);
39
- }
40
- return result;
41
- };
42
-
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2hlbWEvZ2V0VGFibGVOYW1lLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgREJJZGVudGlmaWVyTmFtZSB9IGZyb20gJ3BheWxvYWQvZGF0YWJhc2UnXG5cbmltcG9ydCB7IEFQSUVycm9yIH0gZnJvbSAncGF5bG9hZC9lcnJvcnMnXG5pbXBvcnQgdG9TbmFrZUNhc2UgZnJvbSAndG8tc25ha2UtY2FzZSdcblxuaW1wb3J0IHR5cGUgeyBQb3N0Z3Jlc0FkYXB0ZXIgfSBmcm9tICcuLi90eXBlcydcblxudHlwZSBBcmdzID0ge1xuICBhZGFwdGVyOiBQb3N0Z3Jlc0FkYXB0ZXJcbiAgLyoqIFRoZSBjb2xsZWN0aW9uLCBnbG9iYWwgb3IgZmllbGQgY29uZmlnICoqL1xuICBjb25maWc6IHtcbiAgICBkYk5hbWU/OiBEQklkZW50aWZpZXJOYW1lXG4gICAgZW51bU5hbWU/OiBEQklkZW50aWZpZXJOYW1lXG4gICAgbmFtZT86IHN0cmluZ1xuICAgIHNsdWc/OiBzdHJpbmdcbiAgfVxuICAvKiogTG9jYWxpemVkIHRhYmxlcyBuZWVkIHRvIGJlIGdpdmVuIHRoZSBsb2NhbGVzIHN1ZmZpeCAqL1xuICBsb2NhbGVzPzogYm9vbGVhblxuICAvKiogRm9yIG5lc3RlZCB0YWJsZXMgcGFzc2VkIGZvciB0aGUgdXNlciBjdXN0b20gZGJOYW1lIGZ1bmN0aW9ucyB0byBoYW5kbGUgdGhlaXIgb3duIGl0ZXJhdGlvbnMgKi9cbiAgcGFyZW50VGFibGVOYW1lPzogc3RyaW5nXG4gIC8qKiBGb3Igc3ViIHRhYmxlcyAoYXJyYXkgZm9yIGV4YW1wbGUpIHRoaXMgbmVlZHMgdG8gaW5jbHVkZSB0aGUgcGFyZW50VGFibGVOYW1lICovXG4gIHByZWZpeD86IHN0cmluZ1xuICAvKiogQWRkcyB0aGUgcmVsYXRpb25zaGlwcyBzdWZmaXggKi9cbiAgcmVsYXRpb25zaGlwcz86IGJvb2xlYW5cbiAgLyoqIEZvciB0YWJsZXMgYmFzZWQgb24gZmllbGRzIHRoYXQgY291bGQgaGF2ZSBib3RoIGVudW1OYW1lIGFuZCBkYk5hbWUgKGllOiBzZWxlY3Qgd2l0aCBoYXNNYW55KSwgZGVmYXVsdDogJ2RiTmFtZScgKi9cbiAgdGFyZ2V0PzogJ2RiTmFtZScgfCAnZW51bU5hbWUnXG4gIHRocm93VmFsaWRhdGlvbkVycm9yPzogYm9vbGVhblxuICAvKiogQWRkcyB0aGUgdmVyc2lvbnMgc3VmZml4LCBzaG91bGQgb25seSBiZSB1c2VkIG9uIHRoZSBiYXNlIGNvbGxlY3Rpb24gdG8gZHVwbGljYXRlIHN1ZmZpeGluZyAqL1xuICB2ZXJzaW9ucz86IGJvb2xlYW5cbn1cblxuLyoqXG4gKiBVc2VkIHRvIG5hbWUgZGF0YWJhc2UgZW51bXMgYW5kIHRhYmxlc1xuICogUmV0dXJucyB0aGUgdGFibGUgb3IgZW51bSBuYW1lIGZvciBhIGdpdmVuIGVudGl0eVxuICovXG5leHBvcnQgY29uc3QgZ2V0VGFibGVOYW1lID0gKHtcbiAgYWRhcHRlcixcbiAgY29uZmlnOiB7IG5hbWUsIHNsdWcgfSxcbiAgY29uZmlnLFxuICBsb2NhbGVzID0gZmFsc2UsXG4gIHBhcmVudFRhYmxlTmFtZSxcbiAgcHJlZml4ID0gJycsXG4gIHJlbGF0aW9uc2hpcHMgPSBmYWxzZSxcbiAgdGFyZ2V0ID0gJ2RiTmFtZScsXG4gIHRocm93VmFsaWRhdGlvbkVycm9yID0gZmFsc2UsXG4gIHZlcnNpb25zID0gZmFsc2UsXG59OiBBcmdzKTogc3RyaW5nID0+IHtcbiAgbGV0IHJlc3VsdDogc3RyaW5nXG4gIGxldCBjdXN0b20gPSBjb25maWdbdGFyZ2V0XVxuXG4gIGlmICghY3VzdG9tICYmIHRhcmdldCA9PT0gJ2VudW1OYW1lJykge1xuICAgIGN1c3RvbSA9IGNvbmZpZ1snZGJOYW1lJ11cbiAgfVxuXG4gIGlmIChjdXN0b20pIHtcbiAgICByZXN1bHQgPSB0eXBlb2YgY3VzdG9tID09PSAnZnVuY3Rpb24nID8gY3VzdG9tKHsgdGFibGVOYW1lOiBwYXJlbnRUYWJsZU5hbWUgfSkgOiBjdXN0b21cbiAgfSBlbHNlIHtcbiAgICByZXN1bHQgPSBgJHtwcmVmaXh9JHt0b1NuYWtlQ2FzZShuYW1lID8/IHNsdWcpfWBcbiAgfVxuXG4gIGlmIChsb2NhbGVzKSByZXN1bHQgPSBgJHtyZXN1bHR9JHthZGFwdGVyLmxvY2FsZXNTdWZmaXh9YFxuICBpZiAodmVyc2lvbnMpIHJlc3VsdCA9IGBfJHtyZXN1bHR9JHthZGFwdGVyLnZlcnNpb25zU3VmZml4fWBcbiAgaWYgKHJlbGF0aW9uc2hpcHMpIHJlc3VsdCA9IGAke3Jlc3VsdH0ke2FkYXB0ZXIucmVsYXRpb25zaGlwc1N1ZmZpeH1gXG5cbiAgaWYgKCF0aHJvd1ZhbGlkYXRpb25FcnJvcikge1xuICAgIHJldHVybiByZXN1bHRcbiAgfVxuXG4gIGlmIChyZXN1bHQubGVuZ3RoID4gNjMpIHtcbiAgICB0aHJvdyBuZXcgQVBJRXJyb3IoXG4gICAgICBgRXhjZWVkZWQgbWF4IGlkZW50aWZpZXIgbGVuZ3RoIGZvciB0YWJsZSBvciBlbnVtIG5hbWUgb2YgNjMgY2hhcmFjdGVycy4gSW52YWxpZCBuYW1lOiAke3Jlc3VsdH1gLFxuICAgIClcbiAgfVxuICByZXR1cm4gcmVzdWx0XG59XG4iXSwibmFtZXMiOlsiZ2V0VGFibGVOYW1lIiwiYWRhcHRlciIsImNvbmZpZyIsIm5hbWUiLCJzbHVnIiwibG9jYWxlcyIsInBhcmVudFRhYmxlTmFtZSIsInByZWZpeCIsInJlbGF0aW9uc2hpcHMiLCJ0YXJnZXQiLCJ0aHJvd1ZhbGlkYXRpb25FcnJvciIsInZlcnNpb25zIiwicmVzdWx0IiwiY3VzdG9tIiwidGFibGVOYW1lIiwidG9TbmFrZUNhc2UiLCJsb2NhbGVzU3VmZml4IiwidmVyc2lvbnNTdWZmaXgiLCJyZWxhdGlvbnNoaXBzU3VmZml4IiwibGVuZ3RoIiwiQVBJRXJyb3IiXSwibWFwcGluZ3MiOiI7Ozs7K0JBbUNhQTs7O2VBQUFBOzs7d0JBakNZO29FQUNEOzs7Ozs7QUFnQ2pCLE1BQU1BLGVBQWUsQ0FBQyxFQUMzQkMsT0FBTyxFQUNQQyxRQUFRLEVBQUVDLElBQUksRUFBRUMsSUFBSSxFQUFFLEVBQ3RCRixNQUFNLEVBQ05HLFVBQVUsS0FBSyxFQUNmQyxlQUFlLEVBQ2ZDLFNBQVMsRUFBRSxFQUNYQyxnQkFBZ0IsS0FBSyxFQUNyQkMsU0FBUyxRQUFRLEVBQ2pCQyx1QkFBdUIsS0FBSyxFQUM1QkMsV0FBVyxLQUFLLEVBQ1g7SUFDTCxJQUFJQztJQUNKLElBQUlDLFNBQVNYLE1BQU0sQ0FBQ08sT0FBTztJQUUzQixJQUFJLENBQUNJLFVBQVVKLFdBQVcsWUFBWTtRQUNwQ0ksU0FBU1gsTUFBTSxDQUFDLFNBQVM7SUFDM0I7SUFFQSxJQUFJVyxRQUFRO1FBQ1ZELFNBQVMsT0FBT0MsV0FBVyxhQUFhQSxPQUFPO1lBQUVDLFdBQVdSO1FBQWdCLEtBQUtPO0lBQ25GLE9BQU87UUFDTEQsU0FBUyxDQUFDLEVBQUVMLE9BQU8sRUFBRVEsSUFBQUEsb0JBQVcsRUFBQ1osUUFBUUMsTUFBTSxDQUFDO0lBQ2xEO0lBRUEsSUFBSUMsU0FBU08sU0FBUyxDQUFDLEVBQUVBLE9BQU8sRUFBRVgsUUFBUWUsYUFBYSxDQUFDLENBQUM7SUFDekQsSUFBSUwsVUFBVUMsU0FBUyxDQUFDLENBQUMsRUFBRUEsT0FBTyxFQUFFWCxRQUFRZ0IsY0FBYyxDQUFDLENBQUM7SUFDNUQsSUFBSVQsZUFBZUksU0FBUyxDQUFDLEVBQUVBLE9BQU8sRUFBRVgsUUFBUWlCLG1CQUFtQixDQUFDLENBQUM7SUFFckUsSUFBSSxDQUFDUixzQkFBc0I7UUFDekIsT0FBT0U7SUFDVDtJQUVBLElBQUlBLE9BQU9PLE1BQU0sR0FBRyxJQUFJO1FBQ3RCLE1BQU0sSUFBSUMsZ0JBQVEsQ0FDaEIsQ0FBQyxzRkFBc0YsRUFBRVIsT0FBTyxDQUFDO0lBRXJHO0lBQ0EsT0FBT0E7QUFDVCJ9