payload 2.5.0 → 2.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (176) hide show
  1. package/components/styles.css +1 -1
  2. package/dist/admin/components/elements/DocumentFields/index.d.ts.map +1 -1
  3. package/dist/admin/components/elements/DocumentFields/index.js +5 -2
  4. package/dist/admin/components/elements/DocumentHeader/Tabs/Tab/index.d.ts.map +1 -1
  5. package/dist/admin/components/elements/DocumentHeader/Tabs/Tab/index.js +3 -3
  6. package/dist/admin/components/elements/EditUpload/index.scss +6 -0
  7. package/dist/admin/components/elements/Header/index.scss +4 -0
  8. package/dist/admin/components/elements/ListDrawer/DrawerContent.js +2 -2
  9. package/dist/admin/components/elements/Popup/PopupButtonList/index.scss +9 -2
  10. package/dist/admin/components/elements/Popup/index.scss +20 -2
  11. package/dist/admin/components/elements/WhereBuilder/Condition/Relationship/index.js +2 -2
  12. package/dist/admin/components/forms/Form/buildStateFromSchema/iterateFields.js +3 -3
  13. package/dist/admin/components/forms/Form/fieldReducer.js +3 -3
  14. package/dist/admin/components/forms/RenderFields/index.scss +1 -0
  15. package/dist/admin/components/forms/field-types/JSON/index.d.ts.map +1 -1
  16. package/dist/admin/components/forms/field-types/JSON/index.js +17 -9
  17. package/dist/admin/components/forms/field-types/Text/Input.d.ts +3 -0
  18. package/dist/admin/components/forms/field-types/Text/Input.d.ts.map +1 -1
  19. package/dist/admin/components/forms/field-types/Text/Input.js +33 -5
  20. package/dist/admin/components/forms/field-types/Text/index.d.ts.map +1 -1
  21. package/dist/admin/components/forms/field-types/Text/index.js +48 -5
  22. package/dist/admin/components/forms/field-types/Text/index.scss +4 -2
  23. package/dist/admin/components/forms/withCondition/WatchCondition.js +3 -3
  24. package/dist/admin/components/modals/LeaveWithoutSaving/index.d.ts.map +1 -1
  25. package/dist/admin/components/modals/LeaveWithoutSaving/index.js +10 -2
  26. package/dist/admin/components/templates/Default/index.scss +5 -0
  27. package/dist/admin/components/views/API/index.d.ts.map +1 -1
  28. package/dist/admin/components/views/API/index.js +4 -1
  29. package/dist/admin/components/views/Account/index.d.ts.map +1 -1
  30. package/dist/admin/components/views/Account/index.js +3 -4
  31. package/dist/admin/components/views/Global/Default.d.ts.map +1 -1
  32. package/dist/admin/components/views/Global/Default.js +4 -1
  33. package/dist/admin/components/views/Global/index.js +2 -2
  34. package/dist/admin/components/views/LivePreview/index.d.ts.map +1 -1
  35. package/dist/admin/components/views/LivePreview/index.js +4 -1
  36. package/dist/admin/components/views/Version/Version.d.ts.map +1 -1
  37. package/dist/admin/components/views/Version/Version.js +4 -1
  38. package/dist/admin/components/views/Versions/index.d.ts.map +1 -1
  39. package/dist/admin/components/views/Versions/index.js +4 -1
  40. package/dist/admin/components/views/collections/Edit/Default.d.ts.map +1 -1
  41. package/dist/admin/components/views/collections/Edit/Default.js +4 -1
  42. package/dist/admin/components/views/collections/Edit/formatFields.js +2 -2
  43. package/dist/admin/components/views/collections/Edit/index.js +2 -2
  44. package/dist/admin/components/views/collections/List/index.d.ts.map +1 -1
  45. package/dist/admin/components/views/collections/List/index.js +4 -1
  46. package/dist/admin/hooks/useTitle.d.ts.map +1 -1
  47. package/dist/admin/hooks/useTitle.js +9 -2
  48. package/dist/auth/graphql/resolvers/access.d.ts.map +1 -1
  49. package/dist/auth/graphql/resolvers/access.js +3 -3
  50. package/dist/auth/graphql/resolvers/forgotPassword.d.ts.map +1 -1
  51. package/dist/auth/graphql/resolvers/forgotPassword.js +3 -3
  52. package/dist/auth/graphql/resolvers/init.d.ts.map +1 -1
  53. package/dist/auth/graphql/resolvers/init.js +3 -3
  54. package/dist/auth/graphql/resolvers/login.d.ts.map +1 -1
  55. package/dist/auth/graphql/resolvers/login.js +3 -3
  56. package/dist/auth/graphql/resolvers/logout.d.ts.map +1 -1
  57. package/dist/auth/graphql/resolvers/logout.js +3 -3
  58. package/dist/auth/graphql/resolvers/me.d.ts.map +1 -1
  59. package/dist/auth/graphql/resolvers/me.js +3 -3
  60. package/dist/auth/graphql/resolvers/refresh.d.ts.map +1 -1
  61. package/dist/auth/graphql/resolvers/refresh.js +3 -3
  62. package/dist/auth/graphql/resolvers/resetPassword.d.ts.map +1 -1
  63. package/dist/auth/graphql/resolvers/resetPassword.js +8 -5
  64. package/dist/auth/graphql/resolvers/unlock.d.ts.map +1 -1
  65. package/dist/auth/graphql/resolvers/unlock.js +3 -3
  66. package/dist/auth/graphql/resolvers/verifyEmail.d.ts.map +1 -1
  67. package/dist/auth/graphql/resolvers/verifyEmail.js +8 -5
  68. package/dist/auth/operations/local/login.d.ts.map +1 -1
  69. package/dist/auth/operations/local/login.js +9 -5
  70. package/dist/auth/strategies/local/incrementLoginAttempts.js +2 -2
  71. package/dist/collections/graphql/resolvers/create.d.ts.map +1 -1
  72. package/dist/collections/graphql/resolvers/create.js +7 -6
  73. package/dist/collections/graphql/resolvers/delete.d.ts.map +1 -1
  74. package/dist/collections/graphql/resolvers/delete.js +10 -5
  75. package/dist/collections/graphql/resolvers/docAccess.js +3 -3
  76. package/dist/collections/graphql/resolvers/find.d.ts.map +1 -1
  77. package/dist/collections/graphql/resolvers/find.js +10 -5
  78. package/dist/collections/graphql/resolvers/findByID.d.ts.map +1 -1
  79. package/dist/collections/graphql/resolvers/findByID.js +10 -6
  80. package/dist/collections/graphql/resolvers/findVersionByID.d.ts.map +1 -1
  81. package/dist/collections/graphql/resolvers/findVersionByID.js +10 -5
  82. package/dist/collections/graphql/resolvers/findVersions.d.ts.map +1 -1
  83. package/dist/collections/graphql/resolvers/findVersions.js +10 -5
  84. package/dist/collections/graphql/resolvers/restoreVersion.js +3 -3
  85. package/dist/collections/graphql/resolvers/update.d.ts.map +1 -1
  86. package/dist/collections/graphql/resolvers/update.js +10 -5
  87. package/dist/collections/operations/local/create.d.ts.map +1 -1
  88. package/dist/collections/operations/local/create.js +8 -5
  89. package/dist/collections/operations/local/delete.d.ts.map +1 -1
  90. package/dist/collections/operations/local/delete.js +8 -5
  91. package/dist/collections/operations/local/find.d.ts.map +1 -1
  92. package/dist/collections/operations/local/find.js +8 -12
  93. package/dist/collections/operations/local/findByID.d.ts.map +1 -1
  94. package/dist/collections/operations/local/findByID.js +8 -12
  95. package/dist/collections/operations/local/findVersionByID.d.ts.map +1 -1
  96. package/dist/collections/operations/local/findVersionByID.js +8 -12
  97. package/dist/collections/operations/local/findVersions.d.ts.map +1 -1
  98. package/dist/collections/operations/local/findVersions.js +8 -5
  99. package/dist/collections/operations/local/restoreVersion.d.ts.map +1 -1
  100. package/dist/collections/operations/local/restoreVersion.js +7 -3
  101. package/dist/collections/operations/local/update.d.ts.map +1 -1
  102. package/dist/collections/operations/local/update.js +7 -4
  103. package/dist/config/schema.d.ts.map +1 -1
  104. package/dist/config/schema.js +2 -1
  105. package/dist/config/types.d.ts +4 -0
  106. package/dist/config/types.d.ts.map +1 -1
  107. package/dist/config/types.js +1 -1
  108. package/dist/database/migrations/migrate.d.ts.map +1 -1
  109. package/dist/database/migrations/migrate.js +11 -11
  110. package/dist/database/migrations/migrateDown.d.ts.map +1 -1
  111. package/dist/database/migrations/migrateDown.js +11 -9
  112. package/dist/database/migrations/migrateRefresh.d.ts.map +1 -1
  113. package/dist/database/migrations/migrateRefresh.js +16 -15
  114. package/dist/database/migrations/migrateReset.d.ts.map +1 -1
  115. package/dist/database/migrations/migrateReset.js +11 -9
  116. package/dist/database/migrations/migrationTemplate.d.ts +1 -1
  117. package/dist/database/migrations/migrationTemplate.d.ts.map +1 -1
  118. package/dist/database/migrations/migrationTemplate.js +3 -3
  119. package/dist/database/migrations/migrationsCollection.d.ts.map +1 -1
  120. package/dist/database/migrations/migrationsCollection.js +4 -3
  121. package/dist/database/types.d.ts +8 -6
  122. package/dist/database/types.d.ts.map +1 -1
  123. package/dist/express/middleware/index.js +3 -3
  124. package/dist/fields/config/schema.d.ts.map +1 -1
  125. package/dist/fields/config/schema.js +12 -2
  126. package/dist/fields/config/types.d.ts +15 -1
  127. package/dist/fields/config/types.d.ts.map +1 -1
  128. package/dist/fields/config/types.js +1 -1
  129. package/dist/fields/hooks/beforeChange/promise.js +3 -3
  130. package/dist/fields/validations.d.ts.map +1 -1
  131. package/dist/fields/validations.js +33 -11
  132. package/dist/globals/graphql/resolvers/docAccess.js +3 -3
  133. package/dist/globals/graphql/resolvers/findOne.js +3 -3
  134. package/dist/globals/graphql/resolvers/findVersionByID.js +3 -3
  135. package/dist/globals/graphql/resolvers/findVersions.js +3 -3
  136. package/dist/globals/graphql/resolvers/restoreVersion.js +3 -3
  137. package/dist/globals/graphql/resolvers/update.js +3 -3
  138. package/dist/globals/operations/local/findOne.d.ts.map +1 -1
  139. package/dist/globals/operations/local/findOne.js +5 -3
  140. package/dist/globals/operations/local/findVersionByID.d.ts.map +1 -1
  141. package/dist/globals/operations/local/findVersionByID.js +6 -3
  142. package/dist/globals/operations/local/findVersions.d.ts.map +1 -1
  143. package/dist/globals/operations/local/findVersions.js +6 -3
  144. package/dist/globals/operations/local/restoreVersion.d.ts.map +1 -1
  145. package/dist/globals/operations/local/restoreVersion.js +6 -3
  146. package/dist/globals/operations/local/update.d.ts.map +1 -1
  147. package/dist/globals/operations/local/update.js +6 -3
  148. package/dist/graphql/registerSchema.d.ts.map +1 -1
  149. package/dist/graphql/registerSchema.js +2 -3
  150. package/dist/graphql/schema/buildMutationInputType.d.ts.map +1 -1
  151. package/dist/graphql/schema/buildMutationInputType.js +2 -2
  152. package/dist/graphql/schema/buildObjectType.d.ts.map +1 -1
  153. package/dist/graphql/schema/buildObjectType.js +13 -10
  154. package/dist/graphql/utilities/wrapCustomResolver.d.ts.map +1 -1
  155. package/dist/graphql/utilities/wrapCustomResolver.js +3 -3
  156. package/dist/localization/middleware.d.ts +1 -5
  157. package/dist/localization/middleware.d.ts.map +1 -1
  158. package/dist/localization/middleware.js +36 -40
  159. package/dist/payload.d.ts +0 -1
  160. package/dist/payload.d.ts.map +1 -1
  161. package/dist/payload.js +1 -1
  162. package/dist/translations/defaultOptions.js +3 -1
  163. package/dist/utilities/configToJSONSchema.d.ts.map +1 -1
  164. package/dist/utilities/configToJSONSchema.js +14 -1
  165. package/dist/utilities/initTransaction.d.ts.map +1 -1
  166. package/dist/utilities/initTransaction.js +4 -2
  167. package/dist/utilities/isValidID.d.ts.map +1 -1
  168. package/dist/utilities/isValidID.js +11 -2
  169. package/dist/utilities/isolateObjectProperty.d.ts +5 -0
  170. package/dist/utilities/isolateObjectProperty.d.ts.map +1 -0
  171. package/dist/utilities/isolateObjectProperty.js +38 -0
  172. package/dist/versions/buildCollectionFields.js +13 -13
  173. package/package.json +4 -4
  174. package/dist/utilities/isolateTransactionID.d.ts +0 -6
  175. package/dist/utilities/isolateTransactionID.d.ts.map +0 -1
  176. package/dist/utilities/isolateTransactionID.js +0 -38
@@ -18,12 +18,14 @@ const defaultOptions = {
18
18
  debug: false,
19
19
  detection: {
20
20
  caches: [
21
+ 'header',
21
22
  'cookie',
22
23
  'localStorage'
23
24
  ],
24
25
  lookupCookie: 'lng',
25
26
  lookupLocalStorage: 'lng',
26
27
  order: [
28
+ 'header',
27
29
  'cookie',
28
30
  'localStorage'
29
31
  ]
@@ -36,4 +38,4 @@ const defaultOptions = {
36
38
  supportedLngs: Object.keys(_index.default)
37
39
  };
38
40
 
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90cmFuc2xhdGlvbnMvZGVmYXVsdE9wdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBJbml0T3B0aW9ucyB9IGZyb20gJ2kxOG5leHQnXG5cbmltcG9ydCB0cmFuc2xhdGlvbnMgZnJvbSAnLi9pbmRleCdcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRPcHRpb25zOiBJbml0T3B0aW9ucyA9IHtcbiAgZGVidWc6IGZhbHNlLFxuICBkZXRlY3Rpb246IHtcbiAgICBjYWNoZXM6IFsnY29va2llJywgJ2xvY2FsU3RvcmFnZSddLFxuICAgIGxvb2t1cENvb2tpZTogJ2xuZycsXG4gICAgbG9va3VwTG9jYWxTdG9yYWdlOiAnbG5nJyxcbiAgICBvcmRlcjogWydjb29raWUnLCAnbG9jYWxTdG9yYWdlJ10sXG4gIH0sXG4gIGZhbGxiYWNrTG5nOiAnZW4nLFxuICBpbnRlcnBvbGF0aW9uOiB7XG4gICAgZXNjYXBlVmFsdWU6IGZhbHNlLFxuICB9LFxuICByZXNvdXJjZXM6IHRyYW5zbGF0aW9ucyxcbiAgc3VwcG9ydGVkTG5nczogT2JqZWN0LmtleXModHJhbnNsYXRpb25zKSxcbn1cbiJdLCJuYW1lcyI6WyJkZWZhdWx0T3B0aW9ucyIsImRlYnVnIiwiZGV0ZWN0aW9uIiwiY2FjaGVzIiwibG9va3VwQ29va2llIiwibG9va3VwTG9jYWxTdG9yYWdlIiwib3JkZXIiLCJmYWxsYmFja0xuZyIsImludGVycG9sYXRpb24iLCJlc2NhcGVWYWx1ZSIsInJlc291cmNlcyIsInRyYW5zbGF0aW9ucyIsInN1cHBvcnRlZExuZ3MiLCJPYmplY3QiLCJrZXlzIl0sIm1hcHBpbmdzIjoiOzs7OytCQUlhQTs7O2VBQUFBOzs7OERBRlk7Ozs7OztBQUVsQixNQUFNQSxpQkFBOEI7SUFDekNDLE9BQU87SUFDUEMsV0FBVztRQUNUQyxRQUFRO1lBQUM7WUFBVTtTQUFlO1FBQ2xDQyxjQUFjO1FBQ2RDLG9CQUFvQjtRQUNwQkMsT0FBTztZQUFDO1lBQVU7U0FBZTtJQUNuQztJQUNBQyxhQUFhO0lBQ2JDLGVBQWU7UUFDYkMsYUFBYTtJQUNmO0lBQ0FDLFdBQVdDLGNBQVk7SUFDdkJDLGVBQWVDLE9BQU9DLElBQUksQ0FBQ0gsY0FBWTtBQUN6QyJ9
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90cmFuc2xhdGlvbnMvZGVmYXVsdE9wdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBJbml0T3B0aW9ucyB9IGZyb20gJ2kxOG5leHQnXG5cbmltcG9ydCB0cmFuc2xhdGlvbnMgZnJvbSAnLi9pbmRleCdcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRPcHRpb25zOiBJbml0T3B0aW9ucyA9IHtcbiAgZGVidWc6IGZhbHNlLFxuICBkZXRlY3Rpb246IHtcbiAgICBjYWNoZXM6IFsnaGVhZGVyJywgJ2Nvb2tpZScsICdsb2NhbFN0b3JhZ2UnXSxcbiAgICBsb29rdXBDb29raWU6ICdsbmcnLFxuICAgIGxvb2t1cExvY2FsU3RvcmFnZTogJ2xuZycsXG4gICAgb3JkZXI6IFsnaGVhZGVyJywgJ2Nvb2tpZScsICdsb2NhbFN0b3JhZ2UnXSxcbiAgfSxcbiAgZmFsbGJhY2tMbmc6ICdlbicsXG4gIGludGVycG9sYXRpb246IHtcbiAgICBlc2NhcGVWYWx1ZTogZmFsc2UsXG4gIH0sXG4gIHJlc291cmNlczogdHJhbnNsYXRpb25zLFxuICBzdXBwb3J0ZWRMbmdzOiBPYmplY3Qua2V5cyh0cmFuc2xhdGlvbnMpLFxufVxuIl0sIm5hbWVzIjpbImRlZmF1bHRPcHRpb25zIiwiZGVidWciLCJkZXRlY3Rpb24iLCJjYWNoZXMiLCJsb29rdXBDb29raWUiLCJsb29rdXBMb2NhbFN0b3JhZ2UiLCJvcmRlciIsImZhbGxiYWNrTG5nIiwiaW50ZXJwb2xhdGlvbiIsImVzY2FwZVZhbHVlIiwicmVzb3VyY2VzIiwidHJhbnNsYXRpb25zIiwic3VwcG9ydGVkTG5ncyIsIk9iamVjdCIsImtleXMiXSwibWFwcGluZ3MiOiI7Ozs7K0JBSWFBOzs7ZUFBQUE7Ozs4REFGWTs7Ozs7O0FBRWxCLE1BQU1BLGlCQUE4QjtJQUN6Q0MsT0FBTztJQUNQQyxXQUFXO1FBQ1RDLFFBQVE7WUFBQztZQUFVO1lBQVU7U0FBZTtRQUM1Q0MsY0FBYztRQUNkQyxvQkFBb0I7UUFDcEJDLE9BQU87WUFBQztZQUFVO1lBQVU7U0FBZTtJQUM3QztJQUNBQyxhQUFhO0lBQ2JDLGVBQWU7UUFDYkMsYUFBYTtJQUNmO0lBQ0FDLFdBQVdDLGNBQVk7SUFDdkJDLGVBQWVDLE9BQU9DLElBQUksQ0FBQ0gsY0FBWTtBQUN6QyJ9
@@ -1 +1 @@
1
- {"version":3,"file":"configToJSONSchema.d.ts","sourceRoot":"","sources":["../../src/utilities/configToJSONSchema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAInE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAA;AAC5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAExD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AA4DpE;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,mBAAmB,EAC9B,UAAU,EAAE,OAAO,GAClB,mBAAmB,GAAG,mBAAmB,EAAE,CAK7C;AA4WD,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,eAAe,EACvB,cAAc,EAAE,yBAAyB,GAAG,qBAAqB,EACjE,wBAAwB,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,EAClD,aAAa,EAAE,QAAQ,GAAG,MAAM,GAC/B,WAAW,CA6Db;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,eAAe,EACvB,aAAa,CAAC,EAAE,QAAQ,GAAG,MAAM,GAChC,WAAW,CAsBb"}
1
+ {"version":3,"file":"configToJSONSchema.d.ts","sourceRoot":"","sources":["../../src/utilities/configToJSONSchema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAInE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAA;AAC5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAExD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AA4DpE;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,mBAAmB,EAC9B,UAAU,EAAE,OAAO,GAClB,mBAAmB,GAAG,mBAAmB,EAAE,CAK7C;AAqXD,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,eAAe,EACvB,cAAc,EAAE,yBAAyB,GAAG,qBAAqB,EACjE,wBAAwB,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,EAClD,aAAa,EAAE,QAAQ,GAAG,MAAM,GAC/B,WAAW,CA6Db;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,eAAe,EACvB,aAAa,CAAC,EAAE,QAAQ,GAAG,MAAM,GAChC,WAAW,CAsBb"}
@@ -84,6 +84,19 @@ function fieldsToJSONSchema(collectionIDFieldTypes, fields, interfaceNameDefinit
84
84
  let fieldSchema;
85
85
  switch(field.type){
86
86
  case 'text':
87
+ if (field.hasMany === true) {
88
+ fieldSchema = {
89
+ items: {
90
+ type: 'string'
91
+ },
92
+ type: withNullableJSONSchemaType('array', isRequired)
93
+ };
94
+ } else {
95
+ fieldSchema = {
96
+ type: withNullableJSONSchemaType('string', isRequired)
97
+ };
98
+ }
99
+ break;
87
100
  case 'textarea':
88
101
  case 'code':
89
102
  case 'email':
@@ -492,4 +505,4 @@ function configToJSONSchema(config, defaultIDType) {
492
505
  };
493
506
  }
494
507
 
495
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvY29uZmlnVG9KU09OU2NoZW1hLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgSlNPTlNjaGVtYTQsIEpTT05TY2hlbWE0VHlwZU5hbWUgfSBmcm9tICdqc29uLXNjaGVtYSdcblxuaW1wb3J0IHsgc2luZ3VsYXIgfSBmcm9tICdwbHVyYWxpemUnXG5cbmltcG9ydCB0eXBlIHsgU2FuaXRpemVkQ29sbGVjdGlvbkNvbmZpZyB9IGZyb20gJy4uL2NvbGxlY3Rpb25zL2NvbmZpZy90eXBlcydcbmltcG9ydCB0eXBlIHsgU2FuaXRpemVkQ29uZmlnIH0gZnJvbSAnLi4vZXhwb3J0cy9jb25maWcnXG5pbXBvcnQgdHlwZSB7IEZpZWxkLCBGaWVsZEFmZmVjdGluZ0RhdGEsIE9wdGlvbiB9IGZyb20gJy4uL2ZpZWxkcy9jb25maWcvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IFNhbml0aXplZEdsb2JhbENvbmZpZyB9IGZyb20gJy4uL2dsb2JhbHMvY29uZmlnL3R5cGVzJ1xuXG5pbXBvcnQgeyBmaWVsZEFmZmVjdHNEYXRhLCB0YWJIYXNOYW1lIH0gZnJvbSAnLi4vZmllbGRzL2NvbmZpZy90eXBlcydcbmltcG9ydCB7IGRlZXBDb3B5T2JqZWN0IH0gZnJvbSAnLi9kZWVwQ29weU9iamVjdCdcbmltcG9ydCB7IHRvV29yZHMgfSBmcm9tICcuL2Zvcm1hdExhYmVscydcblxuY29uc3QgZmllbGRJc1JlcXVpcmVkID0gKGZpZWxkOiBGaWVsZCkgPT4ge1xuICBjb25zdCBpc0NvbmRpdGlvbmFsID0gQm9vbGVhbihmaWVsZD8uYWRtaW4gJiYgZmllbGQ/LmFkbWluPy5jb25kaXRpb24pXG4gIGlmIChpc0NvbmRpdGlvbmFsKSByZXR1cm4gZmFsc2VcblxuICBjb25zdCBpc01hcmtlZFJlcXVpcmVkID0gJ3JlcXVpcmVkJyBpbiBmaWVsZCAmJiBmaWVsZC5yZXF1aXJlZCA9PT0gdHJ1ZVxuICBpZiAoZmllbGRBZmZlY3RzRGF0YShmaWVsZCkgJiYgaXNNYXJrZWRSZXF1aXJlZCkgcmV0dXJuIHRydWVcblxuICAvLyBpZiBhbnkgc3ViZmllbGRzIGFyZSByZXF1aXJlZCwgdGhpcyBmaWVsZCBpcyByZXF1aXJlZFxuICBpZiAoJ2ZpZWxkcycgaW4gZmllbGQgJiYgZmllbGQudHlwZSAhPT0gJ2FycmF5Jykge1xuICAgIHJldHVybiBmaWVsZC5maWVsZHMuc29tZSgoc3ViRmllbGQpID0+IGZpZWxkSXNSZXF1aXJlZChzdWJGaWVsZCkpXG4gIH1cblxuICAvLyBpZiBhbnkgdGFiIHN1YmZpZWxkcyBoYXZlIHJlcXVpcmVkIGZpZWxkcywgdGhpcyBmaWVsZCBpcyByZXF1aXJlZFxuICBpZiAoZmllbGQudHlwZSA9PT0gJ3RhYnMnKSB7XG4gICAgcmV0dXJuIGZpZWxkLnRhYnMuc29tZSgodGFiKSA9PiB7XG4gICAgICBpZiAoJ25hbWUnIGluIHRhYikge1xuICAgICAgICByZXR1cm4gdGFiLmZpZWxkcy5zb21lKChzdWJGaWVsZCkgPT4gZmllbGRJc1JlcXVpcmVkKHN1YkZpZWxkKSlcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gZmFsc2Vcbn1cblxuZnVuY3Rpb24gYnVpbGRPcHRpb25FbnVtcyhvcHRpb25zOiBPcHRpb25bXSk6IHN0cmluZ1tdIHtcbiAgcmV0dXJuIG9wdGlvbnMubWFwKChvcHRpb24pID0+IHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbiA9PT0gJ29iamVjdCcgJiYgJ3ZhbHVlJyBpbiBvcHRpb24pIHtcbiAgICAgIHJldHVybiBvcHRpb24udmFsdWVcbiAgICB9XG5cbiAgICByZXR1cm4gb3B0aW9uXG4gIH0pXG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlRW50aXR5U2NoZW1hcyhcbiAgZW50aXRpZXM6IChTYW5pdGl6ZWRDb2xsZWN0aW9uQ29uZmlnIHwgU2FuaXRpemVkR2xvYmFsQ29uZmlnKVtdLFxuKTogSlNPTlNjaGVtYTQge1xuICBjb25zdCBwcm9wZXJ0aWVzID0gWy4uLmVudGl0aWVzXS5yZWR1Y2UoKGFjYywgeyBzbHVnIH0pID0+IHtcbiAgICBhY2Nbc2x1Z10gPSB7XG4gICAgICAkcmVmOiBgIy9kZWZpbml0aW9ucy8ke3NsdWd9YCxcbiAgICB9XG5cbiAgICByZXR1cm4gYWNjXG4gIH0sIHt9KVxuXG4gIHJldHVybiB7XG4gICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlLFxuICAgIHByb3BlcnRpZXMsXG4gICAgcmVxdWlyZWQ6IE9iamVjdC5rZXlzKHByb3BlcnRpZXMpLFxuICAgIHR5cGU6ICdvYmplY3QnLFxuICB9XG59XG5cbi8qKlxuICogUmV0dXJucyBhIEpTT04gU2NoZW1hIFR5cGUgd2l0aCAnbnVsbCcgYWRkZWQgaWYgdGhlIGZpZWxkIGlzIG5vdCByZXF1aXJlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhOdWxsYWJsZUpTT05TY2hlbWFUeXBlKFxuICBmaWVsZFR5cGU6IEpTT05TY2hlbWE0VHlwZU5hbWUsXG4gIGlzUmVxdWlyZWQ6IGJvb2xlYW4sXG4pOiBKU09OU2NoZW1hNFR5cGVOYW1lIHwgSlNPTlNjaGVtYTRUeXBlTmFtZVtdIHtcbiAgY29uc3QgZmllbGRUeXBlcyA9IFtmaWVsZFR5cGVdXG4gIGlmIChpc1JlcXVpcmVkKSByZXR1cm4gZmllbGRUeXBlXG4gIGZpZWxkVHlwZXMucHVzaCgnbnVsbCcpXG4gIHJldHVybiBmaWVsZFR5cGVzXG59XG5cbmZ1bmN0aW9uIGZpZWxkc1RvSlNPTlNjaGVtYShcbiAgY29sbGVjdGlvbklERmllbGRUeXBlczogeyBba2V5OiBzdHJpbmddOiAnbnVtYmVyJyB8ICdzdHJpbmcnIH0sXG4gIGZpZWxkczogRmllbGRbXSxcbiAgaW50ZXJmYWNlTmFtZURlZmluaXRpb25zOiBNYXA8c3RyaW5nLCBKU09OU2NoZW1hND4sXG4pOiB7XG4gIHByb3BlcnRpZXM6IHtcbiAgICBbazogc3RyaW5nXTogSlNPTlNjaGVtYTRcbiAgfVxuICByZXF1aXJlZDogc3RyaW5nW11cbn0ge1xuICBjb25zdCByZXF1aXJlZEZpZWxkTmFtZXMgPSBuZXcgU2V0PHN0cmluZz4oKVxuXG4gIHJldHVybiB7XG4gICAgcHJvcGVydGllczogT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgZmllbGRzLnJlZHVjZSgoZmllbGRTY2hlbWFzLCBmaWVsZCkgPT4ge1xuICAgICAgICBjb25zdCBpc1JlcXVpcmVkID0gZmllbGRBZmZlY3RzRGF0YShmaWVsZCkgJiYgZmllbGRJc1JlcXVpcmVkKGZpZWxkKVxuICAgICAgICBpZiAoaXNSZXF1aXJlZCkgcmVxdWlyZWRGaWVsZE5hbWVzLmFkZChmaWVsZC5uYW1lKVxuXG4gICAgICAgIGxldCBmaWVsZFNjaGVtYTogSlNPTlNjaGVtYTRcbiAgICAgICAgc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgICAgICAgY2FzZSAndGV4dCc6XG4gICAgICAgICAgY2FzZSAndGV4dGFyZWEnOlxuICAgICAgICAgIGNhc2UgJ2NvZGUnOlxuICAgICAgICAgIGNhc2UgJ2VtYWlsJzpcbiAgICAgICAgICBjYXNlICdkYXRlJzoge1xuICAgICAgICAgICAgZmllbGRTY2hlbWEgPSB7IHR5cGU6IHdpdGhOdWxsYWJsZUpTT05TY2hlbWFUeXBlKCdzdHJpbmcnLCBpc1JlcXVpcmVkKSB9XG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNhc2UgJ251bWJlcic6IHtcbiAgICAgICAgICAgIGlmIChmaWVsZC5oYXNNYW55ID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgIGZpZWxkU2NoZW1hID0ge1xuICAgICAgICAgICAgICAgIGl0ZW1zOiB7IHR5cGU6ICdudW1iZXInIH0sXG4gICAgICAgICAgICAgICAgdHlwZTogd2l0aE51bGxhYmxlSlNPTlNjaGVtYVR5cGUoJ2FycmF5JywgaXNSZXF1aXJlZCksXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGZpZWxkU2NoZW1hID0geyB0eXBlOiB3aXRoTnVsbGFibGVKU09OU2NoZW1hVHlwZSgnbnVtYmVyJywgaXNSZXF1aXJlZCkgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICdjaGVja2JveCc6IHtcbiAgICAgICAgICAgIGZpZWxkU2NoZW1hID0geyB0eXBlOiB3aXRoTnVsbGFibGVKU09OU2NoZW1hVHlwZSgnYm9vbGVhbicsIGlzUmVxdWlyZWQpIH1cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2FzZSAnanNvbic6IHtcbiAgICAgICAgICAgIGZpZWxkU2NoZW1hID0ge1xuICAgICAgICAgICAgICB0eXBlOiBbJ29iamVjdCcsICdhcnJheScsICdzdHJpbmcnLCAnbnVtYmVyJywgJ2Jvb2xlYW4nLCAnbnVsbCddLFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICdyaWNoVGV4dCc6IHtcbiAgICAgICAgICAgIGlmIChmaWVsZC5lZGl0b3Iub3V0cHV0U2NoZW1hKSB7XG4gICAgICAgICAgICAgIGZpZWxkU2NoZW1hID0gZmllbGQuZWRpdG9yLm91dHB1dFNjaGVtYSh7XG4gICAgICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICAgICAgaXNSZXF1aXJlZCxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIC8vIE1haW50YWluIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGggZXhpc3RpbmcgcmljaCB0ZXh0IGVkaXRvcnNcbiAgICAgICAgICAgICAgZmllbGRTY2hlbWEgPSB7XG4gICAgICAgICAgICAgICAgaXRlbXM6IHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdHlwZTogd2l0aE51bGxhYmxlSlNPTlNjaGVtYVR5cGUoJ2FycmF5JywgaXNSZXF1aXJlZCksXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICdyYWRpbyc6IHtcbiAgICAgICAgICAgIGZpZWxkU2NoZW1hID0ge1xuICAgICAgICAgICAgICBlbnVtOiBidWlsZE9wdGlvbkVudW1zKGZpZWxkLm9wdGlvbnMpLFxuICAgICAgICAgICAgICB0eXBlOiB3aXRoTnVsbGFibGVKU09OU2NoZW1hVHlwZSgnc3RyaW5nJywgaXNSZXF1aXJlZCksXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2FzZSAnc2VsZWN0Jzoge1xuICAgICAgICAgICAgY29uc3Qgb3B0aW9uRW51bXMgPSBidWlsZE9wdGlvbkVudW1zKGZpZWxkLm9wdGlvbnMpXG5cbiAgICAgICAgICAgIGlmIChmaWVsZC5oYXNNYW55KSB7XG4gICAgICAgICAgICAgIGZpZWxkU2NoZW1hID0ge1xuICAgICAgICAgICAgICAgIGl0ZW1zOiB7XG4gICAgICAgICAgICAgICAgICBlbnVtOiBvcHRpb25FbnVtcyxcbiAgICAgICAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdHlwZTogd2l0aE51bGxhYmxlSlNPTlNjaGVtYVR5cGUoJ2FycmF5JywgaXNSZXF1aXJlZCksXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGZpZWxkU2NoZW1hID0ge1xuICAgICAgICAgICAgICAgIGVudW06IG9wdGlvbkVudW1zLFxuICAgICAgICAgICAgICAgIHR5cGU6IHdpdGhOdWxsYWJsZUpTT05TY2hlbWFUeXBlKCdzdHJpbmcnLCBpc1JlcXVpcmVkKSxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNhc2UgJ3BvaW50Jzoge1xuICAgICAgICAgICAgZmllbGRTY2hlbWEgPSB7XG4gICAgICAgICAgICAgIGl0ZW1zOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgdHlwZTogJ251bWJlcicsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICBtYXhJdGVtczogMixcbiAgICAgICAgICAgICAgbWluSXRlbXM6IDIsXG4gICAgICAgICAgICAgIHR5cGU6IHdpdGhOdWxsYWJsZUpTT05TY2hlbWFUeXBlKCdhcnJheScsIGlzUmVxdWlyZWQpLFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICdyZWxhdGlvbnNoaXAnOiB7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShmaWVsZC5yZWxhdGlvblRvKSkge1xuICAgICAgICAgICAgICBpZiAoZmllbGQuaGFzTWFueSkge1xuICAgICAgICAgICAgICAgIGZpZWxkU2NoZW1hID0ge1xuICAgICAgICAgICAgICAgICAgaXRlbXM6IHtcbiAgICAgICAgICAgICAgICAgICAgb25lT2Y6IGZpZWxkLnJlbGF0aW9uVG8ubWFwKChyZWxhdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uVG86IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdDogcmVsYXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25lT2Y6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogY29sbGVjdGlvbklERmllbGRUeXBlc1tyZWxhdGlvbl0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVmOiBgIy9kZWZpbml0aW9ucy8ke3JlbGF0aW9ufWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IFsndmFsdWUnLCAncmVsYXRpb25UbyddLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB0eXBlOiB3aXRoTnVsbGFibGVKU09OU2NoZW1hVHlwZSgnYXJyYXknLCBpc1JlcXVpcmVkKSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZmllbGRTY2hlbWEgPSB7XG4gICAgICAgICAgICAgICAgICBvbmVPZjogZmllbGQucmVsYXRpb25Uby5tYXAoKHJlbGF0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uVG86IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Q6IHJlbGF0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uZU9mOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogY29sbGVjdGlvbklERmllbGRUeXBlc1tyZWxhdGlvbl0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVmOiBgIy9kZWZpbml0aW9ucy8ke3JlbGF0aW9ufWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogWyd2YWx1ZScsICdyZWxhdGlvblRvJ10sXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZTogd2l0aE51bGxhYmxlSlNPTlNjaGVtYVR5cGUoJ29iamVjdCcsIGlzUmVxdWlyZWQpLFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZmllbGQuaGFzTWFueSkge1xuICAgICAgICAgICAgICBmaWVsZFNjaGVtYSA9IHtcbiAgICAgICAgICAgICAgICBpdGVtczoge1xuICAgICAgICAgICAgICAgICAgb25lT2Y6IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IGNvbGxlY3Rpb25JREZpZWxkVHlwZXNbZmllbGQucmVsYXRpb25Ub10sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAkcmVmOiBgIy9kZWZpbml0aW9ucy8ke2ZpZWxkLnJlbGF0aW9uVG99YCxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB0eXBlOiB3aXRoTnVsbGFibGVKU09OU2NoZW1hVHlwZSgnYXJyYXknLCBpc1JlcXVpcmVkKSxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZmllbGRTY2hlbWEgPSB7XG4gICAgICAgICAgICAgICAgb25lT2Y6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogd2l0aE51bGxhYmxlSlNPTlNjaGVtYVR5cGUoXG4gICAgICAgICAgICAgICAgICAgICAgY29sbGVjdGlvbklERmllbGRUeXBlc1tmaWVsZC5yZWxhdGlvblRvXSxcbiAgICAgICAgICAgICAgICAgICAgICBpc1JlcXVpcmVkLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgJHJlZjogYCMvZGVmaW5pdGlvbnMvJHtmaWVsZC5yZWxhdGlvblRvfWAsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICd1cGxvYWQnOiB7XG4gICAgICAgICAgICBmaWVsZFNjaGVtYSA9IHtcbiAgICAgICAgICAgICAgb25lT2Y6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICB0eXBlOiBjb2xsZWN0aW9uSURGaWVsZFR5cGVzW2ZpZWxkLnJlbGF0aW9uVG9dLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgJHJlZjogYCMvZGVmaW5pdGlvbnMvJHtmaWVsZC5yZWxhdGlvblRvfWAsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghaXNSZXF1aXJlZCkgZmllbGRTY2hlbWEub25lT2YucHVzaCh7IHR5cGU6ICdudWxsJyB9KVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICdibG9ja3MnOiB7XG4gICAgICAgICAgICBmaWVsZFNjaGVtYSA9IHtcbiAgICAgICAgICAgICAgaXRlbXM6IHtcbiAgICAgICAgICAgICAgICBvbmVPZjogZmllbGQuYmxvY2tzLm1hcCgoYmxvY2spID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrRmllbGRTY2hlbWFzID0gZmllbGRzVG9KU09OU2NoZW1hKFxuICAgICAgICAgICAgICAgICAgICBjb2xsZWN0aW9uSURGaWVsZFR5cGVzLFxuICAgICAgICAgICAgICAgICAgICBibG9jay5maWVsZHMsXG4gICAgICAgICAgICAgICAgICAgIGludGVyZmFjZU5hbWVEZWZpbml0aW9ucyxcbiAgICAgICAgICAgICAgICAgIClcblxuICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tTY2hlbWE6IEpTT05TY2hlbWE0ID0ge1xuICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAuLi5ibG9ja0ZpZWxkU2NoZW1hcy5wcm9wZXJ0aWVzLFxuICAgICAgICAgICAgICAgICAgICAgIGJsb2NrVHlwZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Q6IGJsb2NrLnNsdWcsXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IFsnYmxvY2tUeXBlJywgLi4uYmxvY2tGaWVsZFNjaGVtYXMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgaWYgKGJsb2NrLmludGVyZmFjZU5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlTmFtZURlZmluaXRpb25zLnNldChibG9jay5pbnRlcmZhY2VOYW1lLCBibG9ja1NjaGVtYSlcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICRyZWY6IGAjL2RlZmluaXRpb25zLyR7YmxvY2suaW50ZXJmYWNlTmFtZX1gLFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybiBibG9ja1NjaGVtYVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB0eXBlOiB3aXRoTnVsbGFibGVKU09OU2NoZW1hVHlwZSgnYXJyYXknLCBpc1JlcXVpcmVkKSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2FzZSAnYXJyYXknOiB7XG4gICAgICAgICAgICBmaWVsZFNjaGVtYSA9IHtcbiAgICAgICAgICAgICAgaXRlbXM6IHtcbiAgICAgICAgICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UsXG4gICAgICAgICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgICAgICAgLi4uZmllbGRzVG9KU09OU2NoZW1hKFxuICAgICAgICAgICAgICAgICAgY29sbGVjdGlvbklERmllbGRUeXBlcyxcbiAgICAgICAgICAgICAgICAgIGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICAgICAgICAgIGludGVyZmFjZU5hbWVEZWZpbml0aW9ucyxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB0eXBlOiB3aXRoTnVsbGFibGVKU09OU2NoZW1hVHlwZSgnYXJyYXknLCBpc1JlcXVpcmVkKSxcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGZpZWxkLmludGVyZmFjZU5hbWUpIHtcbiAgICAgICAgICAgICAgaW50ZXJmYWNlTmFtZURlZmluaXRpb25zLnNldChmaWVsZC5pbnRlcmZhY2VOYW1lLCBmaWVsZFNjaGVtYSlcblxuICAgICAgICAgICAgICBmaWVsZFNjaGVtYSA9IHtcbiAgICAgICAgICAgICAgICAkcmVmOiBgIy9kZWZpbml0aW9ucy8ke2ZpZWxkLmludGVyZmFjZU5hbWV9YCxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICdyb3cnOlxuICAgICAgICAgIGNhc2UgJ2NvbGxhcHNpYmxlJzoge1xuICAgICAgICAgICAgY29uc3QgY2hpbGRTY2hlbWEgPSBmaWVsZHNUb0pTT05TY2hlbWEoXG4gICAgICAgICAgICAgIGNvbGxlY3Rpb25JREZpZWxkVHlwZXMsXG4gICAgICAgICAgICAgIGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICAgICAgaW50ZXJmYWNlTmFtZURlZmluaXRpb25zLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMoY2hpbGRTY2hlbWEucHJvcGVydGllcykuZm9yRWFjaCgoW3Byb3BOYW1lLCBwcm9wU2NoZW1hXSkgPT4ge1xuICAgICAgICAgICAgICBmaWVsZFNjaGVtYXMuc2V0KHByb3BOYW1lLCBwcm9wU2NoZW1hKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIGNoaWxkU2NoZW1hLnJlcXVpcmVkLmZvckVhY2goKHByb3BOYW1lKSA9PiB7XG4gICAgICAgICAgICAgIHJlcXVpcmVkRmllbGROYW1lcy5hZGQocHJvcE5hbWUpXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICd0YWJzJzoge1xuICAgICAgICAgICAgZmllbGQudGFicy5mb3JFYWNoKCh0YWIpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgY2hpbGRTY2hlbWEgPSBmaWVsZHNUb0pTT05TY2hlbWEoXG4gICAgICAgICAgICAgICAgY29sbGVjdGlvbklERmllbGRUeXBlcyxcbiAgICAgICAgICAgICAgICB0YWIuZmllbGRzLFxuICAgICAgICAgICAgICAgIGludGVyZmFjZU5hbWVEZWZpbml0aW9ucyxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpZiAodGFiSGFzTmFtZSh0YWIpKSB7XG4gICAgICAgICAgICAgICAgLy8gY291bGQgaGF2ZSBpbnRlcmZhY2VcbiAgICAgICAgICAgICAgICBmaWVsZFNjaGVtYXMuc2V0KHRhYi5uYW1lLCB7XG4gICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UsXG4gICAgICAgICAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICAgICAgICAgIC4uLmNoaWxkU2NoZW1hLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgcmVxdWlyZWRGaWVsZE5hbWVzLmFkZCh0YWIubmFtZSlcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBPYmplY3QuZW50cmllcyhjaGlsZFNjaGVtYS5wcm9wZXJ0aWVzKS5mb3JFYWNoKChbcHJvcE5hbWUsIHByb3BTY2hlbWFdKSA9PiB7XG4gICAgICAgICAgICAgICAgICBmaWVsZFNjaGVtYXMuc2V0KHByb3BOYW1lLCBwcm9wU2NoZW1hKVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgY2hpbGRTY2hlbWEucmVxdWlyZWQuZm9yRWFjaCgocHJvcE5hbWUpID0+IHtcbiAgICAgICAgICAgICAgICAgIHJlcXVpcmVkRmllbGROYW1lcy5hZGQocHJvcE5hbWUpXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2FzZSAnZ3JvdXAnOiB7XG4gICAgICAgICAgICBmaWVsZFNjaGVtYSA9IHtcbiAgICAgICAgICAgICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlLFxuICAgICAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICAgICAgLi4uZmllbGRzVG9KU09OU2NoZW1hKGNvbGxlY3Rpb25JREZpZWxkVHlwZXMsIGZpZWxkLmZpZWxkcywgaW50ZXJmYWNlTmFtZURlZmluaXRpb25zKSxcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGZpZWxkLmludGVyZmFjZU5hbWUpIHtcbiAgICAgICAgICAgICAgaW50ZXJmYWNlTmFtZURlZmluaXRpb25zLnNldChmaWVsZC5pbnRlcmZhY2VOYW1lLCBmaWVsZFNjaGVtYSlcblxuICAgICAgICAgICAgICBmaWVsZFNjaGVtYSA9IHtcbiAgICAgICAgICAgICAgICAkcmVmOiBgIy9kZWZpbml0aW9ucy8ke2ZpZWxkLmludGVyZmFjZU5hbWV9YCxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmaWVsZFNjaGVtYSAmJiBmaWVsZEFmZmVjdHNEYXRhKGZpZWxkKSkge1xuICAgICAgICAgIGZpZWxkU2NoZW1hcy5zZXQoZmllbGQubmFtZSwgZmllbGRTY2hlbWEpXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmllbGRTY2hlbWFzXG4gICAgICB9LCBuZXcgTWFwPHN0cmluZywgSlNPTlNjaGVtYTQ+KCkpLFxuICAgICksXG4gICAgcmVxdWlyZWQ6IEFycmF5LmZyb20ocmVxdWlyZWRGaWVsZE5hbWVzKSxcbiAgfVxufVxuXG4vLyBUaGlzIGZ1bmN0aW9uIGlzIHBhcnQgb2YgdGhlIHB1YmxpYyBBUEkgYW5kIGlzIGV4cG9ydGVkIHRocm91Z2ggcGF5bG9hZC91dGlsaXRpZXNcbmV4cG9ydCBmdW5jdGlvbiBlbnRpdHlUb0pTT05TY2hlbWEoXG4gIGNvbmZpZzogU2FuaXRpemVkQ29uZmlnLFxuICBpbmNvbWluZ0VudGl0eTogU2FuaXRpemVkQ29sbGVjdGlvbkNvbmZpZyB8IFNhbml0aXplZEdsb2JhbENvbmZpZyxcbiAgaW50ZXJmYWNlTmFtZURlZmluaXRpb25zOiBNYXA8c3RyaW5nLCBKU09OU2NoZW1hND4sXG4gIGRlZmF1bHRJRFR5cGU6ICdudW1iZXInIHwgJ3RleHQnLFxuKTogSlNPTlNjaGVtYTQge1xuICBjb25zdCBlbnRpdHk6IFNhbml0aXplZENvbGxlY3Rpb25Db25maWcgfCBTYW5pdGl6ZWRHbG9iYWxDb25maWcgPSBkZWVwQ29weU9iamVjdChpbmNvbWluZ0VudGl0eSlcbiAgY29uc3QgdGl0bGUgPSBlbnRpdHkudHlwZXNjcmlwdD8uaW50ZXJmYWNlXG4gICAgPyBlbnRpdHkudHlwZXNjcmlwdC5pbnRlcmZhY2VcbiAgICA6IHNpbmd1bGFyKHRvV29yZHMoZW50aXR5LnNsdWcsIHRydWUpKVxuXG4gIGNvbnN0IGlkRmllbGQ6IEZpZWxkQWZmZWN0aW5nRGF0YSA9IHsgbmFtZTogJ2lkJywgcmVxdWlyZWQ6IHRydWUsIHR5cGU6IGRlZmF1bHRJRFR5cGUgYXMgJ3RleHQnIH1cbiAgY29uc3QgY3VzdG9tSWRGaWVsZCA9IGVudGl0eS5maWVsZHMuZmluZChcbiAgICAoZmllbGQpID0+IGZpZWxkQWZmZWN0c0RhdGEoZmllbGQpICYmIGZpZWxkLm5hbWUgPT09ICdpZCcsXG4gICkgYXMgRmllbGRBZmZlY3RpbmdEYXRhXG5cbiAgaWYgKGN1c3RvbUlkRmllbGQgJiYgY3VzdG9tSWRGaWVsZC50eXBlICE9PSAnZ3JvdXAnICYmIGN1c3RvbUlkRmllbGQudHlwZSAhPT0gJ3RhYicpIHtcbiAgICBjdXN0b21JZEZpZWxkLnJlcXVpcmVkID0gdHJ1ZVxuICB9IGVsc2Uge1xuICAgIGVudGl0eS5maWVsZHMudW5zaGlmdChpZEZpZWxkKVxuICB9XG5cbiAgLy8gbWFyayB0aW1lc3RhbXAgZmllbGRzIHJlcXVpcmVkXG4gIGlmICgndGltZXN0YW1wcycgaW4gZW50aXR5ICYmIGVudGl0eS50aW1lc3RhbXBzICE9PSBmYWxzZSkge1xuICAgIGVudGl0eS5maWVsZHMgPSBlbnRpdHkuZmllbGRzLm1hcCgoZmllbGQpID0+IHtcbiAgICAgIGlmIChmaWVsZEFmZmVjdHNEYXRhKGZpZWxkKSAmJiAoZmllbGQubmFtZSA9PT0gJ2NyZWF0ZWRBdCcgfHwgZmllbGQubmFtZSA9PT0gJ3VwZGF0ZWRBdCcpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uZmllbGQsXG4gICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmaWVsZFxuICAgIH0pXG4gIH1cblxuICBpZiAoJ2F1dGgnIGluIGVudGl0eSAmJiBlbnRpdHkuYXV0aCAmJiAhZW50aXR5LmF1dGg/LmRpc2FibGVMb2NhbFN0cmF0ZWd5KSB7XG4gICAgZW50aXR5LmZpZWxkcy5wdXNoKHtcbiAgICAgIG5hbWU6ICdwYXNzd29yZCcsXG4gICAgICB0eXBlOiAndGV4dCcsXG4gICAgfSlcbiAgfVxuXG4gIC8vIHVzZWQgZm9yIHJlbGF0aW9uc2hpcCBmaWVsZHMsIHRvIGRldGVybWluZSB3aGV0aGVyIHRvIHVzZSBhIHN0cmluZyBvciBudW1iZXIgdHlwZSBmb3IgdGhlIElEXG4gIGNvbnN0IGNvbGxlY3Rpb25JREZpZWxkVHlwZXM6IHsgW2tleTogc3RyaW5nXTogJ251bWJlcicgfCAnc3RyaW5nJyB9ID0gY29uZmlnLmNvbGxlY3Rpb25zLnJlZHVjZShcbiAgICAoYWNjLCBjb2xsZWN0aW9uKSA9PiB7XG4gICAgICBjb25zdCBjdXN0b21Db2xsZWN0aW9uSWRGaWVsZCA9IGNvbGxlY3Rpb24uZmllbGRzLmZpbmQoXG4gICAgICAgIChmaWVsZCkgPT4gJ25hbWUnIGluIGZpZWxkICYmIGZpZWxkLm5hbWUgPT09ICdpZCcsXG4gICAgICApXG5cbiAgICAgIGFjY1tjb2xsZWN0aW9uLnNsdWddID0gZGVmYXVsdElEVHlwZSA9PT0gJ3RleHQnID8gJ3N0cmluZycgOiAnbnVtYmVyJ1xuXG4gICAgICBpZiAoY3VzdG9tQ29sbGVjdGlvbklkRmllbGQpIHtcbiAgICAgICAgYWNjW2NvbGxlY3Rpb24uc2x1Z10gPSBjdXN0b21Db2xsZWN0aW9uSWRGaWVsZC50eXBlID09PSAnbnVtYmVyJyA/ICdudW1iZXInIDogJ3N0cmluZydcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGFjY1xuICAgIH0sXG4gICAge30sXG4gIClcblxuICByZXR1cm4ge1xuICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZSxcbiAgICB0aXRsZSxcbiAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAuLi5maWVsZHNUb0pTT05TY2hlbWEoY29sbGVjdGlvbklERmllbGRUeXBlcywgZW50aXR5LmZpZWxkcywgaW50ZXJmYWNlTmFtZURlZmluaXRpb25zKSxcbiAgfVxufVxuXG4vKipcbiAqIFRoaXMgaXMgdXNlZCBmb3IgZ2VuZXJhdGluZyB0aGUgVHlwZVNjcmlwdCB0eXBlcyAocGF5bG9hZC10eXBlcy50cykgd2l0aCB0aGUgcGF5bG9hZCBnZW5lcmF0ZTp0eXBlcyBjb21tYW5kLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29uZmlnVG9KU09OU2NoZW1hKFxuICBjb25maWc6IFNhbml0aXplZENvbmZpZyxcbiAgZGVmYXVsdElEVHlwZT86ICdudW1iZXInIHwgJ3RleHQnLFxuKTogSlNPTlNjaGVtYTQge1xuICAvLyBhIG11dGFibGUgTWFwIHRvIHN0b3JlIGN1c3RvbSB0b3AtbGV2ZWwgYGludGVyZmFjZU5hbWVgIHR5cGVzXG4gIGNvbnN0IGludGVyZmFjZU5hbWVEZWZpbml0aW9uczogTWFwPHN0cmluZywgSlNPTlNjaGVtYTQ+ID0gbmV3IE1hcCgpXG4gIGNvbnN0IGVudGl0eURlZmluaXRpb25zOiB7IFtrOiBzdHJpbmddOiBKU09OU2NoZW1hNCB9ID0gW1xuICAgIC4uLmNvbmZpZy5nbG9iYWxzLFxuICAgIC4uLmNvbmZpZy5jb2xsZWN0aW9ucyxcbiAgXS5yZWR1Y2UoKGFjYywgZW50aXR5KSA9PiB7XG4gICAgYWNjW2VudGl0eS5zbHVnXSA9IGVudGl0eVRvSlNPTlNjaGVtYShjb25maWcsIGVudGl0eSwgaW50ZXJmYWNlTmFtZURlZmluaXRpb25zLCBkZWZhdWx0SURUeXBlKVxuICAgIHJldHVybiBhY2NcbiAgfSwge30pXG5cbiAgcmV0dXJuIHtcbiAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UsXG4gICAgZGVmaW5pdGlvbnM6IHsgLi4uZW50aXR5RGVmaW5pdGlvbnMsIC4uLk9iamVjdC5mcm9tRW50cmllcyhpbnRlcmZhY2VOYW1lRGVmaW5pdGlvbnMpIH0sXG4gICAgcHJvcGVydGllczoge1xuICAgICAgY29sbGVjdGlvbnM6IGdlbmVyYXRlRW50aXR5U2NoZW1hcyhjb25maWcuY29sbGVjdGlvbnMgfHwgW10pLFxuICAgICAgZ2xvYmFsczogZ2VuZXJhdGVFbnRpdHlTY2hlbWFzKGNvbmZpZy5nbG9iYWxzIHx8IFtdKSxcbiAgICB9LFxuICAgIHJlcXVpcmVkOiBbJ2NvbGxlY3Rpb25zJywgJ2dsb2JhbHMnXSxcbiAgICB0aXRsZTogJ0NvbmZpZycsXG4gICAgdHlwZTogJ29iamVjdCcsXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJ3aXRoTnVsbGFibGVKU09OU2NoZW1hVHlwZSIsImVudGl0eVRvSlNPTlNjaGVtYSIsImNvbmZpZ1RvSlNPTlNjaGVtYSIsImZpZWxkSXNSZXF1aXJlZCIsImZpZWxkIiwiaXNDb25kaXRpb25hbCIsIkJvb2xlYW4iLCJhZG1pbiIsImNvbmRpdGlvbiIsImlzTWFya2VkUmVxdWlyZWQiLCJyZXF1aXJlZCIsImZpZWxkQWZmZWN0c0RhdGEiLCJ0eXBlIiwiZmllbGRzIiwic29tZSIsInN1YkZpZWxkIiwidGFicyIsInRhYiIsImJ1aWxkT3B0aW9uRW51bXMiLCJvcHRpb25zIiwibWFwIiwib3B0aW9uIiwidmFsdWUiLCJnZW5lcmF0ZUVudGl0eVNjaGVtYXMiLCJlbnRpdGllcyIsInByb3BlcnRpZXMiLCJyZWR1Y2UiLCJhY2MiLCJzbHVnIiwiJHJlZiIsImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiwiT2JqZWN0Iiwia2V5cyIsImZpZWxkVHlwZSIsImlzUmVxdWlyZWQiLCJmaWVsZFR5cGVzIiwicHVzaCIsImZpZWxkc1RvSlNPTlNjaGVtYSIsImNvbGxlY3Rpb25JREZpZWxkVHlwZXMiLCJpbnRlcmZhY2VOYW1lRGVmaW5pdGlvbnMiLCJyZXF1aXJlZEZpZWxkTmFtZXMiLCJTZXQiLCJmcm9tRW50cmllcyIsImZpZWxkU2NoZW1hcyIsImFkZCIsIm5hbWUiLCJmaWVsZFNjaGVtYSIsImhhc01hbnkiLCJpdGVtcyIsImVkaXRvciIsIm91dHB1dFNjaGVtYSIsImVudW0iLCJvcHRpb25FbnVtcyIsIm1heEl0ZW1zIiwibWluSXRlbXMiLCJBcnJheSIsImlzQXJyYXkiLCJyZWxhdGlvblRvIiwib25lT2YiLCJyZWxhdGlvbiIsImNvbnN0IiwiYmxvY2tzIiwiYmxvY2siLCJibG9ja0ZpZWxkU2NoZW1hcyIsImJsb2NrU2NoZW1hIiwiYmxvY2tUeXBlIiwiaW50ZXJmYWNlTmFtZSIsInNldCIsImNoaWxkU2NoZW1hIiwiZW50cmllcyIsImZvckVhY2giLCJwcm9wTmFtZSIsInByb3BTY2hlbWEiLCJ0YWJIYXNOYW1lIiwiTWFwIiwiZnJvbSIsImNvbmZpZyIsImluY29taW5nRW50aXR5IiwiZGVmYXVsdElEVHlwZSIsImVudGl0eSIsImRlZXBDb3B5T2JqZWN0IiwidGl0bGUiLCJ0eXBlc2NyaXB0IiwiaW50ZXJmYWNlIiwic2luZ3VsYXIiLCJ0b1dvcmRzIiwiaWRGaWVsZCIsImN1c3RvbUlkRmllbGQiLCJmaW5kIiwidW5zaGlmdCIsInRpbWVzdGFtcHMiLCJhdXRoIiwiZGlzYWJsZUxvY2FsU3RyYXRlZ3kiLCJjb2xsZWN0aW9ucyIsImNvbGxlY3Rpb24iLCJjdXN0b21Db2xsZWN0aW9uSWRGaWVsZCIsImVudGl0eURlZmluaXRpb25zIiwiZ2xvYmFscyIsImRlZmluaXRpb25zIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztJQXNFZ0JBLDBCQUEwQjtlQUExQkE7O0lBb1hBQyxrQkFBa0I7ZUFBbEJBOztJQXVFQUMsa0JBQWtCO2VBQWxCQTs7OzJCQS9mUzt1QkFPb0I7Z0NBQ2Q7OEJBQ1A7QUFFeEIsTUFBTUMsa0JBQWtCLENBQUNDO0lBQ3ZCLE1BQU1DLGdCQUFnQkMsUUFBUUYsT0FBT0csU0FBU0gsT0FBT0csT0FBT0M7SUFDNUQsSUFBSUgsZUFBZSxPQUFPO0lBRTFCLE1BQU1JLG1CQUFtQixjQUFjTCxTQUFTQSxNQUFNTSxRQUFRLEtBQUs7SUFDbkUsSUFBSUMsSUFBQUEsdUJBQWdCLEVBQUNQLFVBQVVLLGtCQUFrQixPQUFPO0lBRXhELHdEQUF3RDtJQUN4RCxJQUFJLFlBQVlMLFNBQVNBLE1BQU1RLElBQUksS0FBSyxTQUFTO1FBQy9DLE9BQU9SLE1BQU1TLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDLENBQUNDLFdBQWFaLGdCQUFnQlk7SUFDekQ7SUFFQSxvRUFBb0U7SUFDcEUsSUFBSVgsTUFBTVEsSUFBSSxL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
508
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvY29uZmlnVG9KU09OU2NoZW1hLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgSlNPTlNjaGVtYTQsIEpTT05TY2hlbWE0VHlwZU5hbWUgfSBmcm9tICdqc29uLXNjaGVtYSdcblxuaW1wb3J0IHsgc2luZ3VsYXIgfSBmcm9tICdwbHVyYWxpemUnXG5cbmltcG9ydCB0eXBlIHsgU2FuaXRpemVkQ29sbGVjdGlvbkNvbmZpZyB9IGZyb20gJy4uL2NvbGxlY3Rpb25zL2NvbmZpZy90eXBlcydcbmltcG9ydCB0eXBlIHsgU2FuaXRpemVkQ29uZmlnIH0gZnJvbSAnLi4vZXhwb3J0cy9jb25maWcnXG5pbXBvcnQgdHlwZSB7IEZpZWxkLCBGaWVsZEFmZmVjdGluZ0RhdGEsIE9wdGlvbiB9IGZyb20gJy4uL2ZpZWxkcy9jb25maWcvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IFNhbml0aXplZEdsb2JhbENvbmZpZyB9IGZyb20gJy4uL2dsb2JhbHMvY29uZmlnL3R5cGVzJ1xuXG5pbXBvcnQgeyBmaWVsZEFmZmVjdHNEYXRhLCB0YWJIYXNOYW1lIH0gZnJvbSAnLi4vZmllbGRzL2NvbmZpZy90eXBlcydcbmltcG9ydCB7IGRlZXBDb3B5T2JqZWN0IH0gZnJvbSAnLi9kZWVwQ29weU9iamVjdCdcbmltcG9ydCB7IHRvV29yZHMgfSBmcm9tICcuL2Zvcm1hdExhYmVscydcblxuY29uc3QgZmllbGRJc1JlcXVpcmVkID0gKGZpZWxkOiBGaWVsZCkgPT4ge1xuICBjb25zdCBpc0NvbmRpdGlvbmFsID0gQm9vbGVhbihmaWVsZD8uYWRtaW4gJiYgZmllbGQ/LmFkbWluPy5jb25kaXRpb24pXG4gIGlmIChpc0NvbmRpdGlvbmFsKSByZXR1cm4gZmFsc2VcblxuICBjb25zdCBpc01hcmtlZFJlcXVpcmVkID0gJ3JlcXVpcmVkJyBpbiBmaWVsZCAmJiBmaWVsZC5yZXF1aXJlZCA9PT0gdHJ1ZVxuICBpZiAoZmllbGRBZmZlY3RzRGF0YShmaWVsZCkgJiYgaXNNYXJrZWRSZXF1aXJlZCkgcmV0dXJuIHRydWVcblxuICAvLyBpZiBhbnkgc3ViZmllbGRzIGFyZSByZXF1aXJlZCwgdGhpcyBmaWVsZCBpcyByZXF1aXJlZFxuICBpZiAoJ2ZpZWxkcycgaW4gZmllbGQgJiYgZmllbGQudHlwZSAhPT0gJ2FycmF5Jykge1xuICAgIHJldHVybiBmaWVsZC5maWVsZHMuc29tZSgoc3ViRmllbGQpID0+IGZpZWxkSXNSZXF1aXJlZChzdWJGaWVsZCkpXG4gIH1cblxuICAvLyBpZiBhbnkgdGFiIHN1YmZpZWxkcyBoYXZlIHJlcXVpcmVkIGZpZWxkcywgdGhpcyBmaWVsZCBpcyByZXF1aXJlZFxuICBpZiAoZmllbGQudHlwZSA9PT0gJ3RhYnMnKSB7XG4gICAgcmV0dXJuIGZpZWxkLnRhYnMuc29tZSgodGFiKSA9PiB7XG4gICAgICBpZiAoJ25hbWUnIGluIHRhYikge1xuICAgICAgICByZXR1cm4gdGFiLmZpZWxkcy5zb21lKChzdWJGaWVsZCkgPT4gZmllbGRJc1JlcXVpcmVkKHN1YkZpZWxkKSlcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gZmFsc2Vcbn1cblxuZnVuY3Rpb24gYnVpbGRPcHRpb25FbnVtcyhvcHRpb25zOiBPcHRpb25bXSk6IHN0cmluZ1tdIHtcbiAgcmV0dXJuIG9wdGlvbnMubWFwKChvcHRpb24pID0+IHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbiA9PT0gJ29iamVjdCcgJiYgJ3ZhbHVlJyBpbiBvcHRpb24pIHtcbiAgICAgIHJldHVybiBvcHRpb24udmFsdWVcbiAgICB9XG5cbiAgICByZXR1cm4gb3B0aW9uXG4gIH0pXG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlRW50aXR5U2NoZW1hcyhcbiAgZW50aXRpZXM6IChTYW5pdGl6ZWRDb2xsZWN0aW9uQ29uZmlnIHwgU2FuaXRpemVkR2xvYmFsQ29uZmlnKVtdLFxuKTogSlNPTlNjaGVtYTQge1xuICBjb25zdCBwcm9wZXJ0aWVzID0gWy4uLmVudGl0aWVzXS5yZWR1Y2UoKGFjYywgeyBzbHVnIH0pID0+IHtcbiAgICBhY2Nbc2x1Z10gPSB7XG4gICAgICAkcmVmOiBgIy9kZWZpbml0aW9ucy8ke3NsdWd9YCxcbiAgICB9XG5cbiAgICByZXR1cm4gYWNjXG4gIH0sIHt9KVxuXG4gIHJldHVybiB7XG4gICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlLFxuICAgIHByb3BlcnRpZXMsXG4gICAgcmVxdWlyZWQ6IE9iamVjdC5rZXlzKHByb3BlcnRpZXMpLFxuICAgIHR5cGU6ICdvYmplY3QnLFxuICB9XG59XG5cbi8qKlxuICogUmV0dXJucyBhIEpTT04gU2NoZW1hIFR5cGUgd2l0aCAnbnVsbCcgYWRkZWQgaWYgdGhlIGZpZWxkIGlzIG5vdCByZXF1aXJlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhOdWxsYWJsZUpTT05TY2hlbWFUeXBlKFxuICBmaWVsZFR5cGU6IEpTT05TY2hlbWE0VHlwZU5hbWUsXG4gIGlzUmVxdWlyZWQ6IGJvb2xlYW4sXG4pOiBKU09OU2NoZW1hNFR5cGVOYW1lIHwgSlNPTlNjaGVtYTRUeXBlTmFtZVtdIHtcbiAgY29uc3QgZmllbGRUeXBlcyA9IFtmaWVsZFR5cGVdXG4gIGlmIChpc1JlcXVpcmVkKSByZXR1cm4gZmllbGRUeXBlXG4gIGZpZWxkVHlwZXMucHVzaCgnbnVsbCcpXG4gIHJldHVybiBmaWVsZFR5cGVzXG59XG5cbmZ1bmN0aW9uIGZpZWxkc1RvSlNPTlNjaGVtYShcbiAgY29sbGVjdGlvbklERmllbGRUeXBlczogeyBba2V5OiBzdHJpbmddOiAnbnVtYmVyJyB8ICdzdHJpbmcnIH0sXG4gIGZpZWxkczogRmllbGRbXSxcbiAgaW50ZXJmYWNlTmFtZURlZmluaXRpb25zOiBNYXA8c3RyaW5nLCBKU09OU2NoZW1hND4sXG4pOiB7XG4gIHByb3BlcnRpZXM6IHtcbiAgICBbazogc3RyaW5nXTogSlNPTlNjaGVtYTRcbiAgfVxuICByZXF1aXJlZDogc3RyaW5nW11cbn0ge1xuICBjb25zdCByZXF1aXJlZEZpZWxkTmFtZXMgPSBuZXcgU2V0PHN0cmluZz4oKVxuXG4gIHJldHVybiB7XG4gICAgcHJvcGVydGllczogT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgZmllbGRzLnJlZHVjZSgoZmllbGRTY2hlbWFzLCBmaWVsZCkgPT4ge1xuICAgICAgICBjb25zdCBpc1JlcXVpcmVkID0gZmllbGRBZmZlY3RzRGF0YShmaWVsZCkgJiYgZmllbGRJc1JlcXVpcmVkKGZpZWxkKVxuICAgICAgICBpZiAoaXNSZXF1aXJlZCkgcmVxdWlyZWRGaWVsZE5hbWVzLmFkZChmaWVsZC5uYW1lKVxuXG4gICAgICAgIGxldCBmaWVsZFNjaGVtYTogSlNPTlNjaGVtYTRcbiAgICAgICAgc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgICAgICAgY2FzZSAndGV4dCc6XG4gICAgICAgICAgICBpZiAoZmllbGQuaGFzTWFueSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICBmaWVsZFNjaGVtYSA9IHtcbiAgICAgICAgICAgICAgICBpdGVtczogeyB0eXBlOiAnc3RyaW5nJyB9LFxuICAgICAgICAgICAgICAgIHR5cGU6IHdpdGhOdWxsYWJsZUpTT05TY2hlbWFUeXBlKCdhcnJheScsIGlzUmVxdWlyZWQpLFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBmaWVsZFNjaGVtYSA9IHsgdHlwZTogd2l0aE51bGxhYmxlSlNPTlNjaGVtYVR5cGUoJ3N0cmluZycsIGlzUmVxdWlyZWQpIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgY2FzZSAndGV4dGFyZWEnOlxuICAgICAgICAgIGNhc2UgJ2NvZGUnOlxuICAgICAgICAgIGNhc2UgJ2VtYWlsJzpcbiAgICAgICAgICBjYXNlICdkYXRlJzoge1xuICAgICAgICAgICAgZmllbGRTY2hlbWEgPSB7IHR5cGU6IHdpdGhOdWxsYWJsZUpTT05TY2hlbWFUeXBlKCdzdHJpbmcnLCBpc1JlcXVpcmVkKSB9XG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNhc2UgJ251bWJlcic6IHtcbiAgICAgICAgICAgIGlmIChmaWVsZC5oYXNNYW55ID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgIGZpZWxkU2NoZW1hID0ge1xuICAgICAgICAgICAgICAgIGl0ZW1zOiB7IHR5cGU6ICdudW1iZXInIH0sXG4gICAgICAgICAgICAgICAgdHlwZTogd2l0aE51bGxhYmxlSlNPTlNjaGVtYVR5cGUoJ2FycmF5JywgaXNSZXF1aXJlZCksXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGZpZWxkU2NoZW1hID0geyB0eXBlOiB3aXRoTnVsbGFibGVKU09OU2NoZW1hVHlwZSgnbnVtYmVyJywgaXNSZXF1aXJlZCkgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICdjaGVja2JveCc6IHtcbiAgICAgICAgICAgIGZpZWxkU2NoZW1hID0geyB0eXBlOiB3aXRoTnVsbGFibGVKU09OU2NoZW1hVHlwZSgnYm9vbGVhbicsIGlzUmVxdWlyZWQpIH1cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2FzZSAnanNvbic6IHtcbiAgICAgICAgICAgIGZpZWxkU2NoZW1hID0ge1xuICAgICAgICAgICAgICB0eXBlOiBbJ29iamVjdCcsICdhcnJheScsICdzdHJpbmcnLCAnbnVtYmVyJywgJ2Jvb2xlYW4nLCAnbnVsbCddLFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICdyaWNoVGV4dCc6IHtcbiAgICAgICAgICAgIGlmIChmaWVsZC5lZGl0b3Iub3V0cHV0U2NoZW1hKSB7XG4gICAgICAgICAgICAgIGZpZWxkU2NoZW1hID0gZmllbGQuZWRpdG9yLm91dHB1dFNjaGVtYSh7XG4gICAgICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICAgICAgaXNSZXF1aXJlZCxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIC8vIE1haW50YWluIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGggZXhpc3RpbmcgcmljaCB0ZXh0IGVkaXRvcnNcbiAgICAgICAgICAgICAgZmllbGRTY2hlbWEgPSB7XG4gICAgICAgICAgICAgICAgaXRlbXM6IHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdHlwZTogd2l0aE51bGxhYmxlSlNPTlNjaGVtYVR5cGUoJ2FycmF5JywgaXNSZXF1aXJlZCksXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICdyYWRpbyc6IHtcbiAgICAgICAgICAgIGZpZWxkU2NoZW1hID0ge1xuICAgICAgICAgICAgICBlbnVtOiBidWlsZE9wdGlvbkVudW1zKGZpZWxkLm9wdGlvbnMpLFxuICAgICAgICAgICAgICB0eXBlOiB3aXRoTnVsbGFibGVKU09OU2NoZW1hVHlwZSgnc3RyaW5nJywgaXNSZXF1aXJlZCksXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2FzZSAnc2VsZWN0Jzoge1xuICAgICAgICAgICAgY29uc3Qgb3B0aW9uRW51bXMgPSBidWlsZE9wdGlvbkVudW1zKGZpZWxkLm9wdGlvbnMpXG5cbiAgICAgICAgICAgIGlmIChmaWVsZC5oYXNNYW55KSB7XG4gICAgICAgICAgICAgIGZpZWxkU2NoZW1hID0ge1xuICAgICAgICAgICAgICAgIGl0ZW1zOiB7XG4gICAgICAgICAgICAgICAgICBlbnVtOiBvcHRpb25FbnVtcyxcbiAgICAgICAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdHlwZTogd2l0aE51bGxhYmxlSlNPTlNjaGVtYVR5cGUoJ2FycmF5JywgaXNSZXF1aXJlZCksXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGZpZWxkU2NoZW1hID0ge1xuICAgICAgICAgICAgICAgIGVudW06IG9wdGlvbkVudW1zLFxuICAgICAgICAgICAgICAgIHR5cGU6IHdpdGhOdWxsYWJsZUpTT05TY2hlbWFUeXBlKCdzdHJpbmcnLCBpc1JlcXVpcmVkKSxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNhc2UgJ3BvaW50Jzoge1xuICAgICAgICAgICAgZmllbGRTY2hlbWEgPSB7XG4gICAgICAgICAgICAgIGl0ZW1zOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgdHlwZTogJ251bWJlcicsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICBtYXhJdGVtczogMixcbiAgICAgICAgICAgICAgbWluSXRlbXM6IDIsXG4gICAgICAgICAgICAgIHR5cGU6IHdpdGhOdWxsYWJsZUpTT05TY2hlbWFUeXBlKCdhcnJheScsIGlzUmVxdWlyZWQpLFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICdyZWxhdGlvbnNoaXAnOiB7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShmaWVsZC5yZWxhdGlvblRvKSkge1xuICAgICAgICAgICAgICBpZiAoZmllbGQuaGFzTWFueSkge1xuICAgICAgICAgICAgICAgIGZpZWxkU2NoZW1hID0ge1xuICAgICAgICAgICAgICAgICAgaXRlbXM6IHtcbiAgICAgICAgICAgICAgICAgICAgb25lT2Y6IGZpZWxkLnJlbGF0aW9uVG8ubWFwKChyZWxhdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uVG86IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdDogcmVsYXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25lT2Y6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogY29sbGVjdGlvbklERmllbGRUeXBlc1tyZWxhdGlvbl0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVmOiBgIy9kZWZpbml0aW9ucy8ke3JlbGF0aW9ufWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IFsndmFsdWUnLCAncmVsYXRpb25UbyddLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB0eXBlOiB3aXRoTnVsbGFibGVKU09OU2NoZW1hVHlwZSgnYXJyYXknLCBpc1JlcXVpcmVkKSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZmllbGRTY2hlbWEgPSB7XG4gICAgICAgICAgICAgICAgICBvbmVPZjogZmllbGQucmVsYXRpb25Uby5tYXAoKHJlbGF0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uVG86IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Q6IHJlbGF0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uZU9mOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogY29sbGVjdGlvbklERmllbGRUeXBlc1tyZWxhdGlvbl0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVmOiBgIy9kZWZpbml0aW9ucy8ke3JlbGF0aW9ufWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogWyd2YWx1ZScsICdyZWxhdGlvblRvJ10sXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZTogd2l0aE51bGxhYmxlSlNPTlNjaGVtYVR5cGUoJ29iamVjdCcsIGlzUmVxdWlyZWQpLFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZmllbGQuaGFzTWFueSkge1xuICAgICAgICAgICAgICBmaWVsZFNjaGVtYSA9IHtcbiAgICAgICAgICAgICAgICBpdGVtczoge1xuICAgICAgICAgICAgICAgICAgb25lT2Y6IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IGNvbGxlY3Rpb25JREZpZWxkVHlwZXNbZmllbGQucmVsYXRpb25Ub10sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAkcmVmOiBgIy9kZWZpbml0aW9ucy8ke2ZpZWxkLnJlbGF0aW9uVG99YCxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB0eXBlOiB3aXRoTnVsbGFibGVKU09OU2NoZW1hVHlwZSgnYXJyYXknLCBpc1JlcXVpcmVkKSxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZmllbGRTY2hlbWEgPSB7XG4gICAgICAgICAgICAgICAgb25lT2Y6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogd2l0aE51bGxhYmxlSlNPTlNjaGVtYVR5cGUoXG4gICAgICAgICAgICAgICAgICAgICAgY29sbGVjdGlvbklERmllbGRUeXBlc1tmaWVsZC5yZWxhdGlvblRvXSxcbiAgICAgICAgICAgICAgICAgICAgICBpc1JlcXVpcmVkLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgJHJlZjogYCMvZGVmaW5pdGlvbnMvJHtmaWVsZC5yZWxhdGlvblRvfWAsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICd1cGxvYWQnOiB7XG4gICAgICAgICAgICBmaWVsZFNjaGVtYSA9IHtcbiAgICAgICAgICAgICAgb25lT2Y6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICB0eXBlOiBjb2xsZWN0aW9uSURGaWVsZFR5cGVzW2ZpZWxkLnJlbGF0aW9uVG9dLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgJHJlZjogYCMvZGVmaW5pdGlvbnMvJHtmaWVsZC5yZWxhdGlvblRvfWAsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghaXNSZXF1aXJlZCkgZmllbGRTY2hlbWEub25lT2YucHVzaCh7IHR5cGU6ICdudWxsJyB9KVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICdibG9ja3MnOiB7XG4gICAgICAgICAgICBmaWVsZFNjaGVtYSA9IHtcbiAgICAgICAgICAgICAgaXRlbXM6IHtcbiAgICAgICAgICAgICAgICBvbmVPZjogZmllbGQuYmxvY2tzLm1hcCgoYmxvY2spID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrRmllbGRTY2hlbWFzID0gZmllbGRzVG9KU09OU2NoZW1hKFxuICAgICAgICAgICAgICAgICAgICBjb2xsZWN0aW9uSURGaWVsZFR5cGVzLFxuICAgICAgICAgICAgICAgICAgICBibG9jay5maWVsZHMsXG4gICAgICAgICAgICAgICAgICAgIGludGVyZmFjZU5hbWVEZWZpbml0aW9ucyxcbiAgICAgICAgICAgICAgICAgIClcblxuICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tTY2hlbWE6IEpTT05TY2hlbWE0ID0ge1xuICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAuLi5ibG9ja0ZpZWxkU2NoZW1hcy5wcm9wZXJ0aWVzLFxuICAgICAgICAgICAgICAgICAgICAgIGJsb2NrVHlwZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Q6IGJsb2NrLnNsdWcsXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IFsnYmxvY2tUeXBlJywgLi4uYmxvY2tGaWVsZFNjaGVtYXMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgaWYgKGJsb2NrLmludGVyZmFjZU5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlTmFtZURlZmluaXRpb25zLnNldChibG9jay5pbnRlcmZhY2VOYW1lLCBibG9ja1NjaGVtYSlcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICRyZWY6IGAjL2RlZmluaXRpb25zLyR7YmxvY2suaW50ZXJmYWNlTmFtZX1gLFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybiBibG9ja1NjaGVtYVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB0eXBlOiB3aXRoTnVsbGFibGVKU09OU2NoZW1hVHlwZSgnYXJyYXknLCBpc1JlcXVpcmVkKSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2FzZSAnYXJyYXknOiB7XG4gICAgICAgICAgICBmaWVsZFNjaGVtYSA9IHtcbiAgICAgICAgICAgICAgaXRlbXM6IHtcbiAgICAgICAgICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UsXG4gICAgICAgICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgICAgICAgLi4uZmllbGRzVG9KU09OU2NoZW1hKFxuICAgICAgICAgICAgICAgICAgY29sbGVjdGlvbklERmllbGRUeXBlcyxcbiAgICAgICAgICAgICAgICAgIGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICAgICAgICAgIGludGVyZmFjZU5hbWVEZWZpbml0aW9ucyxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB0eXBlOiB3aXRoTnVsbGFibGVKU09OU2NoZW1hVHlwZSgnYXJyYXknLCBpc1JlcXVpcmVkKSxcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGZpZWxkLmludGVyZmFjZU5hbWUpIHtcbiAgICAgICAgICAgICAgaW50ZXJmYWNlTmFtZURlZmluaXRpb25zLnNldChmaWVsZC5pbnRlcmZhY2VOYW1lLCBmaWVsZFNjaGVtYSlcblxuICAgICAgICAgICAgICBmaWVsZFNjaGVtYSA9IHtcbiAgICAgICAgICAgICAgICAkcmVmOiBgIy9kZWZpbml0aW9ucy8ke2ZpZWxkLmludGVyZmFjZU5hbWV9YCxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICdyb3cnOlxuICAgICAgICAgIGNhc2UgJ2NvbGxhcHNpYmxlJzoge1xuICAgICAgICAgICAgY29uc3QgY2hpbGRTY2hlbWEgPSBmaWVsZHNUb0pTT05TY2hlbWEoXG4gICAgICAgICAgICAgIGNvbGxlY3Rpb25JREZpZWxkVHlwZXMsXG4gICAgICAgICAgICAgIGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICAgICAgaW50ZXJmYWNlTmFtZURlZmluaXRpb25zLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMoY2hpbGRTY2hlbWEucHJvcGVydGllcykuZm9yRWFjaCgoW3Byb3BOYW1lLCBwcm9wU2NoZW1hXSkgPT4ge1xuICAgICAgICAgICAgICBmaWVsZFNjaGVtYXMuc2V0KHByb3BOYW1lLCBwcm9wU2NoZW1hKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIGNoaWxkU2NoZW1hLnJlcXVpcmVkLmZvckVhY2goKHByb3BOYW1lKSA9PiB7XG4gICAgICAgICAgICAgIHJlcXVpcmVkRmllbGROYW1lcy5hZGQocHJvcE5hbWUpXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICd0YWJzJzoge1xuICAgICAgICAgICAgZmllbGQudGFicy5mb3JFYWNoKCh0YWIpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgY2hpbGRTY2hlbWEgPSBmaWVsZHNUb0pTT05TY2hlbWEoXG4gICAgICAgICAgICAgICAgY29sbGVjdGlvbklERmllbGRUeXBlcyxcbiAgICAgICAgICAgICAgICB0YWIuZmllbGRzLFxuICAgICAgICAgICAgICAgIGludGVyZmFjZU5hbWVEZWZpbml0aW9ucyxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpZiAodGFiSGFzTmFtZSh0YWIpKSB7XG4gICAgICAgICAgICAgICAgLy8gY291bGQgaGF2ZSBpbnRlcmZhY2VcbiAgICAgICAgICAgICAgICBmaWVsZFNjaGVtYXMuc2V0KHRhYi5uYW1lLCB7XG4gICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UsXG4gICAgICAgICAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICAgICAgICAgIC4uLmNoaWxkU2NoZW1hLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgcmVxdWlyZWRGaWVsZE5hbWVzLmFkZCh0YWIubmFtZSlcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBPYmplY3QuZW50cmllcyhjaGlsZFNjaGVtYS5wcm9wZXJ0aWVzKS5mb3JFYWNoKChbcHJvcE5hbWUsIHByb3BTY2hlbWFdKSA9PiB7XG4gICAgICAgICAgICAgICAgICBmaWVsZFNjaGVtYXMuc2V0KHByb3BOYW1lLCBwcm9wU2NoZW1hKVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgY2hpbGRTY2hlbWEucmVxdWlyZWQuZm9yRWFjaCgocHJvcE5hbWUpID0+IHtcbiAgICAgICAgICAgICAgICAgIHJlcXVpcmVkRmllbGROYW1lcy5hZGQocHJvcE5hbWUpXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2FzZSAnZ3JvdXAnOiB7XG4gICAgICAgICAgICBmaWVsZFNjaGVtYSA9IHtcbiAgICAgICAgICAgICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlLFxuICAgICAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICAgICAgLi4uZmllbGRzVG9KU09OU2NoZW1hKGNvbGxlY3Rpb25JREZpZWxkVHlwZXMsIGZpZWxkLmZpZWxkcywgaW50ZXJmYWNlTmFtZURlZmluaXRpb25zKSxcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGZpZWxkLmludGVyZmFjZU5hbWUpIHtcbiAgICAgICAgICAgICAgaW50ZXJmYWNlTmFtZURlZmluaXRpb25zLnNldChmaWVsZC5pbnRlcmZhY2VOYW1lLCBmaWVsZFNjaGVtYSlcblxuICAgICAgICAgICAgICBmaWVsZFNjaGVtYSA9IHtcbiAgICAgICAgICAgICAgICAkcmVmOiBgIy9kZWZpbml0aW9ucy8ke2ZpZWxkLmludGVyZmFjZU5hbWV9YCxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmaWVsZFNjaGVtYSAmJiBmaWVsZEFmZmVjdHNEYXRhKGZpZWxkKSkge1xuICAgICAgICAgIGZpZWxkU2NoZW1hcy5zZXQoZmllbGQubmFtZSwgZmllbGRTY2hlbWEpXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmllbGRTY2hlbWFzXG4gICAgICB9LCBuZXcgTWFwPHN0cmluZywgSlNPTlNjaGVtYTQ+KCkpLFxuICAgICksXG4gICAgcmVxdWlyZWQ6IEFycmF5LmZyb20ocmVxdWlyZWRGaWVsZE5hbWVzKSxcbiAgfVxufVxuXG4vLyBUaGlzIGZ1bmN0aW9uIGlzIHBhcnQgb2YgdGhlIHB1YmxpYyBBUEkgYW5kIGlzIGV4cG9ydGVkIHRocm91Z2ggcGF5bG9hZC91dGlsaXRpZXNcbmV4cG9ydCBmdW5jdGlvbiBlbnRpdHlUb0pTT05TY2hlbWEoXG4gIGNvbmZpZzogU2FuaXRpemVkQ29uZmlnLFxuICBpbmNvbWluZ0VudGl0eTogU2FuaXRpemVkQ29sbGVjdGlvbkNvbmZpZyB8IFNhbml0aXplZEdsb2JhbENvbmZpZyxcbiAgaW50ZXJmYWNlTmFtZURlZmluaXRpb25zOiBNYXA8c3RyaW5nLCBKU09OU2NoZW1hND4sXG4gIGRlZmF1bHRJRFR5cGU6ICdudW1iZXInIHwgJ3RleHQnLFxuKTogSlNPTlNjaGVtYTQge1xuICBjb25zdCBlbnRpdHk6IFNhbml0aXplZENvbGxlY3Rpb25Db25maWcgfCBTYW5pdGl6ZWRHbG9iYWxDb25maWcgPSBkZWVwQ29weU9iamVjdChpbmNvbWluZ0VudGl0eSlcbiAgY29uc3QgdGl0bGUgPSBlbnRpdHkudHlwZXNjcmlwdD8uaW50ZXJmYWNlXG4gICAgPyBlbnRpdHkudHlwZXNjcmlwdC5pbnRlcmZhY2VcbiAgICA6IHNpbmd1bGFyKHRvV29yZHMoZW50aXR5LnNsdWcsIHRydWUpKVxuXG4gIGNvbnN0IGlkRmllbGQ6IEZpZWxkQWZmZWN0aW5nRGF0YSA9IHsgbmFtZTogJ2lkJywgcmVxdWlyZWQ6IHRydWUsIHR5cGU6IGRlZmF1bHRJRFR5cGUgYXMgJ3RleHQnIH1cbiAgY29uc3QgY3VzdG9tSWRGaWVsZCA9IGVudGl0eS5maWVsZHMuZmluZChcbiAgICAoZmllbGQpID0+IGZpZWxkQWZmZWN0c0RhdGEoZmllbGQpICYmIGZpZWxkLm5hbWUgPT09ICdpZCcsXG4gICkgYXMgRmllbGRBZmZlY3RpbmdEYXRhXG5cbiAgaWYgKGN1c3RvbUlkRmllbGQgJiYgY3VzdG9tSWRGaWVsZC50eXBlICE9PSAnZ3JvdXAnICYmIGN1c3RvbUlkRmllbGQudHlwZSAhPT0gJ3RhYicpIHtcbiAgICBjdXN0b21JZEZpZWxkLnJlcXVpcmVkID0gdHJ1ZVxuICB9IGVsc2Uge1xuICAgIGVudGl0eS5maWVsZHMudW5zaGlmdChpZEZpZWxkKVxuICB9XG5cbiAgLy8gbWFyayB0aW1lc3RhbXAgZmllbGRzIHJlcXVpcmVkXG4gIGlmICgndGltZXN0YW1wcycgaW4gZW50aXR5ICYmIGVudGl0eS50aW1lc3RhbXBzICE9PSBmYWxzZSkge1xuICAgIGVudGl0eS5maWVsZHMgPSBlbnRpdHkuZmllbGRzLm1hcCgoZmllbGQpID0+IHtcbiAgICAgIGlmIChmaWVsZEFmZmVjdHNEYXRhKGZpZWxkKSAmJiAoZmllbGQubmFtZSA9PT0gJ2NyZWF0ZWRBdCcgfHwgZmllbGQubmFtZSA9PT0gJ3VwZGF0ZWRBdCcpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uZmllbGQsXG4gICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmaWVsZFxuICAgIH0pXG4gIH1cblxuICBpZiAoJ2F1dGgnIGluIGVudGl0eSAmJiBlbnRpdHkuYXV0aCAmJiAhZW50aXR5LmF1dGg/LmRpc2FibGVMb2NhbFN0cmF0ZWd5KSB7XG4gICAgZW50aXR5LmZpZWxkcy5wdXNoKHtcbiAgICAgIG5hbWU6ICdwYXNzd29yZCcsXG4gICAgICB0eXBlOiAndGV4dCcsXG4gICAgfSlcbiAgfVxuXG4gIC8vIHVzZWQgZm9yIHJlbGF0aW9uc2hpcCBmaWVsZHMsIHRvIGRldGVybWluZSB3aGV0aGVyIHRvIHVzZSBhIHN0cmluZyBvciBudW1iZXIgdHlwZSBmb3IgdGhlIElEXG4gIGNvbnN0IGNvbGxlY3Rpb25JREZpZWxkVHlwZXM6IHsgW2tleTogc3RyaW5nXTogJ251bWJlcicgfCAnc3RyaW5nJyB9ID0gY29uZmlnLmNvbGxlY3Rpb25zLnJlZHVjZShcbiAgICAoYWNjLCBjb2xsZWN0aW9uKSA9PiB7XG4gICAgICBjb25zdCBjdXN0b21Db2xsZWN0aW9uSWRGaWVsZCA9IGNvbGxlY3Rpb24uZmllbGRzLmZpbmQoXG4gICAgICAgIChmaWVsZCkgPT4gJ25hbWUnIGluIGZpZWxkICYmIGZpZWxkLm5hbWUgPT09ICdpZCcsXG4gICAgICApXG5cbiAgICAgIGFjY1tjb2xsZWN0aW9uLnNsdWddID0gZGVmYXVsdElEVHlwZSA9PT0gJ3RleHQnID8gJ3N0cmluZycgOiAnbnVtYmVyJ1xuXG4gICAgICBpZiAoY3VzdG9tQ29sbGVjdGlvbklkRmllbGQpIHtcbiAgICAgICAgYWNjW2NvbGxlY3Rpb24uc2x1Z10gPSBjdXN0b21Db2xsZWN0aW9uSWRGaWVsZC50eXBlID09PSAnbnVtYmVyJyA/ICdudW1iZXInIDogJ3N0cmluZydcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGFjY1xuICAgIH0sXG4gICAge30sXG4gIClcblxuICByZXR1cm4ge1xuICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZSxcbiAgICB0aXRsZSxcbiAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAuLi5maWVsZHNUb0pTT05TY2hlbWEoY29sbGVjdGlvbklERmllbGRUeXBlcywgZW50aXR5LmZpZWxkcywgaW50ZXJmYWNlTmFtZURlZmluaXRpb25zKSxcbiAgfVxufVxuXG4vKipcbiAqIFRoaXMgaXMgdXNlZCBmb3IgZ2VuZXJhdGluZyB0aGUgVHlwZVNjcmlwdCB0eXBlcyAocGF5bG9hZC10eXBlcy50cykgd2l0aCB0aGUgcGF5bG9hZCBnZW5lcmF0ZTp0eXBlcyBjb21tYW5kLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29uZmlnVG9KU09OU2NoZW1hKFxuICBjb25maWc6IFNhbml0aXplZENvbmZpZyxcbiAgZGVmYXVsdElEVHlwZT86ICdudW1iZXInIHwgJ3RleHQnLFxuKTogSlNPTlNjaGVtYTQge1xuICAvLyBhIG11dGFibGUgTWFwIHRvIHN0b3JlIGN1c3RvbSB0b3AtbGV2ZWwgYGludGVyZmFjZU5hbWVgIHR5cGVzXG4gIGNvbnN0IGludGVyZmFjZU5hbWVEZWZpbml0aW9uczogTWFwPHN0cmluZywgSlNPTlNjaGVtYTQ+ID0gbmV3IE1hcCgpXG4gIGNvbnN0IGVudGl0eURlZmluaXRpb25zOiB7IFtrOiBzdHJpbmddOiBKU09OU2NoZW1hNCB9ID0gW1xuICAgIC4uLmNvbmZpZy5nbG9iYWxzLFxuICAgIC4uLmNvbmZpZy5jb2xsZWN0aW9ucyxcbiAgXS5yZWR1Y2UoKGFjYywgZW50aXR5KSA9PiB7XG4gICAgYWNjW2VudGl0eS5zbHVnXSA9IGVudGl0eVRvSlNPTlNjaGVtYShjb25maWcsIGVudGl0eSwgaW50ZXJmYWNlTmFtZURlZmluaXRpb25zLCBkZWZhdWx0SURUeXBlKVxuICAgIHJldHVybiBhY2NcbiAgfSwge30pXG5cbiAgcmV0dXJuIHtcbiAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UsXG4gICAgZGVmaW5pdGlvbnM6IHsgLi4uZW50aXR5RGVmaW5pdGlvbnMsIC4uLk9iamVjdC5mcm9tRW50cmllcyhpbnRlcmZhY2VOYW1lRGVmaW5pdGlvbnMpIH0sXG4gICAgcHJvcGVydGllczoge1xuICAgICAgY29sbGVjdGlvbnM6IGdlbmVyYXRlRW50aXR5U2NoZW1hcyhjb25maWcuY29sbGVjdGlvbnMgfHwgW10pLFxuICAgICAgZ2xvYmFsczogZ2VuZXJhdGVFbnRpdHlTY2hlbWFzKGNvbmZpZy5nbG9iYWxzIHx8IFtdKSxcbiAgICB9LFxuICAgIHJlcXVpcmVkOiBbJ2NvbGxlY3Rpb25zJywgJ2dsb2JhbHMnXSxcbiAgICB0aXRsZTogJ0NvbmZpZycsXG4gICAgdHlwZTogJ29iamVjdCcsXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJ3aXRoTnVsbGFibGVKU09OU2NoZW1hVHlwZSIsImVudGl0eVRvSlNPTlNjaGVtYSIsImNvbmZpZ1RvSlNPTlNjaGVtYSIsImZpZWxkSXNSZXF1aXJlZCIsImZpZWxkIiwiaXNDb25kaXRpb25hbCIsIkJvb2xlYW4iLCJhZG1pbiIsImNvbmRpdGlvbiIsImlzTWFya2VkUmVxdWlyZWQiLCJyZXF1aXJlZCIsImZpZWxkQWZmZWN0c0RhdGEiLCJ0eXBlIiwiZmllbGRzIiwic29tZSIsInN1YkZpZWxkIiwidGFicyIsInRhYiIsImJ1aWxkT3B0aW9uRW51bXMiLCJvcHRpb25zIiwibWFwIiwib3B0aW9uIiwidmFsdWUiLCJnZW5lcmF0ZUVudGl0eVNjaGVtYXMiLCJlbnRpdGllcyIsInByb3BlcnRpZXMiLCJyZWR1Y2UiLCJhY2MiLCJzbHVnIiwiJHJlZiIsImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiwiT2JqZWN0Iiwia2V5cyIsImZpZWxkVHlwZSIsImlzUmVxdWlyZWQiLCJmaWVsZFR5cGVzIiwicHVzaCIsImZpZWxkc1RvSlNPTlNjaGVtYSIsImNvbGxlY3Rpb25JREZpZWxkVHlwZXMiLCJpbnRlcmZhY2VOYW1lRGVmaW5pdGlvbnMiLCJyZXF1aXJlZEZpZWxkTmFtZXMiLCJTZXQiLCJmcm9tRW50cmllcyIsImZpZWxkU2NoZW1hcyIsImFkZCIsIm5hbWUiLCJmaWVsZFNjaGVtYSIsImhhc01hbnkiLCJpdGVtcyIsImVkaXRvciIsIm91dHB1dFNjaGVtYSIsImVudW0iLCJvcHRpb25FbnVtcyIsIm1heEl0ZW1zIiwibWluSXRlbXMiLCJBcnJheSIsImlzQXJyYXkiLCJyZWxhdGlvblRvIiwib25lT2YiLCJyZWxhdGlvbiIsImNvbnN0IiwiYmxvY2tzIiwiYmxvY2siLCJibG9ja0ZpZWxkU2NoZW1hcyIsImJsb2NrU2NoZW1hIiwiYmxvY2tUeXBlIiwiaW50ZXJmYWNlTmFtZSIsInNldCIsImNoaWxkU2NoZW1hIiwiZW50cmllcyIsImZvckVhY2giLCJwcm9wTmFtZSIsInByb3BTY2hlbWEiLCJ0YWJIYXNOYW1lIiwiTWFwIiwiZnJvbSIsImNvbmZpZyIsImluY29taW5nRW50aXR5IiwiZGVmYXVsdElEVHlwZSIsImVudGl0eSIsImRlZXBDb3B5T2JqZWN0IiwidGl0bGUiLCJ0eXBlc2NyaXB0IiwiaW50ZXJmYWNlIiwic2luZ3VsYXIiLCJ0b1dvcmRzIiwiaWRGaWVsZCIsImN1c3RvbUlkRmllbGQiLCJmaW5kIiwidW5zaGlmdCIsInRpbWVzdGFtcHMiLCJhdXRoIiwiZGlzYWJsZUxvY2FsU3RyYXRlZ3kiLCJjb2xsZWN0aW9ucyIsImNvbGxlY3Rpb24iLCJjdXN0b21Db2xsZWN0aW9uSWRGaWVsZCIsImVudGl0eURlZmluaXRpb25zIiwiZ2xvYmFscyIsImRlZmluaXRpb25zIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztJQXNFZ0JBLDBCQUEwQjtlQUExQkE7O0lBNlhBQyxrQkFBa0I7ZUFBbEJBOztJQXVFQUMsa0JBQWtCO2VBQWxCQTs7OzJCQXhnQlM7dUJBT29CO2dDQUNkOzhCQUNQ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
@@ -1 +1 @@
1
- {"version":3,"file":"initTransaction.d.ts","sourceRoot":"","sources":["../../src/utilities/initTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEtD;;;GAGG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAqB3E"}
1
+ {"version":3,"file":"initTransaction.d.ts","sourceRoot":"","sources":["../../src/utilities/initTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEtD;;;GAGG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAuB3E"}
@@ -22,7 +22,9 @@ async function initTransaction(req) {
22
22
  if (typeof payload.db.beginTransaction === 'function') {
23
23
  // create a new transaction
24
24
  req.transactionIDPromise = payload.db.beginTransaction().then((transactionID)=>{
25
- req.transactionID = transactionID;
25
+ if (transactionID) {
26
+ req.transactionID = transactionID;
27
+ }
26
28
  delete req.transactionIDPromise;
27
29
  });
28
30
  await req.transactionIDPromise;
@@ -31,4 +33,4 @@ async function initTransaction(req) {
31
33
  return false;
32
34
  }
33
35
 
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvaW5pdFRyYW5zYWN0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUGF5bG9hZFJlcXVlc3QgfSBmcm9tICcuLi9leHByZXNzL3R5cGVzJ1xuXG4vKipcbiAqIFN0YXJ0cyBhIG5ldyB0cmFuc2FjdGlvbiB1c2luZyB0aGUgZGIgYWRhcHRlciB3aXRoIGEgcmFuZG9tIGlkIGFuZCB0aGVuIGFzc2lnbnMgaXQgdG8gdGhlIHJlcS50cmFuc2FjdGlvblxuICogQHJldHVybnMgdHJ1ZSBpZiBiZWdpbm5pbmcgYSB0cmFuc2FjdGlvbiBhbmQgZmFsc2Ugd2hlbiByZXEgYWxyZWFkeSBoYXMgYSB0cmFuc2FjdGlvbiB0byB1c2VcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGluaXRUcmFuc2FjdGlvbihyZXE6IFBheWxvYWRSZXF1ZXN0KTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGNvbnN0IHsgcGF5bG9hZCwgdHJhbnNhY3Rpb25JRCwgdHJhbnNhY3Rpb25JRFByb21pc2UgfSA9IHJlcVxuICBpZiAodHJhbnNhY3Rpb25JRCkge1xuICAgIC8vIHdlIGFscmVhZHkgaGF2ZSBhIHRyYW5zYWN0aW9uLCB3ZSdyZSBub3QgaW4gY2hhcmdlIG9mIGNvbW1pdHRpbmcgaXRcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuICBpZiAodHJhbnNhY3Rpb25JRFByb21pc2UpIHtcbiAgICAvLyB3YWl0IGZvciB3aG9ldmVyIGVsc2UgaXMgYWxyZWFkeSBjcmVhdGluZyB0aGUgdHJhbnNhY3Rpb25cbiAgICBhd2FpdCB0cmFuc2FjdGlvbklEUHJvbWlzZVxuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIGlmICh0eXBlb2YgcGF5bG9hZC5kYi5iZWdpblRyYW5zYWN0aW9uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgLy8gY3JlYXRlIGEgbmV3IHRyYW5zYWN0aW9uXG4gICAgcmVxLnRyYW5zYWN0aW9uSURQcm9taXNlID0gcGF5bG9hZC5kYi5iZWdpblRyYW5zYWN0aW9uKCkudGhlbigodHJhbnNhY3Rpb25JRCkgPT4ge1xuICAgICAgcmVxLnRyYW5zYWN0aW9uSUQgPSB0cmFuc2FjdGlvbklEXG4gICAgICBkZWxldGUgcmVxLnRyYW5zYWN0aW9uSURQcm9taXNlXG4gICAgfSlcbiAgICBhd2FpdCByZXEudHJhbnNhY3Rpb25JRFByb21pc2VcbiAgICByZXR1cm4gISFyZXEudHJhbnNhY3Rpb25JRFxuICB9XG4gIHJldHVybiBmYWxzZVxufVxuIl0sIm5hbWVzIjpbImluaXRUcmFuc2FjdGlvbiIsInJlcSIsInBheWxvYWQiLCJ0cmFuc2FjdGlvbklEIiwidHJhbnNhY3Rpb25JRFByb21pc2UiLCJkYiIsImJlZ2luVHJhbnNhY3Rpb24iLCJ0aGVuIl0sIm1hcHBpbmdzIjoiOzs7OytCQU1zQkE7OztlQUFBQTs7O0FBQWYsZUFBZUEsZ0JBQWdCQyxHQUFtQjtJQUN2RCxNQUFNLEVBQUVDLE9BQU8sRUFBRUMsYUFBYSxFQUFFQyxvQkFBb0IsRUFBRSxHQUFHSDtJQUN6RCxJQUFJRSxlQUFlO1FBQ2pCLHNFQUFzRTtRQUN0RSxPQUFPO0lBQ1Q7SUFDQSxJQUFJQyxzQkFBc0I7UUFDeEIsNERBQTREO1FBQzVELE1BQU1BO1FBQ04sT0FBTztJQUNUO0lBQ0EsSUFBSSxPQUFPRixRQUFRRyxFQUFFLENBQUNDLGdCQUFnQixLQUFLLFlBQVk7UUFDckQsMkJBQTJCO1FBQzNCTCxJQUFJRyxvQkFBb0IsR0FBR0YsUUFBUUcsRUFBRSxDQUFDQyxnQkFBZ0IsR0FBR0MsSUFBSSxDQUFDLENBQUNKO1lBQzdERixJQUFJRSxhQUFhLEdBQUdBO1lBQ3BCLE9BQU9GLElBQUlHLG9CQUFvQjtRQUNqQztRQUNBLE1BQU1ILElBQUlHLG9CQUFvQjtRQUM5QixPQUFPLENBQUMsQ0FBQ0gsSUFBSUUsYUFBYTtJQUM1QjtJQUNBLE9BQU87QUFDVCJ9
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvaW5pdFRyYW5zYWN0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUGF5bG9hZFJlcXVlc3QgfSBmcm9tICcuLi9leHByZXNzL3R5cGVzJ1xuXG4vKipcbiAqIFN0YXJ0cyBhIG5ldyB0cmFuc2FjdGlvbiB1c2luZyB0aGUgZGIgYWRhcHRlciB3aXRoIGEgcmFuZG9tIGlkIGFuZCB0aGVuIGFzc2lnbnMgaXQgdG8gdGhlIHJlcS50cmFuc2FjdGlvblxuICogQHJldHVybnMgdHJ1ZSBpZiBiZWdpbm5pbmcgYSB0cmFuc2FjdGlvbiBhbmQgZmFsc2Ugd2hlbiByZXEgYWxyZWFkeSBoYXMgYSB0cmFuc2FjdGlvbiB0byB1c2VcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGluaXRUcmFuc2FjdGlvbihyZXE6IFBheWxvYWRSZXF1ZXN0KTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGNvbnN0IHsgcGF5bG9hZCwgdHJhbnNhY3Rpb25JRCwgdHJhbnNhY3Rpb25JRFByb21pc2UgfSA9IHJlcVxuICBpZiAodHJhbnNhY3Rpb25JRCkge1xuICAgIC8vIHdlIGFscmVhZHkgaGF2ZSBhIHRyYW5zYWN0aW9uLCB3ZSdyZSBub3QgaW4gY2hhcmdlIG9mIGNvbW1pdHRpbmcgaXRcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuICBpZiAodHJhbnNhY3Rpb25JRFByb21pc2UpIHtcbiAgICAvLyB3YWl0IGZvciB3aG9ldmVyIGVsc2UgaXMgYWxyZWFkeSBjcmVhdGluZyB0aGUgdHJhbnNhY3Rpb25cbiAgICBhd2FpdCB0cmFuc2FjdGlvbklEUHJvbWlzZVxuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIGlmICh0eXBlb2YgcGF5bG9hZC5kYi5iZWdpblRyYW5zYWN0aW9uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgLy8gY3JlYXRlIGEgbmV3IHRyYW5zYWN0aW9uXG4gICAgcmVxLnRyYW5zYWN0aW9uSURQcm9taXNlID0gcGF5bG9hZC5kYi5iZWdpblRyYW5zYWN0aW9uKCkudGhlbigodHJhbnNhY3Rpb25JRCkgPT4ge1xuICAgICAgaWYgKHRyYW5zYWN0aW9uSUQpIHtcbiAgICAgICAgcmVxLnRyYW5zYWN0aW9uSUQgPSB0cmFuc2FjdGlvbklEXG4gICAgICB9XG4gICAgICBkZWxldGUgcmVxLnRyYW5zYWN0aW9uSURQcm9taXNlXG4gICAgfSlcbiAgICBhd2FpdCByZXEudHJhbnNhY3Rpb25JRFByb21pc2VcbiAgICByZXR1cm4gISFyZXEudHJhbnNhY3Rpb25JRFxuICB9XG4gIHJldHVybiBmYWxzZVxufVxuIl0sIm5hbWVzIjpbImluaXRUcmFuc2FjdGlvbiIsInJlcSIsInBheWxvYWQiLCJ0cmFuc2FjdGlvbklEIiwidHJhbnNhY3Rpb25JRFByb21pc2UiLCJkYiIsImJlZ2luVHJhbnNhY3Rpb24iLCJ0aGVuIl0sIm1hcHBpbmdzIjoiOzs7OytCQU1zQkE7OztlQUFBQTs7O0FBQWYsZUFBZUEsZ0JBQWdCQyxHQUFtQjtJQUN2RCxNQUFNLEVBQUVDLE9BQU8sRUFBRUMsYUFBYSxFQUFFQyxvQkFBb0IsRUFBRSxHQUFHSDtJQUN6RCxJQUFJRSxlQUFlO1FBQ2pCLHNFQUFzRTtRQUN0RSxPQUFPO0lBQ1Q7SUFDQSxJQUFJQyxzQkFBc0I7UUFDeEIsNERBQTREO1FBQzVELE1BQU1BO1FBQ04sT0FBTztJQUNUO0lBQ0EsSUFBSSxPQUFPRixRQUFRRyxFQUFFLENBQUNDLGdCQUFnQixLQUFLLFlBQVk7UUFDckQsMkJBQTJCO1FBQzNCTCxJQUFJRyxvQkFBb0IsR0FBR0YsUUFBUUcsRUFBRSxDQUFDQyxnQkFBZ0IsR0FBR0MsSUFBSSxDQUFDLENBQUNKO1lBQzdELElBQUlBLGVBQWU7Z0JBQ2pCRixJQUFJRSxhQUFhLEdBQUdBO1lBQ3RCO1lBQ0EsT0FBT0YsSUFBSUcsb0JBQW9CO1FBQ2pDO1FBQ0EsTUFBTUgsSUFBSUcsb0JBQW9CO1FBQzlCLE9BQU8sQ0FBQyxDQUFDSCxJQUFJRSxhQUFhO0lBQzVCO0lBQ0EsT0FBTztBQUNUIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"isValidID.d.ts","sourceRoot":"","sources":["../../src/utilities/isValidID.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,SAAS,UACb,MAAM,GAAG,MAAM,QAChB,UAAU,GAAG,QAAQ,GAAG,MAAM,KACnC,OAOF,CAAA"}
1
+ {"version":3,"file":"isValidID.d.ts","sourceRoot":"","sources":["../../src/utilities/isValidID.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,SAAS,UACb,MAAM,GAAG,MAAM,QAChB,UAAU,GAAG,QAAQ,GAAG,MAAM,KACnC,OAcF,CAAA"}
@@ -15,11 +15,20 @@ function _interop_require_default(obj) {
15
15
  };
16
16
  }
17
17
  const isValidID = (value, type)=>{
18
- if (type === 'text') return value && typeof value === 'string';
18
+ if (type === 'text' && value) {
19
+ if ([
20
+ 'object',
21
+ 'string'
22
+ ].includes(typeof value)) {
23
+ const isObjectID = _bsonobjectid.default.isValid(value);
24
+ return typeof value === 'string' || isObjectID;
25
+ }
26
+ return false;
27
+ }
19
28
  if (typeof value === 'number' && !Number.isNaN(value)) return true;
20
29
  if (type === 'ObjectID') {
21
30
  return _bsonobjectid.default.isValid(String(value));
22
31
  }
23
32
  };
24
33
 
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvaXNWYWxpZElELnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBPYmplY3RJRCBmcm9tICdic29uLW9iamVjdGlkJ1xuXG5leHBvcnQgY29uc3QgaXNWYWxpZElEID0gKFxuICB2YWx1ZTogbnVtYmVyIHwgc3RyaW5nLFxuICB0eXBlOiAnT2JqZWN0SUQnIHwgJ251bWJlcicgfCAndGV4dCcsXG4pOiBib29sZWFuID0+IHtcbiAgaWYgKHR5cGUgPT09ICd0ZXh0JykgcmV0dXJuIHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZydcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgIU51bWJlci5pc05hTih2YWx1ZSkpIHJldHVybiB0cnVlXG5cbiAgaWYgKHR5cGUgPT09ICdPYmplY3RJRCcpIHtcbiAgICByZXR1cm4gT2JqZWN0SUQuaXNWYWxpZChTdHJpbmcodmFsdWUpKVxuICB9XG59XG4iXSwibmFtZXMiOlsiaXNWYWxpZElEIiwidmFsdWUiLCJ0eXBlIiwiTnVtYmVyIiwiaXNOYU4iLCJPYmplY3RJRCIsImlzVmFsaWQiLCJTdHJpbmciXSwibWFwcGluZ3MiOiI7Ozs7K0JBRWFBOzs7ZUFBQUE7OztxRUFGUTs7Ozs7O0FBRWQsTUFBTUEsWUFBWSxDQUN2QkMsT0FDQUM7SUFFQSxJQUFJQSxTQUFTLFFBQVEsT0FBT0QsU0FBUyxPQUFPQSxVQUFVO0lBQ3RELElBQUksT0FBT0EsVUFBVSxZQUFZLENBQUNFLE9BQU9DLEtBQUssQ0FBQ0gsUUFBUSxPQUFPO0lBRTlELElBQUlDLFNBQVMsWUFBWTtRQUN2QixPQUFPRyxxQkFBUSxDQUFDQyxPQUFPLENBQUNDLE9BQU9OO0lBQ2pDO0FBQ0YifQ==
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvaXNWYWxpZElELnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBPYmplY3RJRCBmcm9tICdic29uLW9iamVjdGlkJ1xuXG5leHBvcnQgY29uc3QgaXNWYWxpZElEID0gKFxuICB2YWx1ZTogbnVtYmVyIHwgc3RyaW5nLFxuICB0eXBlOiAnT2JqZWN0SUQnIHwgJ251bWJlcicgfCAndGV4dCcsXG4pOiBib29sZWFuID0+IHtcbiAgaWYgKHR5cGUgPT09ICd0ZXh0JyAmJiB2YWx1ZSkge1xuICAgIGlmIChbJ29iamVjdCcsICdzdHJpbmcnXS5pbmNsdWRlcyh0eXBlb2YgdmFsdWUpKSB7XG4gICAgICBjb25zdCBpc09iamVjdElEID0gT2JqZWN0SUQuaXNWYWxpZCh2YWx1ZSBhcyBzdHJpbmcpXG4gICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyB8fCBpc09iamVjdElEXG4gICAgfVxuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgIU51bWJlci5pc05hTih2YWx1ZSkpIHJldHVybiB0cnVlXG5cbiAgaWYgKHR5cGUgPT09ICdPYmplY3RJRCcpIHtcbiAgICByZXR1cm4gT2JqZWN0SUQuaXNWYWxpZChTdHJpbmcodmFsdWUpKVxuICB9XG59XG4iXSwibmFtZXMiOlsiaXNWYWxpZElEIiwidmFsdWUiLCJ0eXBlIiwiaW5jbHVkZXMiLCJpc09iamVjdElEIiwiT2JqZWN0SUQiLCJpc1ZhbGlkIiwiTnVtYmVyIiwiaXNOYU4iLCJTdHJpbmciXSwibWFwcGluZ3MiOiI7Ozs7K0JBRWFBOzs7ZUFBQUE7OztxRUFGUTs7Ozs7O0FBRWQsTUFBTUEsWUFBWSxDQUN2QkMsT0FDQUM7SUFFQSxJQUFJQSxTQUFTLFVBQVVELE9BQU87UUFDNUIsSUFBSTtZQUFDO1lBQVU7U0FBUyxDQUFDRSxRQUFRLENBQUMsT0FBT0YsUUFBUTtZQUMvQyxNQUFNRyxhQUFhQyxxQkFBUSxDQUFDQyxPQUFPLENBQUNMO1lBQ3BDLE9BQU8sT0FBT0EsVUFBVSxZQUFZRztRQUN0QztRQUNBLE9BQU87SUFDVDtJQUVBLElBQUksT0FBT0gsVUFBVSxZQUFZLENBQUNNLE9BQU9DLEtBQUssQ0FBQ1AsUUFBUSxPQUFPO0lBRTlELElBQUlDLFNBQVMsWUFBWTtRQUN2QixPQUFPRyxxQkFBUSxDQUFDQyxPQUFPLENBQUNHLE9BQU9SO0lBQ2pDO0FBQ0YifQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Creates a proxy for the given object that has its own property
3
+ */
4
+ export default function isolateObjectProperty<T>(object: T, key: any): T;
5
+ //# sourceMappingURL=isolateObjectProperty.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isolateObjectProperty.d.ts","sourceRoot":"","sources":["../../src/utilities/isolateObjectProperty.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,qBAAqB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,KAAA,GAAG,CAAC,CAuBlE"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Creates a proxy for the given object that has its own property
3
+ */ "use strict";
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ Object.defineProperty(exports, "default", {
8
+ enumerable: true,
9
+ get: function() {
10
+ return isolateObjectProperty;
11
+ }
12
+ });
13
+ function isolateObjectProperty(object, key) {
14
+ const delegate = {};
15
+ const handler = {
16
+ deleteProperty (target, p) {
17
+ return Reflect.deleteProperty(p === key ? delegate : target, p);
18
+ },
19
+ get (target, p, receiver) {
20
+ return Reflect.get(p === key ? delegate : target, p, receiver);
21
+ },
22
+ has (target, p) {
23
+ return Reflect.has(p === key ? delegate : target, p);
24
+ },
25
+ set (target, p, newValue, receiver) {
26
+ if (p === key) {
27
+ // in case of transactionID we must ignore any receiver, because
28
+ // "If provided and target does not have a setter for propertyKey, the property will be set on receiver instead."
29
+ return Reflect.set(delegate, p, newValue);
30
+ } else {
31
+ return Reflect.set(target, p, newValue, receiver);
32
+ }
33
+ }
34
+ };
35
+ return new Proxy(object, handler);
36
+ }
37
+
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvaXNvbGF0ZU9iamVjdFByb3BlcnR5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ3JlYXRlcyBhIHByb3h5IGZvciB0aGUgZ2l2ZW4gb2JqZWN0IHRoYXQgaGFzIGl0cyBvd24gcHJvcGVydHlcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNvbGF0ZU9iamVjdFByb3BlcnR5PFQ+KG9iamVjdDogVCwga2V5KTogVCB7XG4gIGNvbnN0IGRlbGVnYXRlID0ge31cbiAgY29uc3QgaGFuZGxlciA9IHtcbiAgICBkZWxldGVQcm9wZXJ0eSh0YXJnZXQsIHApOiBib29sZWFuIHtcbiAgICAgIHJldHVybiBSZWZsZWN0LmRlbGV0ZVByb3BlcnR5KHAgPT09IGtleSA/IGRlbGVnYXRlIDogdGFyZ2V0LCBwKVxuICAgIH0sXG4gICAgZ2V0KHRhcmdldCwgcCwgcmVjZWl2ZXIpIHtcbiAgICAgIHJldHVybiBSZWZsZWN0LmdldChwID09PSBrZXkgPyBkZWxlZ2F0ZSA6IHRhcmdldCwgcCwgcmVjZWl2ZXIpXG4gICAgfSxcbiAgICBoYXModGFyZ2V0LCBwKSB7XG4gICAgICByZXR1cm4gUmVmbGVjdC5oYXMocCA9PT0ga2V5ID8gZGVsZWdhdGUgOiB0YXJnZXQsIHApXG4gICAgfSxcbiAgICBzZXQodGFyZ2V0LCBwLCBuZXdWYWx1ZSwgcmVjZWl2ZXIpIHtcbiAgICAgIGlmIChwID09PSBrZXkpIHtcbiAgICAgICAgLy8gaW4gY2FzZSBvZiB0cmFuc2FjdGlvbklEIHdlIG11c3QgaWdub3JlIGFueSByZWNlaXZlciwgYmVjYXVzZVxuICAgICAgICAvLyBcIklmIHByb3ZpZGVkIGFuZCB0YXJnZXQgZG9lcyBub3QgaGF2ZSBhIHNldHRlciBmb3IgcHJvcGVydHlLZXksIHRoZSBwcm9wZXJ0eSB3aWxsIGJlIHNldCBvbiByZWNlaXZlciBpbnN0ZWFkLlwiXG4gICAgICAgIHJldHVybiBSZWZsZWN0LnNldChkZWxlZ2F0ZSwgcCwgbmV3VmFsdWUpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gUmVmbGVjdC5zZXQodGFyZ2V0LCBwLCBuZXdWYWx1ZSwgcmVjZWl2ZXIpXG4gICAgICB9XG4gICAgfSxcbiAgfVxuICByZXR1cm4gbmV3IFByb3h5KG9iamVjdCwgaGFuZGxlcilcbn1cbiJdLCJuYW1lcyI6WyJpc29sYXRlT2JqZWN0UHJvcGVydHkiLCJvYmplY3QiLCJrZXkiLCJkZWxlZ2F0ZSIsImhhbmRsZXIiLCJkZWxldGVQcm9wZXJ0eSIsInRhcmdldCIsInAiLCJSZWZsZWN0IiwiZ2V0IiwicmVjZWl2ZXIiLCJoYXMiLCJzZXQiLCJuZXdWYWx1ZSIsIlByb3h5Il0sIm1hcHBpbmdzIjoiQUFBQTs7Q0FFQzs7OzsrQkFDRDs7O2VBQXdCQTs7O0FBQVQsU0FBU0Esc0JBQXlCQyxNQUFTLEVBQUVDLEdBQUc7SUFDN0QsTUFBTUMsV0FBVyxDQUFDO0lBQ2xCLE1BQU1DLFVBQVU7UUFDZEMsZ0JBQWVDLE1BQU0sRUFBRUMsQ0FBQztZQUN0QixPQUFPQyxRQUFRSCxjQUFjLENBQUNFLE1BQU1MLE1BQU1DLFdBQVdHLFFBQVFDO1FBQy9EO1FBQ0FFLEtBQUlILE1BQU0sRUFBRUMsQ0FBQyxFQUFFRyxRQUFRO1lBQ3JCLE9BQU9GLFFBQVFDLEdBQUcsQ0FBQ0YsTUFBTUwsTUFBTUMsV0FBV0csUUFBUUMsR0FBR0c7UUFDdkQ7UUFDQUMsS0FBSUwsTUFBTSxFQUFFQyxDQUFDO1lBQ1gsT0FBT0MsUUFBUUcsR0FBRyxDQUFDSixNQUFNTCxNQUFNQyxXQUFXRyxRQUFRQztRQUNwRDtRQUNBSyxLQUFJTixNQUFNLEVBQUVDLENBQUMsRUFBRU0sUUFBUSxFQUFFSCxRQUFRO1lBQy9CLElBQUlILE1BQU1MLEtBQUs7Z0JBQ2IsZ0VBQWdFO2dCQUNoRSxpSEFBaUg7Z0JBQ2pILE9BQU9NLFFBQVFJLEdBQUcsQ0FBQ1QsVUFBVUksR0FBR007WUFDbEMsT0FBTztnQkFDTCxPQUFPTCxRQUFRSSxHQUFHLENBQUNOLFFBQVFDLEdBQUdNLFVBQVVIO1lBQzFDO1FBQ0Y7SUFDRjtJQUNBLE9BQU8sSUFBSUksTUFBTWIsUUFBUUc7QUFDM0IifQ==
@@ -12,50 +12,50 @@ const buildVersionCollectionFields = (collection)=>{
12
12
  const fields = [
13
13
  {
14
14
  name: 'parent',
15
+ type: 'relationship',
15
16
  index: true,
16
- relationTo: collection.slug,
17
- type: 'relationship'
17
+ relationTo: collection.slug
18
18
  },
19
19
  {
20
20
  name: 'version',
21
- fields: collection.fields,
22
- type: 'group'
21
+ type: 'group',
22
+ fields: collection.fields.filter((field)=>!('name' in field) || field.name !== 'id')
23
23
  },
24
24
  {
25
25
  name: 'createdAt',
26
+ type: 'date',
26
27
  admin: {
27
28
  disabled: true
28
29
  },
29
- index: true,
30
- type: 'date'
30
+ index: true
31
31
  },
32
32
  {
33
33
  name: 'updatedAt',
34
+ type: 'date',
34
35
  admin: {
35
36
  disabled: true
36
37
  },
37
- index: true,
38
- type: 'date'
38
+ index: true
39
39
  }
40
40
  ];
41
41
  if (collection?.versions?.drafts) {
42
42
  fields.push({
43
43
  name: 'latest',
44
+ type: 'checkbox',
44
45
  admin: {
45
46
  disabled: true
46
47
  },
47
- index: true,
48
- type: 'checkbox'
48
+ index: true
49
49
  });
50
50
  }
51
51
  if (collection?.versions?.drafts && collection?.versions?.drafts?.autosave) {
52
52
  fields.push({
53
53
  name: 'autosave',
54
- index: true,
55
- type: 'checkbox'
54
+ type: 'checkbox',
55
+ index: true
56
56
  });
57
57
  }
58
58
  return fields;
59
59
  };
60
60
 
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJzaW9ucy9idWlsZENvbGxlY3Rpb25GaWVsZHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRDb2xsZWN0aW9uQ29uZmlnIH0gZnJvbSAnLi4vY29sbGVjdGlvbnMvY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBGaWVsZCB9IGZyb20gJy4uL2ZpZWxkcy9jb25maWcvdHlwZXMnXG5cbmV4cG9ydCBjb25zdCBidWlsZFZlcnNpb25Db2xsZWN0aW9uRmllbGRzID0gKGNvbGxlY3Rpb246IFNhbml0aXplZENvbGxlY3Rpb25Db25maWcpOiBGaWVsZFtdID0+IHtcbiAgY29uc3QgZmllbGRzOiBGaWVsZFtdID0gW1xuICAgIHtcbiAgICAgIG5hbWU6ICdwYXJlbnQnLFxuICAgICAgaW5kZXg6IHRydWUsXG4gICAgICByZWxhdGlvblRvOiBjb2xsZWN0aW9uLnNsdWcsXG4gICAgICB0eXBlOiAncmVsYXRpb25zaGlwJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICd2ZXJzaW9uJyxcbiAgICAgIGZpZWxkczogY29sbGVjdGlvbi5maWVsZHMsXG4gICAgICB0eXBlOiAnZ3JvdXAnLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ2NyZWF0ZWRBdCcsXG4gICAgICBhZG1pbjoge1xuICAgICAgICBkaXNhYmxlZDogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICBpbmRleDogdHJ1ZSxcbiAgICAgIHR5cGU6ICdkYXRlJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICd1cGRhdGVkQXQnLFxuICAgICAgYWRtaW46IHtcbiAgICAgICAgZGlzYWJsZWQ6IHRydWUsXG4gICAgICB9LFxuICAgICAgaW5kZXg6IHRydWUsXG4gICAgICB0eXBlOiAnZGF0ZScsXG4gICAgfSxcbiAgXVxuXG4gIGlmIChjb2xsZWN0aW9uPy52ZXJzaW9ucz8uZHJhZnRzKSB7XG4gICAgZmllbGRzLnB1c2goe1xuICAgICAgbmFtZTogJ2xhdGVzdCcsXG4gICAgICBhZG1pbjoge1xuICAgICAgICBkaXNhYmxlZDogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICBpbmRleDogdHJ1ZSxcbiAgICAgIHR5cGU6ICdjaGVja2JveCcsXG4gICAgfSlcbiAgfVxuXG4gIGlmIChjb2xsZWN0aW9uPy52ZXJzaW9ucz8uZHJhZnRzICYmIGNvbGxlY3Rpb24/LnZlcnNpb25zPy5kcmFmdHM/LmF1dG9zYXZlKSB7XG4gICAgZmllbGRzLnB1c2goe1xuICAgICAgbmFtZTogJ2F1dG9zYXZlJyxcbiAgICAgIGluZGV4OiB0cnVlLFxuICAgICAgdHlwZTogJ2NoZWNrYm94JyxcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIGZpZWxkc1xufVxuIl0sIm5hbWVzIjpbImJ1aWxkVmVyc2lvbkNvbGxlY3Rpb25GaWVsZHMiLCJjb2xsZWN0aW9uIiwiZmllbGRzIiwibmFtZSIsImluZGV4IiwicmVsYXRpb25UbyIsInNsdWciLCJ0eXBlIiwiYWRtaW4iLCJkaXNhYmxlZCIsInZlcnNpb25zIiwiZHJhZnRzIiwicHVzaCIsImF1dG9zYXZlIl0sIm1hcHBpbmdzIjoiOzs7OytCQUdhQTs7O2VBQUFBOzs7QUFBTixNQUFNQSwrQkFBK0IsQ0FBQ0M7SUFDM0MsTUFBTUMsU0FBa0I7UUFDdEI7WUFDRUMsTUFBTTtZQUNOQyxPQUFPO1lBQ1BDLFlBQVlKLFdBQVdLLElBQUk7WUFDM0JDLE1BQU07UUFDUjtRQUNBO1lBQ0VKLE1BQU07WUFDTkQsUUFBUUQsV0FBV0MsTUFBTTtZQUN6QkssTUFBTTtRQUNSO1FBQ0E7WUFDRUosTUFBTTtZQUNOSyxPQUFPO2dCQUNMQyxVQUFVO1lBQ1o7WUFDQUwsT0FBTztZQUNQRyxNQUFNO1FBQ1I7UUFDQTtZQUNFSixNQUFNO1lBQ05LLE9BQU87Z0JBQ0xDLFVBQVU7WUFDWjtZQUNBTCxPQUFPO1lBQ1BHLE1BQU07UUFDUjtLQUNEO0lBRUQsSUFBSU4sWUFBWVMsVUFBVUMsUUFBUTtRQUNoQ1QsT0FBT1UsSUFBSSxDQUFDO1lBQ1ZULE1BQU07WUFDTkssT0FBTztnQkFDTEMsVUFBVTtZQUNaO1lBQ0FMLE9BQU87WUFDUEcsTUFBTTtRQUNSO0lBQ0Y7SUFFQSxJQUFJTixZQUFZUyxVQUFVQyxVQUFVVixZQUFZUyxVQUFVQyxRQUFRRSxVQUFVO1FBQzFFWCxPQUFPVSxJQUFJLENBQUM7WUFDVlQsTUFBTTtZQUNOQyxPQUFPO1lBQ1BHLE1BQU07UUFDUjtJQUNGO0lBRUEsT0FBT0w7QUFDVCJ9
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJzaW9ucy9idWlsZENvbGxlY3Rpb25GaWVsZHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRDb2xsZWN0aW9uQ29uZmlnIH0gZnJvbSAnLi4vY29sbGVjdGlvbnMvY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBGaWVsZCB9IGZyb20gJy4uL2ZpZWxkcy9jb25maWcvdHlwZXMnXG5cbmV4cG9ydCBjb25zdCBidWlsZFZlcnNpb25Db2xsZWN0aW9uRmllbGRzID0gKGNvbGxlY3Rpb246IFNhbml0aXplZENvbGxlY3Rpb25Db25maWcpOiBGaWVsZFtdID0+IHtcbiAgY29uc3QgZmllbGRzOiBGaWVsZFtdID0gW1xuICAgIHtcbiAgICAgIG5hbWU6ICdwYXJlbnQnLFxuICAgICAgdHlwZTogJ3JlbGF0aW9uc2hpcCcsXG4gICAgICBpbmRleDogdHJ1ZSxcbiAgICAgIHJlbGF0aW9uVG86IGNvbGxlY3Rpb24uc2x1ZyxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICd2ZXJzaW9uJyxcbiAgICAgIHR5cGU6ICdncm91cCcsXG4gICAgICBmaWVsZHM6IGNvbGxlY3Rpb24uZmllbGRzLmZpbHRlcigoZmllbGQpID0+ICEoJ25hbWUnIGluIGZpZWxkKSB8fCBmaWVsZC5uYW1lICE9PSAnaWQnKSxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdjcmVhdGVkQXQnLFxuICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgYWRtaW46IHtcbiAgICAgICAgZGlzYWJsZWQ6IHRydWUsXG4gICAgICB9LFxuICAgICAgaW5kZXg6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAndXBkYXRlZEF0JyxcbiAgICAgIHR5cGU6ICdkYXRlJyxcbiAgICAgIGFkbWluOiB7XG4gICAgICAgIGRpc2FibGVkOiB0cnVlLFxuICAgICAgfSxcbiAgICAgIGluZGV4OiB0cnVlLFxuICAgIH0sXG4gIF1cblxuICBpZiAoY29sbGVjdGlvbj8udmVyc2lvbnM/LmRyYWZ0cykge1xuICAgIGZpZWxkcy5wdXNoKHtcbiAgICAgIG5hbWU6ICdsYXRlc3QnLFxuICAgICAgdHlwZTogJ2NoZWNrYm94JyxcbiAgICAgIGFkbWluOiB7XG4gICAgICAgIGRpc2FibGVkOiB0cnVlLFxuICAgICAgfSxcbiAgICAgIGluZGV4OiB0cnVlLFxuICAgIH0pXG4gIH1cblxuICBpZiAoY29sbGVjdGlvbj8udmVyc2lvbnM/LmRyYWZ0cyAmJiBjb2xsZWN0aW9uPy52ZXJzaW9ucz8uZHJhZnRzPy5hdXRvc2F2ZSkge1xuICAgIGZpZWxkcy5wdXNoKHtcbiAgICAgIG5hbWU6ICdhdXRvc2F2ZScsXG4gICAgICB0eXBlOiAnY2hlY2tib3gnLFxuICAgICAgaW5kZXg6IHRydWUsXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBmaWVsZHNcbn1cbiJdLCJuYW1lcyI6WyJidWlsZFZlcnNpb25Db2xsZWN0aW9uRmllbGRzIiwiY29sbGVjdGlvbiIsImZpZWxkcyIsIm5hbWUiLCJ0eXBlIiwiaW5kZXgiLCJyZWxhdGlvblRvIiwic2x1ZyIsImZpbHRlciIsImZpZWxkIiwiYWRtaW4iLCJkaXNhYmxlZCIsInZlcnNpb25zIiwiZHJhZnRzIiwicHVzaCIsImF1dG9zYXZlIl0sIm1hcHBpbmdzIjoiOzs7OytCQUdhQTs7O2VBQUFBOzs7QUFBTixNQUFNQSwrQkFBK0IsQ0FBQ0M7SUFDM0MsTUFBTUMsU0FBa0I7UUFDdEI7WUFDRUMsTUFBTTtZQUNOQyxNQUFNO1lBQ05DLE9BQU87WUFDUEMsWUFBWUwsV0FBV00sSUFBSTtRQUM3QjtRQUNBO1lBQ0VKLE1BQU07WUFDTkMsTUFBTTtZQUNORixRQUFRRCxXQUFXQyxNQUFNLENBQUNNLE1BQU0sQ0FBQyxDQUFDQyxRQUFVLENBQUUsQ0FBQSxVQUFVQSxLQUFJLEtBQU1BLE1BQU1OLElBQUksS0FBSztRQUNuRjtRQUNBO1lBQ0VBLE1BQU07WUFDTkMsTUFBTTtZQUNOTSxPQUFPO2dCQUNMQyxVQUFVO1lBQ1o7WUFDQU4sT0FBTztRQUNUO1FBQ0E7WUFDRUYsTUFBTTtZQUNOQyxNQUFNO1lBQ05NLE9BQU87Z0JBQ0xDLFVBQVU7WUFDWjtZQUNBTixPQUFPO1FBQ1Q7S0FDRDtJQUVELElBQUlKLFlBQVlXLFVBQVVDLFFBQVE7UUFDaENYLE9BQU9ZLElBQUksQ0FBQztZQUNWWCxNQUFNO1lBQ05DLE1BQU07WUFDTk0sT0FBTztnQkFDTEMsVUFBVTtZQUNaO1lBQ0FOLE9BQU87UUFDVDtJQUNGO0lBRUEsSUFBSUosWUFBWVcsVUFBVUMsVUFBVVosWUFBWVcsVUFBVUMsUUFBUUUsVUFBVTtRQUMxRWIsT0FBT1ksSUFBSSxDQUFDO1lBQ1ZYLE1BQU07WUFDTkMsTUFBTTtZQUNOQyxPQUFPO1FBQ1Q7SUFDRjtJQUVBLE9BQU9IO0FBQ1QifQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "payload",
3
- "version": "2.5.0",
3
+ "version": "2.7.0",
4
4
  "description": "Node, React and MongoDB Headless CMS and Application Framework",
5
5
  "license": "MIT",
6
6
  "main": "./dist/index.js",
@@ -63,7 +63,7 @@
63
63
  "minimist": "1.2.8",
64
64
  "mkdirp": "1.0.4",
65
65
  "monaco-editor": "0.38.0",
66
- "nodemailer": "6.9.4",
66
+ "nodemailer": "6.9.8",
67
67
  "object-to-formdata": "4.5.1",
68
68
  "passport": "0.6.0",
69
69
  "passport-anonymous": "1.0.1",
@@ -123,7 +123,7 @@
123
123
  "@types/minimist": "1.2.2",
124
124
  "@types/mkdirp": "1.0.2",
125
125
  "@types/node-fetch": "2.6.4",
126
- "@types/nodemailer": "6.4.8",
126
+ "@types/nodemailer": "6.4.14",
127
127
  "@types/passport": "1.0.12",
128
128
  "@types/passport-anonymous": "1.0.3",
129
129
  "@types/passport-jwt": "3.0.9",
@@ -166,7 +166,7 @@
166
166
  "url-loader": "4.1.1",
167
167
  "vite": "^4.4.9",
168
168
  "webpack": "^5.78.0",
169
- "@payloadcms/eslint-config": "1.0.0"
169
+ "@payloadcms/eslint-config": "1.1.0"
170
170
  },
171
171
  "engines": {
172
172
  "node": ">=14"
@@ -1,6 +0,0 @@
1
- import type { PayloadRequest } from '../express/types';
2
- /**
3
- * Creates a proxy for the given request that has its own TransactionID
4
- */
5
- export default function isolateTransactionID(req: PayloadRequest): PayloadRequest;
6
- //# sourceMappingURL=isolateTransactionID.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"isolateTransactionID.d.ts","sourceRoot":"","sources":["../../src/utilities/isolateTransactionID.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEtD;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,GAAG,EAAE,cAAc,GAAG,cAAc,CAuBhF"}
@@ -1,38 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, /**
6
- * Creates a proxy for the given request that has its own TransactionID
7
- */ "default", {
8
- enumerable: true,
9
- get: function() {
10
- return isolateTransactionID;
11
- }
12
- });
13
- function isolateTransactionID(req) {
14
- const delegate = {};
15
- const handler = {
16
- deleteProperty (target, p) {
17
- return Reflect.deleteProperty(p === 'transactionID' ? delegate : target, p);
18
- },
19
- get (target, p, receiver) {
20
- return Reflect.get(p === 'transactionID' ? delegate : target, p, receiver);
21
- },
22
- has (target, p) {
23
- return Reflect.has(p === 'transactionID' ? delegate : target, p);
24
- },
25
- set (target, p, newValue, receiver) {
26
- if (p === 'transactionID') {
27
- // in case of transactionID we must ignore any receiver, because
28
- // "If provided and target does not have a setter for propertyKey, the property will be set on receiver instead."
29
- return Reflect.set(delegate, p, newValue);
30
- } else {
31
- return Reflect.set(target, p, newValue, receiver);
32
- }
33
- }
34
- };
35
- return new Proxy(req, handler);
36
- }
37
-
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvaXNvbGF0ZVRyYW5zYWN0aW9uSUQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQYXlsb2FkUmVxdWVzdCB9IGZyb20gJy4uL2V4cHJlc3MvdHlwZXMnXG5cbi8qKlxuICogQ3JlYXRlcyBhIHByb3h5IGZvciB0aGUgZ2l2ZW4gcmVxdWVzdCB0aGF0IGhhcyBpdHMgb3duIFRyYW5zYWN0aW9uSURcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNvbGF0ZVRyYW5zYWN0aW9uSUQocmVxOiBQYXlsb2FkUmVxdWVzdCk6IFBheWxvYWRSZXF1ZXN0IHtcbiAgY29uc3QgZGVsZWdhdGUgPSB7fVxuICBjb25zdCBoYW5kbGVyOiBQcm94eUhhbmRsZXI8UGF5bG9hZFJlcXVlc3Q+ID0ge1xuICAgIGRlbGV0ZVByb3BlcnR5KHRhcmdldCwgcCk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIFJlZmxlY3QuZGVsZXRlUHJvcGVydHkocCA9PT0gJ3RyYW5zYWN0aW9uSUQnID8gZGVsZWdhdGUgOiB0YXJnZXQsIHApXG4gICAgfSxcbiAgICBnZXQodGFyZ2V0LCBwLCByZWNlaXZlcikge1xuICAgICAgcmV0dXJuIFJlZmxlY3QuZ2V0KHAgPT09ICd0cmFuc2FjdGlvbklEJyA/IGRlbGVnYXRlIDogdGFyZ2V0LCBwLCByZWNlaXZlcilcbiAgICB9LFxuICAgIGhhcyh0YXJnZXQsIHApIHtcbiAgICAgIHJldHVybiBSZWZsZWN0LmhhcyhwID09PSAndHJhbnNhY3Rpb25JRCcgPyBkZWxlZ2F0ZSA6IHRhcmdldCwgcClcbiAgICB9LFxuICAgIHNldCh0YXJnZXQsIHAsIG5ld1ZhbHVlLCByZWNlaXZlcikge1xuICAgICAgaWYgKHAgPT09ICd0cmFuc2FjdGlvbklEJykge1xuICAgICAgICAvLyBpbiBjYXNlIG9mIHRyYW5zYWN0aW9uSUQgd2UgbXVzdCBpZ25vcmUgYW55IHJlY2VpdmVyLCBiZWNhdXNlXG4gICAgICAgIC8vIFwiSWYgcHJvdmlkZWQgYW5kIHRhcmdldCBkb2VzIG5vdCBoYXZlIGEgc2V0dGVyIGZvciBwcm9wZXJ0eUtleSwgdGhlIHByb3BlcnR5IHdpbGwgYmUgc2V0IG9uIHJlY2VpdmVyIGluc3RlYWQuXCJcbiAgICAgICAgcmV0dXJuIFJlZmxlY3Quc2V0KGRlbGVnYXRlLCBwLCBuZXdWYWx1ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBSZWZsZWN0LnNldCh0YXJnZXQsIHAsIG5ld1ZhbHVlLCByZWNlaXZlcilcbiAgICAgIH1cbiAgICB9LFxuICB9XG4gIHJldHVybiBuZXcgUHJveHkocmVxLCBoYW5kbGVyKVxufVxuIl0sIm5hbWVzIjpbImlzb2xhdGVUcmFuc2FjdGlvbklEIiwicmVxIiwiZGVsZWdhdGUiLCJoYW5kbGVyIiwiZGVsZXRlUHJvcGVydHkiLCJ0YXJnZXQiLCJwIiwiUmVmbGVjdCIsImdldCIsInJlY2VpdmVyIiwiaGFzIiwic2V0IiwibmV3VmFsdWUiLCJQcm94eSJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFFQTs7Q0FFQyxHQUNEOzs7ZUFBd0JBOzs7QUFBVCxTQUFTQSxxQkFBcUJDLEdBQW1CO0lBQzlELE1BQU1DLFdBQVcsQ0FBQztJQUNsQixNQUFNQyxVQUF3QztRQUM1Q0MsZ0JBQWVDLE1BQU0sRUFBRUMsQ0FBQztZQUN0QixPQUFPQyxRQUFRSCxjQUFjLENBQUNFLE1BQU0sa0JBQWtCSixXQUFXRyxRQUFRQztRQUMzRTtRQUNBRSxLQUFJSCxNQUFNLEVBQUVDLENBQUMsRUFBRUcsUUFBUTtZQUNyQixPQUFPRixRQUFRQyxHQUFHLENBQUNGLE1BQU0sa0JBQWtCSixXQUFXRyxRQUFRQyxHQUFHRztRQUNuRTtRQUNBQyxLQUFJTCxNQUFNLEVBQUVDLENBQUM7WUFDWCxPQUFPQyxRQUFRRyxHQUFHLENBQUNKLE1BQU0sa0JBQWtCSixXQUFXRyxRQUFRQztRQUNoRTtRQUNBSyxLQUFJTixNQUFNLEVBQUVDLENBQUMsRUFBRU0sUUFBUSxFQUFFSCxRQUFRO1lBQy9CLElBQUlILE1BQU0saUJBQWlCO2dCQUN6QixnRUFBZ0U7Z0JBQ2hFLGlIQUFpSDtnQkFDakgsT0FBT0MsUUFBUUksR0FBRyxDQUFDVCxVQUFVSSxHQUFHTTtZQUNsQyxPQUFPO2dCQUNMLE9BQU9MLFFBQVFJLEdBQUcsQ0FBQ04sUUFBUUMsR0FBR00sVUFBVUg7WUFDMUM7UUFDRjtJQUNGO0lBQ0EsT0FBTyxJQUFJSSxNQUFNWixLQUFLRTtBQUN4QiJ9