payload 3.0.0-alpha.2 → 3.0.0-alpha.21

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 (348) hide show
  1. package/auth.js +5 -44
  2. package/bin.js +40 -1
  3. package/components.d.ts +14 -0
  4. package/components.js +71 -0
  5. package/config.js +10 -59
  6. package/database.js +21 -108
  7. package/dist/admin/RichText.js +2 -5
  8. package/dist/admin/elements/Cell.js +2 -5
  9. package/dist/admin/elements/DatePicker.js +2 -5
  10. package/dist/admin/elements/PreviewButton.js +2 -5
  11. package/dist/admin/elements/PublishButton.js +2 -5
  12. package/dist/admin/elements/SaveButton.js +2 -5
  13. package/dist/admin/elements/SaveDraftButton.js +2 -5
  14. package/dist/admin/elements/Tab.js +2 -5
  15. package/dist/admin/forms/Error.js +2 -5
  16. package/dist/admin/forms/FieldDescription.js +2 -5
  17. package/dist/admin/forms/FieldTypes.js +2 -5
  18. package/dist/admin/forms/Form.d.ts +22 -0
  19. package/dist/admin/forms/Form.d.ts.map +1 -1
  20. package/dist/admin/forms/Form.js +2 -5
  21. package/dist/admin/forms/Label.js +2 -5
  22. package/dist/admin/forms/RowLabel.js +2 -5
  23. package/dist/admin/types.d.ts +2 -1
  24. package/dist/admin/types.d.ts.map +1 -1
  25. package/dist/admin/types.js +2 -5
  26. package/dist/admin/views/types.d.ts +41 -0
  27. package/dist/admin/views/types.d.ts.map +1 -0
  28. package/dist/admin/views/types.js +3 -0
  29. package/dist/assets/assets.d.js +0 -1
  30. package/dist/auth/baseFields/accountLock.js +2 -12
  31. package/dist/auth/baseFields/apiKey.js +6 -21
  32. package/dist/auth/baseFields/auth.js +6 -16
  33. package/dist/auth/baseFields/verification.js +4 -14
  34. package/dist/auth/cookies.js +6 -33
  35. package/dist/auth/crypto.js +7 -30
  36. package/dist/auth/defaultAccess.js +2 -12
  37. package/dist/auth/defaultUser.js +4 -14
  38. package/dist/auth/executeAccess.js +5 -15
  39. package/dist/auth/extractJWT.js +4 -14
  40. package/dist/auth/getAccessResults.js +5 -15
  41. package/dist/auth/getAuthenticatedUser.js +2 -12
  42. package/dist/auth/getFieldsToSign.js +5 -15
  43. package/dist/auth/index.js +4 -27
  44. package/dist/auth/isLocked.js +2 -12
  45. package/dist/auth/operations/access.js +12 -22
  46. package/dist/auth/operations/forgotPassword.js +17 -32
  47. package/dist/auth/operations/init.js +2 -12
  48. package/dist/auth/operations/local/forgotPassword.js +8 -18
  49. package/dist/auth/operations/local/index.js +12 -27
  50. package/dist/auth/operations/local/login.js +8 -18
  51. package/dist/auth/operations/local/resetPassword.js +8 -18
  52. package/dist/auth/operations/local/unlock.js +8 -18
  53. package/dist/auth/operations/local/verifyEmail.js +8 -18
  54. package/dist/auth/operations/login.js +32 -47
  55. package/dist/auth/operations/logout.js +6 -21
  56. package/dist/auth/operations/me.js +4 -19
  57. package/dist/auth/operations/refresh.js +19 -34
  58. package/dist/auth/operations/registerFirstUser.js +10 -20
  59. package/dist/auth/operations/resetPassword.js +20 -43
  60. package/dist/auth/operations/unlock.js +16 -39
  61. package/dist/auth/operations/verifyEmail.js +14 -37
  62. package/dist/auth/sendVerificationEmail.js +4 -14
  63. package/dist/auth/strategies/apiKey.js +4 -19
  64. package/dist/auth/strategies/jwt.js +6 -21
  65. package/dist/auth/strategies/local/authenticate.js +6 -21
  66. package/dist/auth/strategies/local/generatePasswordSaltHash.js +7 -22
  67. package/dist/auth/strategies/local/incrementLoginAttempts.js +2 -12
  68. package/dist/auth/strategies/local/register.js +6 -16
  69. package/dist/auth/strategies/local/resetLoginAttempts.js +2 -12
  70. package/dist/auth/types.js +2 -12
  71. package/dist/bin/generateTypes.js +12 -27
  72. package/dist/bin/index.js +11 -53
  73. package/dist/bin/loadEnv.js +13 -26
  74. package/dist/bin/migrate.js +15 -30
  75. package/dist/bundlers/mocks/db-mongodb.js +0 -1
  76. package/dist/bundlers/mocks/db-postgres.js +2 -12
  77. package/dist/bundlers/mocks/dotENV.js +2 -12
  78. package/dist/bundlers/mocks/emptyModule.js +2 -12
  79. package/dist/bundlers/mocks/fileMock.js +2 -12
  80. package/dist/bundlers/types.js +2 -5
  81. package/dist/collections/config/build.js +2 -12
  82. package/dist/collections/config/defaults.js +9 -32
  83. package/dist/collections/config/sanitize.js +34 -49
  84. package/dist/collections/config/schema.js +157 -172
  85. package/dist/collections/config/types.d.ts +5 -5
  86. package/dist/collections/config/types.d.ts.map +1 -1
  87. package/dist/collections/config/types.js +2 -5
  88. package/dist/collections/dataloader.js +8 -23
  89. package/dist/collections/operations/create.js +38 -53
  90. package/dist/collections/operations/delete.js +27 -42
  91. package/dist/collections/operations/deleteByID.js +27 -42
  92. package/dist/collections/operations/docAccess.js +10 -20
  93. package/dist/collections/operations/find.js +25 -40
  94. package/dist/collections/operations/findByID.js +21 -36
  95. package/dist/collections/operations/findVersionByID.js +19 -34
  96. package/dist/collections/operations/findVersions.js +20 -35
  97. package/dist/collections/operations/local/create.js +10 -25
  98. package/dist/collections/operations/local/delete.js +10 -20
  99. package/dist/collections/operations/local/find.js +8 -18
  100. package/dist/collections/operations/local/findByID.js +8 -18
  101. package/dist/collections/operations/local/findVersionByID.js +8 -18
  102. package/dist/collections/operations/local/findVersions.js +8 -18
  103. package/dist/collections/operations/local/index.js +20 -35
  104. package/dist/collections/operations/local/restoreVersion.js +8 -18
  105. package/dist/collections/operations/local/update.js +12 -27
  106. package/dist/collections/operations/restoreVersion.js +26 -41
  107. package/dist/collections/operations/update.js +43 -58
  108. package/dist/collections/operations/updateByID.js +44 -59
  109. package/dist/collections/operations/utils.js +3 -12
  110. package/dist/config/build.js +9 -15
  111. package/dist/config/clientFiles.js +2 -12
  112. package/dist/config/createClientConfig.d.ts.map +1 -1
  113. package/dist/config/createClientConfig.js +12 -25
  114. package/dist/config/defaults.js +4 -19
  115. package/dist/config/find.js +18 -33
  116. package/dist/config/load.d.ts +1 -3
  117. package/dist/config/load.d.ts.map +1 -1
  118. package/dist/config/load.js +8 -37
  119. package/dist/config/sanitize.js +25 -40
  120. package/dist/config/schema.d.ts.map +1 -1
  121. package/dist/config/schema.js +116 -133
  122. package/dist/config/shared/adminViewSchema.js +9 -24
  123. package/dist/config/shared/componentSchema.js +21 -50
  124. package/dist/config/types.d.ts +12 -21
  125. package/dist/config/types.d.ts.map +1 -1
  126. package/dist/config/types.js +9 -21
  127. package/dist/config/validate.js +15 -71
  128. package/dist/database/combineQueries.js +4 -14
  129. package/dist/database/createDatabaseAdapter.js +14 -24
  130. package/dist/database/flattenWhereToOperators.js +2 -12
  131. package/dist/database/getLocalizedPaths.js +7 -22
  132. package/dist/database/migrations/createMigration.js +7 -22
  133. package/dist/database/migrations/getMigrations.js +4 -12
  134. package/dist/database/migrations/migrate.js +12 -22
  135. package/dist/database/migrations/migrateDown.js +12 -22
  136. package/dist/database/migrations/migrateRefresh.js +16 -24
  137. package/dist/database/migrations/migrateReset.js +12 -22
  138. package/dist/database/migrations/migrateStatus.js +8 -18
  139. package/dist/database/migrations/migrationTemplate.js +2 -12
  140. package/dist/database/migrations/migrationsCollection.js +2 -12
  141. package/dist/database/migrations/readMigrationFiles.d.ts.map +1 -1
  142. package/dist/database/migrations/readMigrationFiles.js +12 -24
  143. package/dist/database/queryValidation/types.js +2 -5
  144. package/dist/database/queryValidation/validateQueryPaths.js +13 -28
  145. package/dist/database/queryValidation/validateSearchParams.js +13 -21
  146. package/dist/database/types.d.ts +5 -2
  147. package/dist/database/types.d.ts.map +1 -1
  148. package/dist/database/types.js +2 -5
  149. package/dist/email/build.js +11 -26
  150. package/dist/email/defaults.js +2 -12
  151. package/dist/email/mockHandler.js +8 -23
  152. package/dist/email/sendEmail.js +2 -12
  153. package/dist/email/types.js +2 -5
  154. package/dist/errors/APIError.js +4 -19
  155. package/dist/errors/AuthenticationError.js +7 -22
  156. package/dist/errors/DuplicateCollection.js +4 -19
  157. package/dist/errors/DuplicateFieldName.js +4 -19
  158. package/dist/errors/DuplicateGlobal.js +4 -19
  159. package/dist/errors/ErrorDeletingFile.js +7 -22
  160. package/dist/errors/FileUploadError.js +7 -22
  161. package/dist/errors/Forbidden.js +7 -22
  162. package/dist/errors/InvalidConfiguration.js +6 -21
  163. package/dist/errors/InvalidFieldName.js +4 -19
  164. package/dist/errors/InvalidFieldRelationship.js +4 -19
  165. package/dist/errors/InvalidSchema.js +6 -21
  166. package/dist/errors/LockedAuth.js +7 -22
  167. package/dist/errors/MissingCollectionLabel.js +4 -19
  168. package/dist/errors/MissingFieldInputOptions.js +4 -19
  169. package/dist/errors/MissingFieldType.js +6 -21
  170. package/dist/errors/MissingFile.js +7 -22
  171. package/dist/errors/NotFound.js +7 -22
  172. package/dist/errors/QueryError.js +6 -21
  173. package/dist/errors/TimestampsRequired.js +4 -19
  174. package/dist/errors/UnathorizedError.js +7 -22
  175. package/dist/errors/ValidationError.js +8 -23
  176. package/dist/errors/index.js +20 -94
  177. package/dist/errors/types.js +2 -19
  178. package/dist/exports/auth.js +5 -44
  179. package/dist/exports/components/utilities.d.ts +0 -1
  180. package/dist/exports/components/utilities.js +0 -1
  181. package/dist/exports/config.js +10 -59
  182. package/dist/exports/database.js +21 -108
  183. package/dist/exports/errors.js +2 -68
  184. package/dist/exports/fields/index.js +3 -26
  185. package/dist/exports/fields/validations.js +2 -19
  186. package/dist/exports/operations.js +29 -125
  187. package/dist/exports/types.js +4 -74
  188. package/dist/exports/utilities.js +28 -141
  189. package/dist/exports/versions.js +9 -45
  190. package/dist/express/middleware/errorHandler.d.ts +0 -1
  191. package/dist/express/middleware/errorHandler.js +0 -1
  192. package/dist/express/middleware/index.d.ts +0 -1
  193. package/dist/express/middleware/index.js +0 -1
  194. package/dist/fields/baseFields/baseBlockFields.js +4 -14
  195. package/dist/fields/baseFields/baseIDField.js +4 -19
  196. package/dist/fields/config/sanitize.js +24 -39
  197. package/dist/fields/config/sanitize.spec.js +25 -29
  198. package/dist/fields/config/schema.js +329 -424
  199. package/dist/fields/config/types.js +15 -69
  200. package/dist/fields/getDefaultValue.js +2 -12
  201. package/dist/fields/hooks/afterChange/index.js +6 -16
  202. package/dist/fields/hooks/afterChange/promise.js +14 -22
  203. package/dist/fields/hooks/afterChange/traverseFields.js +4 -14
  204. package/dist/fields/hooks/afterRead/index.js +6 -16
  205. package/dist/fields/hooks/afterRead/promise.js +28 -36
  206. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.js +5 -15
  207. package/dist/fields/hooks/afterRead/traverseFields.js +4 -14
  208. package/dist/fields/hooks/beforeChange/cloneDataFromOriginalDoc.js +2 -12
  209. package/dist/fields/hooks/beforeChange/getExistingRowDoc.js +2 -12
  210. package/dist/fields/hooks/beforeChange/index.js +8 -18
  211. package/dist/fields/hooks/beforeChange/promise.js +26 -35
  212. package/dist/fields/hooks/beforeChange/traverseFields.js +4 -14
  213. package/dist/fields/hooks/beforeValidate/index.js +6 -16
  214. package/dist/fields/hooks/beforeValidate/promise.js +30 -39
  215. package/dist/fields/hooks/beforeValidate/traverseFields.js +4 -14
  216. package/dist/fields/mergeBaseFields.js +8 -23
  217. package/dist/fields/sortableFieldTypes.js +2 -12
  218. package/dist/fields/validations.js +31 -97
  219. package/dist/fields/validations.spec.js +93 -87
  220. package/dist/globals/config/build.d.ts +0 -1
  221. package/dist/globals/config/build.js +0 -1
  222. package/dist/globals/config/sanitize.js +17 -32
  223. package/dist/globals/config/schema.js +55 -70
  224. package/dist/globals/config/types.d.ts +5 -5
  225. package/dist/globals/config/types.d.ts.map +1 -1
  226. package/dist/globals/config/types.js +2 -5
  227. package/dist/globals/graphql/resolvers/docAccess.d.ts +0 -1
  228. package/dist/globals/graphql/resolvers/docAccess.js +0 -1
  229. package/dist/globals/operations/docAccess.js +10 -20
  230. package/dist/globals/operations/findOne.js +14 -29
  231. package/dist/globals/operations/findVersionByID.js +18 -33
  232. package/dist/globals/operations/findVersions.js +20 -35
  233. package/dist/globals/operations/local/findOne.js +8 -18
  234. package/dist/globals/operations/local/findVersionByID.js +8 -18
  235. package/dist/globals/operations/local/findVersions.js +8 -18
  236. package/dist/globals/operations/local/index.js +12 -27
  237. package/dist/globals/operations/local/restoreVersion.js +8 -18
  238. package/dist/globals/operations/local/update.js +8 -18
  239. package/dist/globals/operations/restoreVersion.js +16 -31
  240. package/dist/globals/operations/update.js +23 -38
  241. package/dist/index.d.ts.map +1 -1
  242. package/dist/index.js +50 -70
  243. package/dist/localization/middleware.js +2 -12
  244. package/dist/localization/sanitizeFallbackLocale.js +2 -12
  245. package/dist/preferences/deleteUserPreferences.js +2 -12
  246. package/dist/preferences/operations/delete.js +10 -25
  247. package/dist/preferences/operations/findOne.js +2 -12
  248. package/dist/preferences/operations/update.js +8 -23
  249. package/dist/preferences/preferencesCollection.js +8 -18
  250. package/dist/preferences/requestHandlers/delete.js +6 -21
  251. package/dist/preferences/requestHandlers/findOne.js +6 -21
  252. package/dist/preferences/requestHandlers/update.js +6 -21
  253. package/dist/preferences/types.js +2 -5
  254. package/dist/translations/extractTranslations.js +4 -14
  255. package/dist/translations/getLocalI18n.js +5 -15
  256. package/dist/types/constants.js +2 -12
  257. package/dist/types/index.js +2 -12
  258. package/dist/uploads/canResizeImage.js +2 -12
  259. package/dist/uploads/cropImage.d.ts +3 -7
  260. package/dist/uploads/cropImage.d.ts.map +1 -1
  261. package/dist/uploads/cropImage.js +4 -28
  262. package/dist/uploads/deleteAssociatedFiles.js +11 -26
  263. package/dist/uploads/docWithFilenameExists.js +2 -12
  264. package/dist/uploads/fileExists.js +4 -19
  265. package/dist/uploads/formatFilesize.js +2 -12
  266. package/dist/uploads/generateFileData.d.ts.map +1 -1
  267. package/dist/uploads/generateFileData.js +40 -53
  268. package/dist/uploads/getBaseFields.js +6 -16
  269. package/dist/uploads/getExternalFile.js +5 -15
  270. package/dist/uploads/getFileByPath.js +10 -25
  271. package/dist/uploads/getImageSize.js +7 -22
  272. package/dist/uploads/getSafeFilename.js +8 -23
  273. package/dist/uploads/imageResizer.d.ts +3 -1
  274. package/dist/uploads/imageResizer.d.ts.map +1 -1
  275. package/dist/uploads/imageResizer.js +28 -44
  276. package/dist/uploads/isImage.js +2 -12
  277. package/dist/uploads/mimeTypeValidator.js +2 -12
  278. package/dist/uploads/mimeTypeValidator.spec.js +11 -15
  279. package/dist/uploads/saveBufferToFile.js +6 -21
  280. package/dist/uploads/types.d.ts +7 -1
  281. package/dist/uploads/types.d.ts.map +1 -1
  282. package/dist/uploads/types.js +2 -5
  283. package/dist/uploads/unlinkTempFiles.js +9 -22
  284. package/dist/uploads/uploadFiles.js +6 -21
  285. package/dist/utilities/checkDuplicateCollections.js +4 -14
  286. package/dist/utilities/combineMerge.js +4 -19
  287. package/dist/utilities/commitTransaction.js +4 -12
  288. package/dist/utilities/configToJSONSchema.js +22 -41
  289. package/dist/utilities/configToJSONSchema.spec.js +5 -9
  290. package/dist/utilities/convertData.js +3 -23
  291. package/dist/utilities/createArrayFromCommaDelineated.js +2 -12
  292. package/dist/utilities/createLocalReq.js +6 -16
  293. package/dist/utilities/deepCopyObject.js +2 -12
  294. package/dist/utilities/deepMerge.js +2 -12
  295. package/dist/utilities/fieldSchemaToJSON.js +2 -12
  296. package/dist/utilities/flattenTopLevelFields.js +6 -16
  297. package/dist/utilities/formatLabels.js +9 -70
  298. package/dist/utilities/formatLabels.spec.js +8 -12
  299. package/dist/utilities/getCSSVariable.js +2 -12
  300. package/dist/utilities/getEntityPolicies.js +4 -14
  301. package/dist/utilities/getIDType.js +2 -12
  302. package/dist/utilities/getObjectDotNotation.js +2 -12
  303. package/dist/utilities/getUniqueListBy.js +2 -12
  304. package/dist/utilities/initTransaction.js +5 -12
  305. package/dist/utilities/isEntityHidden.js +2 -12
  306. package/dist/utilities/isNumber.js +2 -12
  307. package/dist/utilities/isValidID.js +5 -20
  308. package/dist/utilities/isolateObjectProperty.js +2 -12
  309. package/dist/utilities/killTransaction.js +4 -12
  310. package/dist/utilities/logger.d.ts.map +1 -1
  311. package/dist/utilities/logger.js +16 -37
  312. package/dist/utilities/mapAsync.js +2 -12
  313. package/dist/utilities/overwriteMerge.js +2 -12
  314. package/dist/utilities/parseCookies.js +4 -14
  315. package/dist/utilities/pinoPretty.d.ts +1 -0
  316. package/dist/utilities/pinoPretty.d.ts.map +1 -0
  317. package/dist/utilities/pinoPretty.js +2 -0
  318. package/dist/utilities/sanitizeInternalFields.js +2 -12
  319. package/dist/utilities/setsAreEqual.js +2 -12
  320. package/dist/utilities/telemetry/events/adminInit.js +7 -17
  321. package/dist/utilities/telemetry/events/serverInit.js +4 -14
  322. package/dist/utilities/telemetry/index.js +17 -40
  323. package/dist/utilities/telemetry/oneWayHash.js +4 -14
  324. package/dist/utilities/timestamp.js +2 -12
  325. package/dist/utilities/toKebabCase.js +2 -12
  326. package/dist/utilities/wait.js +2 -12
  327. package/dist/utilities/wordBoundariesRegex.js +3 -13
  328. package/dist/versions/baseFields.js +5 -23
  329. package/dist/versions/buildCollectionFields.js +2 -12
  330. package/dist/versions/buildGlobalFields.js +2 -12
  331. package/dist/versions/deleteCollectionVersions.js +2 -12
  332. package/dist/versions/drafts/appendVersionToQueryKey.js +2 -12
  333. package/dist/versions/drafts/getQueryDraftsSort.js +2 -12
  334. package/dist/versions/drafts/replaceWithDraftIfAvailable.js +12 -27
  335. package/dist/versions/enforceMaxVersions.js +2 -12
  336. package/dist/versions/getLatestCollectionVersion.js +4 -14
  337. package/dist/versions/getLatestGlobalVersion.js +4 -14
  338. package/dist/versions/getVersionsModelName.js +2 -12
  339. package/dist/versions/saveVersion.js +8 -23
  340. package/dist/versions/types.js +2 -5
  341. package/errors.js +2 -68
  342. package/graphql.d.ts +3 -0
  343. package/graphql.js +27 -0
  344. package/operations.js +29 -125
  345. package/package.json +17 -5
  346. package/types.js +4 -74
  347. package/utilities.js +28 -141
  348. package/versions.js +9 -45
@@ -1,9 +1,5 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- const _errors = require("../../errors");
6
- const _sanitize = require("./sanitize");
1
+ import { InvalidFieldName, InvalidFieldRelationship, MissingFieldType } from '../../errors';
2
+ import { sanitizeFields } from './sanitize';
7
3
  const dummyConfig = {
8
4
  collections: [],
9
5
  db: ()=>({})
@@ -21,12 +17,12 @@ describe('sanitizeFields', ()=>{
21
17
  expect(()=>{
22
18
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
23
19
  // @ts-ignore
24
- (0, _sanitize.sanitizeFields)({
20
+ sanitizeFields({
25
21
  config: dummyConfig,
26
22
  fields,
27
23
  validRelationships: []
28
24
  });
29
- }).toThrow(_errors.MissingFieldType);
25
+ }).toThrow(MissingFieldType);
30
26
  });
31
27
  it('should throw on invalid field name', ()=>{
32
28
  const fields = [
@@ -37,12 +33,12 @@ describe('sanitizeFields', ()=>{
37
33
  }
38
34
  ];
39
35
  expect(()=>{
40
- (0, _sanitize.sanitizeFields)({
36
+ sanitizeFields({
41
37
  config: dummyConfig,
42
38
  fields,
43
39
  validRelationships: []
44
40
  });
45
- }).toThrow(_errors.InvalidFieldName);
41
+ }).toThrow(InvalidFieldName);
46
42
  });
47
43
  describe('auto-labeling', ()=>{
48
44
  it('should populate label if missing', ()=>{
@@ -52,7 +48,7 @@ describe('sanitizeFields', ()=>{
52
48
  type: 'text'
53
49
  }
54
50
  ];
55
- const sanitizedField = (0, _sanitize.sanitizeFields)({
51
+ const sanitizedField = sanitizeFields({
56
52
  config: dummyConfig,
57
53
  fields,
58
54
  validRelationships: []
@@ -69,7 +65,7 @@ describe('sanitizeFields', ()=>{
69
65
  type: 'text'
70
66
  }
71
67
  ];
72
- const sanitizedField = (0, _sanitize.sanitizeFields)({
68
+ const sanitizedField = sanitizeFields({
73
69
  config: dummyConfig,
74
70
  fields,
75
71
  validRelationships: []
@@ -87,7 +83,7 @@ describe('sanitizeFields', ()=>{
87
83
  type: 'text'
88
84
  }
89
85
  ];
90
- const sanitizedField = (0, _sanitize.sanitizeFields)({
86
+ const sanitizedField = sanitizeFields({
91
87
  config: dummyConfig,
92
88
  fields,
93
89
  validRelationships: []
@@ -108,7 +104,7 @@ describe('sanitizeFields', ()=>{
108
104
  name: 'items',
109
105
  type: 'array'
110
106
  };
111
- const sanitizedField = (0, _sanitize.sanitizeFields)({
107
+ const sanitizedField = sanitizeFields({
112
108
  config: dummyConfig,
113
109
  fields: [
114
110
  arrayField
@@ -139,7 +135,7 @@ describe('sanitizeFields', ()=>{
139
135
  type: 'blocks'
140
136
  }
141
137
  ];
142
- const sanitizedField = (0, _sanitize.sanitizeFields)({
138
+ const sanitizedField = sanitizeFields({
143
139
  config: dummyConfig,
144
140
  fields,
145
141
  validRelationships: []
@@ -163,7 +159,7 @@ describe('sanitizeFields', ()=>{
163
159
  type: 'array'
164
160
  }
165
161
  ];
166
- const sanitizedField = (0, _sanitize.sanitizeFields)({
162
+ const sanitizedField = sanitizeFields({
167
163
  config: dummyConfig,
168
164
  fields,
169
165
  validRelationships: []
@@ -194,7 +190,7 @@ describe('sanitizeFields', ()=>{
194
190
  type: 'blocks'
195
191
  }
196
192
  ];
197
- const sanitizedField = (0, _sanitize.sanitizeFields)({
193
+ const sanitizedField = sanitizeFields({
198
194
  config: dummyConfig,
199
195
  fields,
200
196
  validRelationships: []
@@ -223,7 +219,7 @@ describe('sanitizeFields', ()=>{
223
219
  }
224
220
  ];
225
221
  expect(()=>{
226
- (0, _sanitize.sanitizeFields)({
222
+ sanitizeFields({
227
223
  config: dummyConfig,
228
224
  fields,
229
225
  validRelationships
@@ -247,7 +243,7 @@ describe('sanitizeFields', ()=>{
247
243
  }
248
244
  ];
249
245
  expect(()=>{
250
- (0, _sanitize.sanitizeFields)({
246
+ sanitizeFields({
251
247
  config: dummyConfig,
252
248
  fields,
253
249
  validRelationships
@@ -280,7 +276,7 @@ describe('sanitizeFields', ()=>{
280
276
  }
281
277
  ];
282
278
  expect(()=>{
283
- (0, _sanitize.sanitizeFields)({
279
+ sanitizeFields({
284
280
  config: dummyConfig,
285
281
  fields,
286
282
  validRelationships
@@ -300,12 +296,12 @@ describe('sanitizeFields', ()=>{
300
296
  }
301
297
  ];
302
298
  expect(()=>{
303
- (0, _sanitize.sanitizeFields)({
299
+ sanitizeFields({
304
300
  config: dummyConfig,
305
301
  fields,
306
302
  validRelationships
307
303
  });
308
- }).toThrow(_errors.InvalidFieldRelationship);
304
+ }).toThrow(InvalidFieldRelationship);
309
305
  });
310
306
  it('should throw on invalid relationship - multiple', ()=>{
311
307
  const validRelationships = [
@@ -324,12 +320,12 @@ describe('sanitizeFields', ()=>{
324
320
  }
325
321
  ];
326
322
  expect(()=>{
327
- (0, _sanitize.sanitizeFields)({
323
+ sanitizeFields({
328
324
  config: dummyConfig,
329
325
  fields,
330
326
  validRelationships
331
327
  });
332
- }).toThrow(_errors.InvalidFieldRelationship);
328
+ }).toThrow(InvalidFieldRelationship);
333
329
  });
334
330
  it('should throw on invalid relationship inside blocks', ()=>{
335
331
  const validRelationships = [
@@ -357,12 +353,12 @@ describe('sanitizeFields', ()=>{
357
353
  }
358
354
  ];
359
355
  expect(()=>{
360
- (0, _sanitize.sanitizeFields)({
356
+ sanitizeFields({
361
357
  config: dummyConfig,
362
358
  fields,
363
359
  validRelationships
364
360
  });
365
- }).toThrow(_errors.InvalidFieldRelationship);
361
+ }).toThrow(InvalidFieldRelationship);
366
362
  });
367
363
  it('should defaultValue of checkbox to false if required and undefined', ()=>{
368
364
  const fields = [
@@ -372,7 +368,7 @@ describe('sanitizeFields', ()=>{
372
368
  type: 'checkbox'
373
369
  }
374
370
  ];
375
- const sanitizedField = (0, _sanitize.sanitizeFields)({
371
+ const sanitizedField = sanitizeFields({
376
372
  config: dummyConfig,
377
373
  fields,
378
374
  validRelationships: []
@@ -380,7 +376,7 @@ describe('sanitizeFields', ()=>{
380
376
  expect(sanitizedField.defaultValue).toStrictEqual(false);
381
377
  });
382
378
  it('should return empty field array if no fields', ()=>{
383
- const sanitizedFields = (0, _sanitize.sanitizeFields)({
379
+ const sanitizedFields = sanitizeFields({
384
380
  config: dummyConfig,
385
381
  fields: [],
386
382
  validRelationships: []
@@ -390,4 +386,4 @@ describe('sanitizeFields', ()=>{
390
386
  });
391
387
  });
392
388
 
393
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9maWVsZHMvY29uZmlnL3Nhbml0aXplLnNwZWMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBBcnJheUZpZWxkLFxuICBCbG9jayxcbiAgQmxvY2tGaWVsZCxcbiAgQ2hlY2tib3hGaWVsZCxcbiAgRmllbGQsXG4gIE51bWJlckZpZWxkLFxuICBUZXh0RmllbGQsXG59IGZyb20gJy4vdHlwZXMnXG5pbXBvcnQgeyBDb25maWcgfSBmcm9tICcuLi8uLi9jb25maWcvdHlwZXMnXG5pbXBvcnQgeyBJbnZhbGlkRmllbGROYW1lLCBJbnZhbGlkRmllbGRSZWxhdGlvbnNoaXAsIE1pc3NpbmdGaWVsZFR5cGUgfSBmcm9tICcuLi8uLi9lcnJvcnMnXG5pbXBvcnQgeyBzYW5pdGl6ZUZpZWxkcyB9IGZyb20gJy4vc2FuaXRpemUnXG5pbXBvcnQgeyBEYXRhYmFzZUFkYXB0ZXIgfSBmcm9tICcuLi8uLidcblxuY29uc3QgZHVtbXlDb25maWc6IENvbmZpZyA9IHtcbiAgY29sbGVjdGlvbnM6IFtdLFxuICBkYjogKCkgPT4gKHt9KSBhcyBEYXRhYmFzZUFkYXB0ZXIsXG59XG5cbmRlc2NyaWJlKCdzYW5pdGl6ZUZpZWxkcycsICgpID0+IHtcbiAgaXQoJ3Nob3VsZCB0aHJvdyBvbiBtaXNzaW5nIHR5cGUgZmllbGQnLCAoKSA9PiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCBmaWVsZHM6IEZpZWxkW10gPSBbXG4gICAgICB7XG4gICAgICAgIGxhYmVsOiAnc29tZS1jb2xsZWN0aW9uJyxcbiAgICAgICAgbmFtZTogJ1NvbWUgQ29sbGVjdGlvbicsXG4gICAgICB9LFxuICAgIF1cbiAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgc2FuaXRpemVGaWVsZHMoe1xuICAgICAgICBjb25maWc6IGR1bW15Q29uZmlnLFxuICAgICAgICBmaWVsZHMsXG4gICAgICAgIHZhbGlkUmVsYXRpb25zaGlwczogW10sXG4gICAgICB9KVxuICAgIH0pLnRvVGhyb3coTWlzc2luZ0ZpZWxkVHlwZSlcbiAgfSlcbiAgaXQoJ3Nob3VsZCB0aHJvdyBvbiBpbnZhbGlkIGZpZWxkIG5hbWUnLCAoKSA9PiB7XG4gICAgY29uc3QgZmllbGRzOiBGaWVsZFtdID0gW1xuICAgICAge1xuICAgICAgICBsYWJlbDogJ3NvbWUuY29sbGVjdGlvbicsXG4gICAgICAgIG5hbWU6ICdzb21lLmNvbGxlY3Rpb24nLFxuICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICB9LFxuICAgIF1cbiAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgc2FuaXRpemVGaWVsZHMoe1xuICAgICAgICBjb25maWc6IGR1bW15Q29uZmlnLFxuICAgICAgICBmaWVsZHMsXG4gICAgICAgIHZhbGlkUmVsYXRpb25zaGlwczogW10sXG4gICAgICB9KVxuICAgIH0pLnRvVGhyb3coSW52YWxpZEZpZWxkTmFtZSlcbiAgfSlcblxuICBkZXNjcmliZSgnYXV0by1sYWJlbGluZycsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHBvcHVsYXRlIGxhYmVsIGlmIG1pc3NpbmcnLCAoKSA9PiB7XG4gICAgICBjb25zdCBmaWVsZHM6IEZpZWxkW10gPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnc29tZUZpZWxkJyxcbiAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgIH0sXG4gICAgICBdXG4gICAgICBjb25zdCBzYW5pdGl6ZWRGaWVsZCA9IHNhbml0aXplRmllbGRzKHtcbiAgICAgICAgY29uZmlnOiBkdW1teUNvbmZpZyxcbiAgICAgICAgZmllbGRzLFxuICAgICAgICB2YWxpZFJlbGF0aW9uc2hpcHM6IFtdLFxuICAgICAgfSlbMF0gYXMgVGV4dEZpZWxkXG4gICAgICBleHBlY3Qoc2FuaXRpemVkRmllbGQubmFtZSkudG9TdHJpY3RFcXVhbCgnc29tZUZpZWxkJylcbiAgICAgIGV4cGVjdChzYW5pdGl6ZWRGaWVsZC5sYWJlbCkudG9TdHJpY3RFcXVhbCgnU29tZSBGaWVsZCcpXG4gICAgICBleHBlY3Qoc2FuaXRpemVkRmllbGQudHlwZSkudG9TdHJpY3RFcXVhbCgndGV4dCcpXG4gICAgfSlcbiAgICBpdCgnc2hvdWxkIGFsbG93IGF1dG8tbGFiZWwgb3ZlcnJpZGUnLCAoKSA9PiB7XG4gICAgICBjb25zdCBmaWVsZHM6IEZpZWxkW10gPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBsYWJlbDogJ0RvIG5vdCBsYWJlbCcsXG4gICAgICAgICAgbmFtZTogJ3NvbWVGaWVsZCcsXG4gICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICB9LFxuICAgICAgXVxuICAgICAgY29uc3Qgc2FuaXRpemVkRmllbGQgPSBzYW5pdGl6ZUZpZWxkcyh7XG4gICAgICAgIGNvbmZpZzogZHVtbXlDb25maWcsXG4gICAgICAgIGZpZWxkcyxcbiAgICAgICAgdmFsaWRSZWxhdGlvbnNoaXBzOiBbXSxcbiAgICAgIH0pWzBdIGFzIFRleHRGaWVsZFxuICAgICAgZXhwZWN0KHNhbml0aXplZEZpZWxkLm5hbWUpLnRvU3RyaWN0RXF1YWwoJ3NvbWVGaWVsZCcpXG4gICAgICBleHBlY3Qoc2FuaXRpemVkRmllbGQubGFiZWwpLnRvU3RyaWN0RXF1YWwoJ0RvIG5vdCBsYWJlbCcpXG4gICAgICBleHBlY3Qoc2FuaXRpemVkRmllbGQudHlwZSkudG9TdHJpY3RFcXVhbCgndGV4dCcpXG4gICAgfSlcblxuICAgIGRlc2NyaWJlKCdvcHQtb3V0JywgKCkgPT4ge1xuICAgICAgaXQoJ3Nob3VsZCBhbGxvdyBsYWJlbCBvcHQtb3V0JywgKCkgPT4ge1xuICAgICAgICBjb25zdCBmaWVsZHM6IEZpZWxkW10gPSBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6IGZhbHNlLFxuICAgICAgICAgICAgbmFtZTogJ3NvbWVGaWVsZCcsXG4gICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXVxuICAgICAgICBjb25zdCBzYW5pdGl6ZWRGaWVsZCA9IHNhbml0aXplRmllbGRzKHtcbiAgICAgICAgICBjb25maWc6IGR1bW15Q29uZmlnLFxuICAgICAgICAgIGZpZWxkcyxcbiAgICAgICAgICB2YWxpZFJlbGF0aW9uc2hpcHM6IFtdLFxuICAgICAgICB9KVswXSBhcyBUZXh0RmllbGRcbiAgICAgICAgZXhwZWN0KHNhbml0aXplZEZpZWxkLm5hbWUpLnRvU3RyaWN0RXF1YWwoJ3NvbWVGaWVsZCcpXG4gICAgICAgIGV4cGVjdChzYW5pdGl6ZWRGaWVsZC5sYWJlbCkudG9TdHJpY3RFcXVhbChmYWxzZSlcbiAgICAgICAgZXhwZWN0KHNhbml0aXplZEZpZWxkLnR5cGUpLnRvU3RyaWN0RXF1YWwoJ3RleHQnKVxuICAgICAgfSlcblxuICAgICAgaXQoJ3Nob3VsZCBhbGxvdyBsYWJlbCBvcHQtb3V0IGZvciBhcnJheXMnLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGFycmF5RmllbGQ6IEFycmF5RmllbGQgPSB7XG4gICAgICAgICAgZmllbGRzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICdpdGVtTmFtZScsXG4gICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBsYWJlbDogZmFsc2UsXG4gICAgICAgICAgbmFtZTogJ2l0ZW1zJyxcbiAgICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNhbml0aXplZEZpZWxkID0gc2FuaXRpemVGaWVsZHMoe1xuICAgICAgICAgIGNvbmZpZzogZHVtbXlDb25maWcsXG4gICAgICAgICAgZmllbGRzOiBbYXJyYXlGaWVsZF0sXG4gICAgICAgICAgdmFsaWRSZWxhdGlvbnNoaXBzOiBbXSxcbiAgICAgICAgfSlbMF0gYXMgQXJyYXlGaWVsZFxuICAgICAgICBleHBlY3Qoc2FuaXRpemVkRmllbGQubmFtZSkudG9TdHJpY3RFcXVhbCgnaXRlbXMnKVxuICAgICAgICBleHBlY3Qoc2FuaXRpemVkRmllbGQubGFiZWwpLnRvU3RyaWN0RXF1YWwoZmFsc2UpXG4gICAgICAgIGV4cGVjdChzYW5pdGl6ZWRGaWVsZC50eXBlKS50b1N0cmljdEVxdWFsKCdhcnJheScpXG4gICAgICAgIGV4cGVjdChzYW5pdGl6ZWRGaWVsZC5sYWJlbHMpLnRvQmVVbmRlZmluZWQoKVxuICAgICAgfSlcbiAgICAgIGl0KCdzaG91bGQgYWxsb3cgbGFiZWwgb3B0LW91dCBmb3IgYmxvY2tzJywgKCkgPT4ge1xuICAgICAgICBjb25zdCBmaWVsZHM6IEZpZWxkW10gPSBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmxvY2tzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBmaWVsZHM6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3Rlc3ROdW1iZXInLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICBzbHVnOiAnbnVtYmVyJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBsYWJlbDogZmFsc2UsXG4gICAgICAgICAgICBuYW1lOiAnbm9MYWJlbEJsb2NrJyxcbiAgICAgICAgICAgIHR5cGU6ICdibG9ja3MnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF1cbiAgICAgICAgY29uc3Qgc2FuaXRpemVkRmllbGQgPSBzYW5pdGl6ZUZpZWxkcyh7XG4gICAgICAgICAgY29uZmlnOiBkdW1teUNvbmZpZyxcbiAgICAgICAgICBmaWVsZHMsXG4gICAgICAgICAgdmFsaWRSZWxhdGlvbnNoaXBzOiBbXSxcbiAgICAgICAgfSlbMF0gYXMgQmxvY2tGaWVsZFxuICAgICAgICBleHBlY3Qoc2FuaXRpemVkRmllbGQubmFtZSkudG9TdHJpY3RFcXVhbCgnbm9MYWJlbEJsb2NrJylcbiAgICAgICAgZXhwZWN0KHNhbml0aXplZEZpZWxkLmxhYmVsKS50b1N0cmljdEVxdWFsKGZhbHNlKVxuICAgICAgICBleHBlY3Qoc2FuaXRpemVkRmllbGQudHlwZSkudG9TdHJpY3RFcXVhbCgnYmxvY2tzJylcbiAgICAgICAgZXhwZWN0KHNhbml0aXplZEZpZWxkLmxhYmVscykudG9CZVVuZGVmaW5lZCgpXG4gICAgICB9KVxuICAgIH0pXG5cbiAgICBpdCgnc2hvdWxkIGxhYmVsIGFycmF5cyB3aXRoIHBsdXJhbCBhbmQgc2luZ3VsYXInLCAoKSA9PiB7XG4gICAgICBjb25zdCBmaWVsZHM6IEZpZWxkW10gPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBmaWVsZHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ2l0ZW1OYW1lJyxcbiAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIG5hbWU6ICdpdGVtcycsXG4gICAgICAgICAgdHlwZTogJ2FycmF5JyxcbiAgICAgICAgfSxcbiAgICAgIF1cbiAgICAgIGNvbnN0IHNhbml0aXplZEZpZWxkID0gc2FuaXRpemVGaWVsZHMoe1xuICAgICAgICBjb25maWc6IGR1bW15Q29uZmlnLFxuICAgICAgICBmaWVsZHMsXG4gICAgICAgIHZhbGlkUmVsYXRpb25zaGlwczogW10sXG4gICAgICB9KVswXSBhcyBBcnJheUZpZWxkXG4gICAgICBleHBlY3Qoc2FuaXRpemVkRmllbGQubmFtZSkudG9TdHJpY3RFcXVhbCgnaXRlbXMnKVxuICAgICAgZXhwZWN0KHNhbml0aXplZEZpZWxkLmxhYmVsKS50b1N0cmljdEVxdWFsKCdJdGVtcycpXG4gICAgICBleHBlY3Qoc2FuaXRpemVkRmllbGQudHlwZSkudG9TdHJpY3RFcXVhbCgnYXJyYXknKVxuICAgICAgZXhwZWN0KHNhbml0aXplZEZpZWxkLmxhYmVscykudG9NYXRjaE9iamVjdCh7IHBsdXJhbDogJ0l0ZW1zJywgc2luZ3VsYXI6ICdJdGVtJyB9KVxuICAgIH0pXG5cbiAgICBpdCgnc2hvdWxkIGxhYmVsIGJsb2NrcyB3aXRoIHBsdXJhbCBhbmQgc2luZ3VsYXInLCAoKSA9PiB7XG4gICAgICBjb25zdCBmaWVsZHM6IEZpZWxkW10gPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBibG9ja3M6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZmllbGRzOiBbeyBuYW1lOiAndGVzdE51bWJlcicsIHR5cGU6ICdudW1iZXInIH1dLFxuICAgICAgICAgICAgICBzbHVnOiAnbnVtYmVyJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBuYW1lOiAnc3BlY2lhbEJsb2NrJyxcbiAgICAgICAgICB0eXBlOiAnYmxvY2tzJyxcbiAgICAgICAgfSxcbiAgICAgIF1cbiAgICAgIGNvbnN0IHNhbml0aXplZEZpZWxkID0gc2FuaXRpemVGaWVsZHMoe1xuICAgICAgICBjb25maWc6IGR1bW15Q29uZmlnLFxuICAgICAgICBmaWVsZHMsXG4gICAgICAgIHZhbGlkUmVsYXRpb25zaGlwczogW10sXG4gICAgICB9KVswXSBhcyBCbG9ja0ZpZWxkXG4gICAgICBleHBlY3Qoc2FuaXRpemVkRmllbGQubmFtZSkudG9TdHJpY3RFcXVhbCgnc3BlY2lhbEJsb2NrJylcbiAgICAgIGV4cGVjdChzYW5pdGl6ZWRGaWVsZC5sYWJlbCkudG9TdHJpY3RFcXVhbCgnU3BlY2lhbCBCbG9jaycpXG4gICAgICBleHBlY3Qoc2FuaXRpemVkRmllbGQudHlwZSkudG9TdHJpY3RFcXVhbCgnYmxvY2tzJylcbiAgICAgIGV4cGVjdChzYW5pdGl6ZWRGaWVsZC5sYWJlbHMpLnRvTWF0Y2hPYmplY3Qoe1xuICAgICAgICBwbHVyYWw6ICdTcGVjaWFsIEJsb2NrcycsXG4gICAgICAgIHNpbmd1bGFyOiAnU3BlY2lhbCBCbG9jaycsXG4gICAgICB9KVxuICAgICAgZXhwZWN0KChzYW5pdGl6ZWRGaWVsZC5ibG9ja3NbMF0uZmllbGRzWzBdIGFzIE51bWJlckZpZWxkKS5sYWJlbCkudG9TdHJpY3RFcXVhbCgnVGVzdCBOdW1iZXInKVxuICAgIH0pXG4gIH0pXG5cbiAgZGVzY3JpYmUoJ3JlbGF0aW9uc2hpcHMnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBub3QgdGhyb3cgb24gdmFsaWQgcmVsYXRpb25zaGlwJywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsaWRSZWxhdGlvbnNoaXBzID0gWydzb21lLWNvbGxlY3Rpb24nXVxuICAgICAgY29uc3QgZmllbGRzOiBGaWVsZFtdID0gW1xuICAgICAgICB7XG4gICAgICAgICAgbGFiZWw6ICdteS1yZWxhdGlvbnNoaXAnLFxuICAgICAgICAgIG5hbWU6ICdNeSBSZWxhdGlvbnNoaXAnLFxuICAgICAgICAgIHJlbGF0aW9uVG86ICdzb21lLWNvbGxlY3Rpb24nLFxuICAgICAgICAgIHR5cGU6ICdyZWxhdGlvbnNoaXAnLFxuICAgICAgICB9LFxuICAgICAgXVxuICAgICAgZXhwZWN0KCgpID0+IHtcbiAgICAgICAgc2FuaXRpemVGaWVsZHMoeyBjb25maWc6IGR1bW15Q29uZmlnLCBmaWVsZHMsIHZhbGlkUmVsYXRpb25zaGlwcyB9KVxuICAgICAgfSkubm90LnRvVGhyb3coKVxuICAgIH0pXG5cbiAgICBpdCgnc2hvdWxkIG5vdCB0aHJvdyBvbiB2YWxpZCByZWxhdGlvbnNoaXAgLSBtdWx0aXBsZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbGlkUmVsYXRpb25zaGlwcyA9IFsnc29tZS1jb2xsZWN0aW9uJywgJ2Fub3RoZXItY29sbGVjdGlvbiddXG4gICAgICBjb25zdCBmaWVsZHM6IEZpZWxkW10gPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBsYWJlbDogJ215LXJlbGF0aW9uc2hpcCcsXG4gICAgICAgICAgbmFtZTogJ015IFJlbGF0aW9uc2hpcCcsXG4gICAgICAgICAgcmVsYXRpb25UbzogWydzb21lLWNvbGxlY3Rpb24nLCAnYW5vdGhlci1jb2xsZWN0aW9uJ10sXG4gICAgICAgICAgdHlwZTogJ3JlbGF0aW9uc2hpcCcsXG4gICAgICAgIH0sXG4gICAgICBdXG4gICAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgICBzYW5pdGl6ZUZpZWxkcyh7IGNvbmZpZzogZHVtbXlDb25maWcsIGZpZWxkcywgdmFsaWRSZWxhdGlvbnNoaXBzIH0pXG4gICAgICB9KS5ub3QudG9UaHJvdygpXG4gICAgfSlcblxuICAgIGl0KCdzaG91bGQgbm90IHRocm93IG9uIHZhbGlkIHJlbGF0aW9uc2hpcCBpbnNpZGUgYmxvY2tzJywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsaWRSZWxhdGlvbnNoaXBzID0gWydzb21lLWNvbGxlY3Rpb24nXVxuICAgICAgY29uc3QgcmVsYXRpb25zaGlwQmxvY2s6IEJsb2NrID0ge1xuICAgICAgICBmaWVsZHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ215LXJlbGF0aW9uc2hpcCcsXG4gICAgICAgICAgICBuYW1lOiAnTXkgUmVsYXRpb25zaGlwJyxcbiAgICAgICAgICAgIHJlbGF0aW9uVG86ICdzb21lLWNvbGxlY3Rpb24nLFxuICAgICAgICAgICAgdHlwZTogJ3JlbGF0aW9uc2hpcCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgc2x1ZzogJ3JlbGF0aW9uc2hpcEJsb2NrJyxcbiAgICAgIH1cbiAgICAgIGNvbnN0IGZpZWxkczogRmllbGRbXSA9IFtcbiAgICAgICAge1xuICAgICAgICAgIGJsb2NrczogW3JlbGF0aW9uc2hpcEJsb2NrXSxcbiAgICAgICAgICBsYWJlbDogJ0xheW91dCBCbG9ja3MnLFxuICAgICAgICAgIG5hbWU6ICdsYXlvdXQnLFxuICAgICAgICAgIHR5cGU6ICdibG9ja3MnLFxuICAgICAgICB9LFxuICAgICAgXVxuICAgICAgZXhwZWN0KCgpID0+IHtcbiAgICAgICAgc2FuaXRpemVGaWVsZHMoeyBjb25maWc6IGR1bW15Q29uZmlnLCBmaWVsZHMsIHZhbGlkUmVsYXRpb25zaGlwcyB9KVxuICAgICAgfSkubm90LnRvVGhyb3coKVxuICAgIH0pXG5cbiAgICBpdCgnc2hvdWxkIHRocm93IG9uIGludmFsaWQgcmVsYXRpb25zaGlwJywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsaWRSZWxhdGlvbnNoaXBzID0gWydzb21lLWNvbGxlY3Rpb24nXVxuICAgICAgY29uc3QgZmllbGRzOiBGaWVsZFtdID0gW1xuICAgICAgICB7XG4gICAgICAgICAgbGFiZWw6ICdteS1yZWxhdGlvbnNoaXAnLFxuICAgICAgICAgIG5hbWU6ICdNeSBSZWxhdGlvbnNoaXAnLFxuICAgICAgICAgIHJlbGF0aW9uVG86ICdub3QtdmFsaWQnLFxuICAgICAgICAgIHR5cGU6ICdyZWxhdGlvbnNoaXAnLFxuICAgICAgICB9LFxuICAgICAgXVxuICAgICAgZXhwZWN0KCgpID0+IHtcbiAgICAgICAgc2FuaXRpemVGaWVsZHMoeyBjb25maWc6IGR1bW15Q29uZmlnLCBmaWVsZHMsIHZhbGlkUmVsYXRpb25zaGlwcyB9KVxuICAgICAgfSkudG9UaHJvdyhJbnZhbGlkRmllbGRSZWxhdGlvbnNoaXApXG4gICAgfSlcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgb24gaW52YWxpZCByZWxhdGlvbnNoaXAgLSBtdWx0aXBsZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbGlkUmVsYXRpb25zaGlwcyA9IFsnc29tZS1jb2xsZWN0aW9uJywgJ2Fub3RoZXItY29sbGVjdGlvbiddXG4gICAgICBjb25zdCBmaWVsZHM6IEZpZWxkW10gPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBsYWJlbDogJ215LXJlbGF0aW9uc2hpcCcsXG4gICAgICAgICAgbmFtZTogJ015IFJlbGF0aW9uc2hpcCcsXG4gICAgICAgICAgcmVsYXRpb25UbzogWydzb21lLWNvbGxlY3Rpb24nLCAnbm90LXZhbGlkJ10sXG4gICAgICAgICAgdHlwZTogJ3JlbGF0aW9uc2hpcCcsXG4gICAgICAgIH0sXG4gICAgICBdXG4gICAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgICBzYW5pdGl6ZUZpZWxkcyh7IGNvbmZpZzogZHVtbXlDb25maWcsIGZpZWxkcywgdmFsaWRSZWxhdGlvbnNoaXBzIH0pXG4gICAgICB9KS50b1Rocm93KEludmFsaWRGaWVsZFJlbGF0aW9uc2hpcClcbiAgICB9KVxuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBvbiBpbnZhbGlkIHJlbGF0aW9uc2hpcCBpbnNpZGUgYmxvY2tzJywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsaWRSZWxhdGlvbnNoaXBzID0gWydzb21lLWNvbGxlY3Rpb24nXVxuICAgICAgY29uc3QgcmVsYXRpb25zaGlwQmxvY2s6IEJsb2NrID0ge1xuICAgICAgICBmaWVsZHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ215LXJlbGF0aW9uc2hpcCcsXG4gICAgICAgICAgICBuYW1lOiAnTXkgUmVsYXRpb25zaGlwJyxcbiAgICAgICAgICAgIHJlbGF0aW9uVG86ICdub3QtdmFsaWQnLFxuICAgICAgICAgICAgdHlwZTogJ3JlbGF0aW9uc2hpcCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgc2x1ZzogJ3JlbGF0aW9uc2hpcEJsb2NrJyxcbiAgICAgIH1cbiAgICAgIGNvbnN0IGZpZWxkczogRmllbGRbXSA9IFtcbiAgICAgICAge1xuICAgICAgICAgIGJsb2NrczogW3JlbGF0aW9uc2hpcEJsb2NrXSxcbiAgICAgICAgICBsYWJlbDogJ0xheW91dCBCbG9ja3MnLFxuICAgICAgICAgIG5hbWU6ICdsYXlvdXQnLFxuICAgICAgICAgIHR5cGU6ICdibG9ja3MnLFxuICAgICAgICB9LFxuICAgICAgXVxuICAgICAgZXhwZWN0KCgpID0+IHtcbiAgICAgICAgc2FuaXRpemVGaWVsZHMoeyBjb25maWc6IGR1bW15Q29uZmlnLCBmaWVsZHMsIHZhbGlkUmVsYXRpb25zaGlwcyB9KVxuICAgICAgfSkudG9UaHJvdyhJbnZhbGlkRmllbGRSZWxhdGlvbnNoaXApXG4gICAgfSlcblxuICAgIGl0KCdzaG91bGQgZGVmYXVsdFZhbHVlIG9mIGNoZWNrYm94IHRvIGZhbHNlIGlmIHJlcXVpcmVkIGFuZCB1bmRlZmluZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBmaWVsZHM6IEZpZWxkW10gPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnTXkgQ2hlY2tib3gnLFxuICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgIHR5cGU6ICdjaGVja2JveCcsXG4gICAgICAgIH0sXG4gICAgICBdXG5cbiAgICAgIGNvbnN0IHNhbml0aXplZEZpZWxkID0gc2FuaXRpemVGaWVsZHMoe1xuICAgICAgICBjb25maWc6IGR1bW15Q29uZmlnLFxuICAgICAgICBmaWVsZHMsXG4gICAgICAgIHZhbGlkUmVsYXRpb25zaGlwczogW10sXG4gICAgICB9KVswXSBhcyBDaGVja2JveEZpZWxkXG4gICAgICBleHBlY3Qoc2FuaXRpemVkRmllbGQuZGVmYXVsdFZhbHVlKS50b1N0cmljdEVxdWFsKGZhbHNlKVxuICAgIH0pXG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiBlbXB0eSBmaWVsZCBhcnJheSBpZiBubyBmaWVsZHMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBzYW5pdGl6ZWRGaWVsZHMgPSBzYW5pdGl6ZUZpZWxkcyh7XG4gICAgICAgIGNvbmZpZzogZHVtbXlDb25maWcsXG4gICAgICAgIGZpZWxkczogW10sXG4gICAgICAgIHZhbGlkUmVsYXRpb25zaGlwczogW10sXG4gICAgICB9KVxuICAgICAgZXhwZWN0KHNhbml0aXplZEZpZWxkcykudG9TdHJpY3RFcXVhbChbXSlcbiAgICB9KVxuICB9KVxufSlcbiJdLCJuYW1lcyI6WyJkdW1teUNvbmZpZyIsImNvbGxlY3Rpb25zIiwiZGIiLCJkZXNjcmliZSIsIml0IiwiZmllbGRzIiwibGFiZWwiLCJuYW1lIiwiZXhwZWN0Iiwic2FuaXRpemVGaWVsZHMiLCJjb25maWciLCJ2YWxpZFJlbGF0aW9uc2hpcHMiLCJ0b1Rocm93IiwiTWlzc2luZ0ZpZWxkVHlwZSIsInR5cGUiLCJJbnZhbGlkRmllbGROYW1lIiwic2FuaXRpemVkRmllbGQiLCJ0b1N0cmljdEVxdWFsIiwiYXJyYXlGaWVsZCIsImxhYmVscyIsInRvQmVVbmRlZmluZWQiLCJibG9ja3MiLCJzbHVnIiwidG9NYXRjaE9iamVjdCIsInBsdXJhbCIsInNpbmd1bGFyIiwicmVsYXRpb25UbyIsIm5vdCIsInJlbGF0aW9uc2hpcEJsb2NrIiwiSW52YWxpZEZpZWxkUmVsYXRpb25zaGlwIiwicmVxdWlyZWQiLCJkZWZhdWx0VmFsdWUiLCJzYW5pdGl6ZWRGaWVsZHMiXSwibWFwcGluZ3MiOiI7Ozs7d0JBVTZFOzBCQUM5QztBQUcvQixNQUFNQSxjQUFzQjtJQUMxQkMsYUFBYSxFQUFFO0lBQ2ZDLElBQUksSUFBTyxDQUFBLENBQUMsQ0FBQTtBQUNkO0FBRUFDLFNBQVMsa0JBQWtCO0lBQ3pCQyxHQUFHLHNDQUFzQztRQUN2Qyw2REFBNkQ7UUFDN0QsYUFBYTtRQUNiLE1BQU1DLFNBQWtCO1lBQ3RCO2dCQUNFQyxPQUFPO2dCQUNQQyxNQUFNO1lBQ1I7U0FDRDtRQUNEQyxPQUFPO1lBQ0wsNkRBQTZEO1lBQzdELGFBQWE7WUFDYkMsSUFBQUEsd0JBQWMsRUFBQztnQkFDYkMsUUFBUVY7Z0JBQ1JLO2dCQUNBTSxvQkFBb0IsRUFBRTtZQUN4QjtRQUNGLEdBQUdDLE9BQU8sQ0FBQ0Msd0JBQWdCO0lBQzdCO0lBQ0FULEdBQUcsc0NBQXNDO1FBQ3ZDLE1BQU1DLFNBQWtCO1lBQ3RCO2dCQUNFQyxPQUFPO2dCQUNQQyxNQUFNO2dCQUNOTyxNQUFNO1lBQ1I7U0FDRDtRQUNETixPQUFPO1lBQ0xDLElBQUFB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
389
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9maWVsZHMvY29uZmlnL3Nhbml0aXplLnNwZWMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBBcnJheUZpZWxkLFxuICBCbG9jayxcbiAgQmxvY2tGaWVsZCxcbiAgQ2hlY2tib3hGaWVsZCxcbiAgRmllbGQsXG4gIE51bWJlckZpZWxkLFxuICBUZXh0RmllbGQsXG59IGZyb20gJy4vdHlwZXMnXG5pbXBvcnQgeyBDb25maWcgfSBmcm9tICcuLi8uLi9jb25maWcvdHlwZXMnXG5pbXBvcnQgeyBJbnZhbGlkRmllbGROYW1lLCBJbnZhbGlkRmllbGRSZWxhdGlvbnNoaXAsIE1pc3NpbmdGaWVsZFR5cGUgfSBmcm9tICcuLi8uLi9lcnJvcnMnXG5pbXBvcnQgeyBzYW5pdGl6ZUZpZWxkcyB9IGZyb20gJy4vc2FuaXRpemUnXG5pbXBvcnQgeyBEYXRhYmFzZUFkYXB0ZXIgfSBmcm9tICcuLi8uLidcblxuY29uc3QgZHVtbXlDb25maWc6IENvbmZpZyA9IHtcbiAgY29sbGVjdGlvbnM6IFtdLFxuICBkYjogKCkgPT4gKHt9KSBhcyBEYXRhYmFzZUFkYXB0ZXIsXG59XG5cbmRlc2NyaWJlKCdzYW5pdGl6ZUZpZWxkcycsICgpID0+IHtcbiAgaXQoJ3Nob3VsZCB0aHJvdyBvbiBtaXNzaW5nIHR5cGUgZmllbGQnLCAoKSA9PiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCBmaWVsZHM6IEZpZWxkW10gPSBbXG4gICAgICB7XG4gICAgICAgIGxhYmVsOiAnc29tZS1jb2xsZWN0aW9uJyxcbiAgICAgICAgbmFtZTogJ1NvbWUgQ29sbGVjdGlvbicsXG4gICAgICB9LFxuICAgIF1cbiAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgc2FuaXRpemVGaWVsZHMoe1xuICAgICAgICBjb25maWc6IGR1bW15Q29uZmlnLFxuICAgICAgICBmaWVsZHMsXG4gICAgICAgIHZhbGlkUmVsYXRpb25zaGlwczogW10sXG4gICAgICB9KVxuICAgIH0pLnRvVGhyb3coTWlzc2luZ0ZpZWxkVHlwZSlcbiAgfSlcbiAgaXQoJ3Nob3VsZCB0aHJvdyBvbiBpbnZhbGlkIGZpZWxkIG5hbWUnLCAoKSA9PiB7XG4gICAgY29uc3QgZmllbGRzOiBGaWVsZFtdID0gW1xuICAgICAge1xuICAgICAgICBsYWJlbDogJ3NvbWUuY29sbGVjdGlvbicsXG4gICAgICAgIG5hbWU6ICdzb21lLmNvbGxlY3Rpb24nLFxuICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICB9LFxuICAgIF1cbiAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgc2FuaXRpemVGaWVsZHMoe1xuICAgICAgICBjb25maWc6IGR1bW15Q29uZmlnLFxuICAgICAgICBmaWVsZHMsXG4gICAgICAgIHZhbGlkUmVsYXRpb25zaGlwczogW10sXG4gICAgICB9KVxuICAgIH0pLnRvVGhyb3coSW52YWxpZEZpZWxkTmFtZSlcbiAgfSlcblxuICBkZXNjcmliZSgnYXV0by1sYWJlbGluZycsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHBvcHVsYXRlIGxhYmVsIGlmIG1pc3NpbmcnLCAoKSA9PiB7XG4gICAgICBjb25zdCBmaWVsZHM6IEZpZWxkW10gPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnc29tZUZpZWxkJyxcbiAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgIH0sXG4gICAgICBdXG4gICAgICBjb25zdCBzYW5pdGl6ZWRGaWVsZCA9IHNhbml0aXplRmllbGRzKHtcbiAgICAgICAgY29uZmlnOiBkdW1teUNvbmZpZyxcbiAgICAgICAgZmllbGRzLFxuICAgICAgICB2YWxpZFJlbGF0aW9uc2hpcHM6IFtdLFxuICAgICAgfSlbMF0gYXMgVGV4dEZpZWxkXG4gICAgICBleHBlY3Qoc2FuaXRpemVkRmllbGQubmFtZSkudG9TdHJpY3RFcXVhbCgnc29tZUZpZWxkJylcbiAgICAgIGV4cGVjdChzYW5pdGl6ZWRGaWVsZC5sYWJlbCkudG9TdHJpY3RFcXVhbCgnU29tZSBGaWVsZCcpXG4gICAgICBleHBlY3Qoc2FuaXRpemVkRmllbGQudHlwZSkudG9TdHJpY3RFcXVhbCgndGV4dCcpXG4gICAgfSlcbiAgICBpdCgnc2hvdWxkIGFsbG93IGF1dG8tbGFiZWwgb3ZlcnJpZGUnLCAoKSA9PiB7XG4gICAgICBjb25zdCBmaWVsZHM6IEZpZWxkW10gPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBsYWJlbDogJ0RvIG5vdCBsYWJlbCcsXG4gICAgICAgICAgbmFtZTogJ3NvbWVGaWVsZCcsXG4gICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICB9LFxuICAgICAgXVxuICAgICAgY29uc3Qgc2FuaXRpemVkRmllbGQgPSBzYW5pdGl6ZUZpZWxkcyh7XG4gICAgICAgIGNvbmZpZzogZHVtbXlDb25maWcsXG4gICAgICAgIGZpZWxkcyxcbiAgICAgICAgdmFsaWRSZWxhdGlvbnNoaXBzOiBbXSxcbiAgICAgIH0pWzBdIGFzIFRleHRGaWVsZFxuICAgICAgZXhwZWN0KHNhbml0aXplZEZpZWxkLm5hbWUpLnRvU3RyaWN0RXF1YWwoJ3NvbWVGaWVsZCcpXG4gICAgICBleHBlY3Qoc2FuaXRpemVkRmllbGQubGFiZWwpLnRvU3RyaWN0RXF1YWwoJ0RvIG5vdCBsYWJlbCcpXG4gICAgICBleHBlY3Qoc2FuaXRpemVkRmllbGQudHlwZSkudG9TdHJpY3RFcXVhbCgndGV4dCcpXG4gICAgfSlcblxuICAgIGRlc2NyaWJlKCdvcHQtb3V0JywgKCkgPT4ge1xuICAgICAgaXQoJ3Nob3VsZCBhbGxvdyBsYWJlbCBvcHQtb3V0JywgKCkgPT4ge1xuICAgICAgICBjb25zdCBmaWVsZHM6IEZpZWxkW10gPSBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6IGZhbHNlLFxuICAgICAgICAgICAgbmFtZTogJ3NvbWVGaWVsZCcsXG4gICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXVxuICAgICAgICBjb25zdCBzYW5pdGl6ZWRGaWVsZCA9IHNhbml0aXplRmllbGRzKHtcbiAgICAgICAgICBjb25maWc6IGR1bW15Q29uZmlnLFxuICAgICAgICAgIGZpZWxkcyxcbiAgICAgICAgICB2YWxpZFJlbGF0aW9uc2hpcHM6IFtdLFxuICAgICAgICB9KVswXSBhcyBUZXh0RmllbGRcbiAgICAgICAgZXhwZWN0KHNhbml0aXplZEZpZWxkLm5hbWUpLnRvU3RyaWN0RXF1YWwoJ3NvbWVGaWVsZCcpXG4gICAgICAgIGV4cGVjdChzYW5pdGl6ZWRGaWVsZC5sYWJlbCkudG9TdHJpY3RFcXVhbChmYWxzZSlcbiAgICAgICAgZXhwZWN0KHNhbml0aXplZEZpZWxkLnR5cGUpLnRvU3RyaWN0RXF1YWwoJ3RleHQnKVxuICAgICAgfSlcblxuICAgICAgaXQoJ3Nob3VsZCBhbGxvdyBsYWJlbCBvcHQtb3V0IGZvciBhcnJheXMnLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGFycmF5RmllbGQ6IEFycmF5RmllbGQgPSB7XG4gICAgICAgICAgZmllbGRzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICdpdGVtTmFtZScsXG4gICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBsYWJlbDogZmFsc2UsXG4gICAgICAgICAgbmFtZTogJ2l0ZW1zJyxcbiAgICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNhbml0aXplZEZpZWxkID0gc2FuaXRpemVGaWVsZHMoe1xuICAgICAgICAgIGNvbmZpZzogZHVtbXlDb25maWcsXG4gICAgICAgICAgZmllbGRzOiBbYXJyYXlGaWVsZF0sXG4gICAgICAgICAgdmFsaWRSZWxhdGlvbnNoaXBzOiBbXSxcbiAgICAgICAgfSlbMF0gYXMgQXJyYXlGaWVsZFxuICAgICAgICBleHBlY3Qoc2FuaXRpemVkRmllbGQubmFtZSkudG9TdHJpY3RFcXVhbCgnaXRlbXMnKVxuICAgICAgICBleHBlY3Qoc2FuaXRpemVkRmllbGQubGFiZWwpLnRvU3RyaWN0RXF1YWwoZmFsc2UpXG4gICAgICAgIGV4cGVjdChzYW5pdGl6ZWRGaWVsZC50eXBlKS50b1N0cmljdEVxdWFsKCdhcnJheScpXG4gICAgICAgIGV4cGVjdChzYW5pdGl6ZWRGaWVsZC5sYWJlbHMpLnRvQmVVbmRlZmluZWQoKVxuICAgICAgfSlcbiAgICAgIGl0KCdzaG91bGQgYWxsb3cgbGFiZWwgb3B0LW91dCBmb3IgYmxvY2tzJywgKCkgPT4ge1xuICAgICAgICBjb25zdCBmaWVsZHM6IEZpZWxkW10gPSBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmxvY2tzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBmaWVsZHM6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3Rlc3ROdW1iZXInLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICBzbHVnOiAnbnVtYmVyJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBsYWJlbDogZmFsc2UsXG4gICAgICAgICAgICBuYW1lOiAnbm9MYWJlbEJsb2NrJyxcbiAgICAgICAgICAgIHR5cGU6ICdibG9ja3MnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF1cbiAgICAgICAgY29uc3Qgc2FuaXRpemVkRmllbGQgPSBzYW5pdGl6ZUZpZWxkcyh7XG4gICAgICAgICAgY29uZmlnOiBkdW1teUNvbmZpZyxcbiAgICAgICAgICBmaWVsZHMsXG4gICAgICAgICAgdmFsaWRSZWxhdGlvbnNoaXBzOiBbXSxcbiAgICAgICAgfSlbMF0gYXMgQmxvY2tGaWVsZFxuICAgICAgICBleHBlY3Qoc2FuaXRpemVkRmllbGQubmFtZSkudG9TdHJpY3RFcXVhbCgnbm9MYWJlbEJsb2NrJylcbiAgICAgICAgZXhwZWN0KHNhbml0aXplZEZpZWxkLmxhYmVsKS50b1N0cmljdEVxdWFsKGZhbHNlKVxuICAgICAgICBleHBlY3Qoc2FuaXRpemVkRmllbGQudHlwZSkudG9TdHJpY3RFcXVhbCgnYmxvY2tzJylcbiAgICAgICAgZXhwZWN0KHNhbml0aXplZEZpZWxkLmxhYmVscykudG9CZVVuZGVmaW5lZCgpXG4gICAgICB9KVxuICAgIH0pXG5cbiAgICBpdCgnc2hvdWxkIGxhYmVsIGFycmF5cyB3aXRoIHBsdXJhbCBhbmQgc2luZ3VsYXInLCAoKSA9PiB7XG4gICAgICBjb25zdCBmaWVsZHM6IEZpZWxkW10gPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBmaWVsZHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ2l0ZW1OYW1lJyxcbiAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIG5hbWU6ICdpdGVtcycsXG4gICAgICAgICAgdHlwZTogJ2FycmF5JyxcbiAgICAgICAgfSxcbiAgICAgIF1cbiAgICAgIGNvbnN0IHNhbml0aXplZEZpZWxkID0gc2FuaXRpemVGaWVsZHMoe1xuICAgICAgICBjb25maWc6IGR1bW15Q29uZmlnLFxuICAgICAgICBmaWVsZHMsXG4gICAgICAgIHZhbGlkUmVsYXRpb25zaGlwczogW10sXG4gICAgICB9KVswXSBhcyBBcnJheUZpZWxkXG4gICAgICBleHBlY3Qoc2FuaXRpemVkRmllbGQubmFtZSkudG9TdHJpY3RFcXVhbCgnaXRlbXMnKVxuICAgICAgZXhwZWN0KHNhbml0aXplZEZpZWxkLmxhYmVsKS50b1N0cmljdEVxdWFsKCdJdGVtcycpXG4gICAgICBleHBlY3Qoc2FuaXRpemVkRmllbGQudHlwZSkudG9TdHJpY3RFcXVhbCgnYXJyYXknKVxuICAgICAgZXhwZWN0KHNhbml0aXplZEZpZWxkLmxhYmVscykudG9NYXRjaE9iamVjdCh7IHBsdXJhbDogJ0l0ZW1zJywgc2luZ3VsYXI6ICdJdGVtJyB9KVxuICAgIH0pXG5cbiAgICBpdCgnc2hvdWxkIGxhYmVsIGJsb2NrcyB3aXRoIHBsdXJhbCBhbmQgc2luZ3VsYXInLCAoKSA9PiB7XG4gICAgICBjb25zdCBmaWVsZHM6IEZpZWxkW10gPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBibG9ja3M6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZmllbGRzOiBbeyBuYW1lOiAndGVzdE51bWJlcicsIHR5cGU6ICdudW1iZXInIH1dLFxuICAgICAgICAgICAgICBzbHVnOiAnbnVtYmVyJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBuYW1lOiAnc3BlY2lhbEJsb2NrJyxcbiAgICAgICAgICB0eXBlOiAnYmxvY2tzJyxcbiAgICAgICAgfSxcbiAgICAgIF1cbiAgICAgIGNvbnN0IHNhbml0aXplZEZpZWxkID0gc2FuaXRpemVGaWVsZHMoe1xuICAgICAgICBjb25maWc6IGR1bW15Q29uZmlnLFxuICAgICAgICBmaWVsZHMsXG4gICAgICAgIHZhbGlkUmVsYXRpb25zaGlwczogW10sXG4gICAgICB9KVswXSBhcyBCbG9ja0ZpZWxkXG4gICAgICBleHBlY3Qoc2FuaXRpemVkRmllbGQubmFtZSkudG9TdHJpY3RFcXVhbCgnc3BlY2lhbEJsb2NrJylcbiAgICAgIGV4cGVjdChzYW5pdGl6ZWRGaWVsZC5sYWJlbCkudG9TdHJpY3RFcXVhbCgnU3BlY2lhbCBCbG9jaycpXG4gICAgICBleHBlY3Qoc2FuaXRpemVkRmllbGQudHlwZSkudG9TdHJpY3RFcXVhbCgnYmxvY2tzJylcbiAgICAgIGV4cGVjdChzYW5pdGl6ZWRGaWVsZC5sYWJlbHMpLnRvTWF0Y2hPYmplY3Qoe1xuICAgICAgICBwbHVyYWw6ICdTcGVjaWFsIEJsb2NrcycsXG4gICAgICAgIHNpbmd1bGFyOiAnU3BlY2lhbCBCbG9jaycsXG4gICAgICB9KVxuICAgICAgZXhwZWN0KChzYW5pdGl6ZWRGaWVsZC5ibG9ja3NbMF0uZmllbGRzWzBdIGFzIE51bWJlckZpZWxkKS5sYWJlbCkudG9TdHJpY3RFcXVhbCgnVGVzdCBOdW1iZXInKVxuICAgIH0pXG4gIH0pXG5cbiAgZGVzY3JpYmUoJ3JlbGF0aW9uc2hpcHMnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBub3QgdGhyb3cgb24gdmFsaWQgcmVsYXRpb25zaGlwJywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsaWRSZWxhdGlvbnNoaXBzID0gWydzb21lLWNvbGxlY3Rpb24nXVxuICAgICAgY29uc3QgZmllbGRzOiBGaWVsZFtdID0gW1xuICAgICAgICB7XG4gICAgICAgICAgbGFiZWw6ICdteS1yZWxhdGlvbnNoaXAnLFxuICAgICAgICAgIG5hbWU6ICdNeSBSZWxhdGlvbnNoaXAnLFxuICAgICAgICAgIHJlbGF0aW9uVG86ICdzb21lLWNvbGxlY3Rpb24nLFxuICAgICAgICAgIHR5cGU6ICdyZWxhdGlvbnNoaXAnLFxuICAgICAgICB9LFxuICAgICAgXVxuICAgICAgZXhwZWN0KCgpID0+IHtcbiAgICAgICAgc2FuaXRpemVGaWVsZHMoeyBjb25maWc6IGR1bW15Q29uZmlnLCBmaWVsZHMsIHZhbGlkUmVsYXRpb25zaGlwcyB9KVxuICAgICAgfSkubm90LnRvVGhyb3coKVxuICAgIH0pXG5cbiAgICBpdCgnc2hvdWxkIG5vdCB0aHJvdyBvbiB2YWxpZCByZWxhdGlvbnNoaXAgLSBtdWx0aXBsZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbGlkUmVsYXRpb25zaGlwcyA9IFsnc29tZS1jb2xsZWN0aW9uJywgJ2Fub3RoZXItY29sbGVjdGlvbiddXG4gICAgICBjb25zdCBmaWVsZHM6IEZpZWxkW10gPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBsYWJlbDogJ215LXJlbGF0aW9uc2hpcCcsXG4gICAgICAgICAgbmFtZTogJ015IFJlbGF0aW9uc2hpcCcsXG4gICAgICAgICAgcmVsYXRpb25UbzogWydzb21lLWNvbGxlY3Rpb24nLCAnYW5vdGhlci1jb2xsZWN0aW9uJ10sXG4gICAgICAgICAgdHlwZTogJ3JlbGF0aW9uc2hpcCcsXG4gICAgICAgIH0sXG4gICAgICBdXG4gICAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgICBzYW5pdGl6ZUZpZWxkcyh7IGNvbmZpZzogZHVtbXlDb25maWcsIGZpZWxkcywgdmFsaWRSZWxhdGlvbnNoaXBzIH0pXG4gICAgICB9KS5ub3QudG9UaHJvdygpXG4gICAgfSlcblxuICAgIGl0KCdzaG91bGQgbm90IHRocm93IG9uIHZhbGlkIHJlbGF0aW9uc2hpcCBpbnNpZGUgYmxvY2tzJywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsaWRSZWxhdGlvbnNoaXBzID0gWydzb21lLWNvbGxlY3Rpb24nXVxuICAgICAgY29uc3QgcmVsYXRpb25zaGlwQmxvY2s6IEJsb2NrID0ge1xuICAgICAgICBmaWVsZHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ215LXJlbGF0aW9uc2hpcCcsXG4gICAgICAgICAgICBuYW1lOiAnTXkgUmVsYXRpb25zaGlwJyxcbiAgICAgICAgICAgIHJlbGF0aW9uVG86ICdzb21lLWNvbGxlY3Rpb24nLFxuICAgICAgICAgICAgdHlwZTogJ3JlbGF0aW9uc2hpcCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgc2x1ZzogJ3JlbGF0aW9uc2hpcEJsb2NrJyxcbiAgICAgIH1cbiAgICAgIGNvbnN0IGZpZWxkczogRmllbGRbXSA9IFtcbiAgICAgICAge1xuICAgICAgICAgIGJsb2NrczogW3JlbGF0aW9uc2hpcEJsb2NrXSxcbiAgICAgICAgICBsYWJlbDogJ0xheW91dCBCbG9ja3MnLFxuICAgICAgICAgIG5hbWU6ICdsYXlvdXQnLFxuICAgICAgICAgIHR5cGU6ICdibG9ja3MnLFxuICAgICAgICB9LFxuICAgICAgXVxuICAgICAgZXhwZWN0KCgpID0+IHtcbiAgICAgICAgc2FuaXRpemVGaWVsZHMoeyBjb25maWc6IGR1bW15Q29uZmlnLCBmaWVsZHMsIHZhbGlkUmVsYXRpb25zaGlwcyB9KVxuICAgICAgfSkubm90LnRvVGhyb3coKVxuICAgIH0pXG5cbiAgICBpdCgnc2hvdWxkIHRocm93IG9uIGludmFsaWQgcmVsYXRpb25zaGlwJywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsaWRSZWxhdGlvbnNoaXBzID0gWydzb21lLWNvbGxlY3Rpb24nXVxuICAgICAgY29uc3QgZmllbGRzOiBGaWVsZFtdID0gW1xuICAgICAgICB7XG4gICAgICAgICAgbGFiZWw6ICdteS1yZWxhdGlvbnNoaXAnLFxuICAgICAgICAgIG5hbWU6ICdNeSBSZWxhdGlvbnNoaXAnLFxuICAgICAgICAgIHJlbGF0aW9uVG86ICdub3QtdmFsaWQnLFxuICAgICAgICAgIHR5cGU6ICdyZWxhdGlvbnNoaXAnLFxuICAgICAgICB9LFxuICAgICAgXVxuICAgICAgZXhwZWN0KCgpID0+IHtcbiAgICAgICAgc2FuaXRpemVGaWVsZHMoeyBjb25maWc6IGR1bW15Q29uZmlnLCBmaWVsZHMsIHZhbGlkUmVsYXRpb25zaGlwcyB9KVxuICAgICAgfSkudG9UaHJvdyhJbnZhbGlkRmllbGRSZWxhdGlvbnNoaXApXG4gICAgfSlcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgb24gaW52YWxpZCByZWxhdGlvbnNoaXAgLSBtdWx0aXBsZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbGlkUmVsYXRpb25zaGlwcyA9IFsnc29tZS1jb2xsZWN0aW9uJywgJ2Fub3RoZXItY29sbGVjdGlvbiddXG4gICAgICBjb25zdCBmaWVsZHM6IEZpZWxkW10gPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBsYWJlbDogJ215LXJlbGF0aW9uc2hpcCcsXG4gICAgICAgICAgbmFtZTogJ015IFJlbGF0aW9uc2hpcCcsXG4gICAgICAgICAgcmVsYXRpb25UbzogWydzb21lLWNvbGxlY3Rpb24nLCAnbm90LXZhbGlkJ10sXG4gICAgICAgICAgdHlwZTogJ3JlbGF0aW9uc2hpcCcsXG4gICAgICAgIH0sXG4gICAgICBdXG4gICAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgICBzYW5pdGl6ZUZpZWxkcyh7IGNvbmZpZzogZHVtbXlDb25maWcsIGZpZWxkcywgdmFsaWRSZWxhdGlvbnNoaXBzIH0pXG4gICAgICB9KS50b1Rocm93KEludmFsaWRGaWVsZFJlbGF0aW9uc2hpcClcbiAgICB9KVxuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBvbiBpbnZhbGlkIHJlbGF0aW9uc2hpcCBpbnNpZGUgYmxvY2tzJywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsaWRSZWxhdGlvbnNoaXBzID0gWydzb21lLWNvbGxlY3Rpb24nXVxuICAgICAgY29uc3QgcmVsYXRpb25zaGlwQmxvY2s6IEJsb2NrID0ge1xuICAgICAgICBmaWVsZHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ215LXJlbGF0aW9uc2hpcCcsXG4gICAgICAgICAgICBuYW1lOiAnTXkgUmVsYXRpb25zaGlwJyxcbiAgICAgICAgICAgIHJlbGF0aW9uVG86ICdub3QtdmFsaWQnLFxuICAgICAgICAgICAgdHlwZTogJ3JlbGF0aW9uc2hpcCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgc2x1ZzogJ3JlbGF0aW9uc2hpcEJsb2NrJyxcbiAgICAgIH1cbiAgICAgIGNvbnN0IGZpZWxkczogRmllbGRbXSA9IFtcbiAgICAgICAge1xuICAgICAgICAgIGJsb2NrczogW3JlbGF0aW9uc2hpcEJsb2NrXSxcbiAgICAgICAgICBsYWJlbDogJ0xheW91dCBCbG9ja3MnLFxuICAgICAgICAgIG5hbWU6ICdsYXlvdXQnLFxuICAgICAgICAgIHR5cGU6ICdibG9ja3MnLFxuICAgICAgICB9LFxuICAgICAgXVxuICAgICAgZXhwZWN0KCgpID0+IHtcbiAgICAgICAgc2FuaXRpemVGaWVsZHMoeyBjb25maWc6IGR1bW15Q29uZmlnLCBmaWVsZHMsIHZhbGlkUmVsYXRpb25zaGlwcyB9KVxuICAgICAgfSkudG9UaHJvdyhJbnZhbGlkRmllbGRSZWxhdGlvbnNoaXApXG4gICAgfSlcblxuICAgIGl0KCdzaG91bGQgZGVmYXVsdFZhbHVlIG9mIGNoZWNrYm94IHRvIGZhbHNlIGlmIHJlcXVpcmVkIGFuZCB1bmRlZmluZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBmaWVsZHM6IEZpZWxkW10gPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnTXkgQ2hlY2tib3gnLFxuICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgIHR5cGU6ICdjaGVja2JveCcsXG4gICAgICAgIH0sXG4gICAgICBdXG5cbiAgICAgIGNvbnN0IHNhbml0aXplZEZpZWxkID0gc2FuaXRpemVGaWVsZHMoe1xuICAgICAgICBjb25maWc6IGR1bW15Q29uZmlnLFxuICAgICAgICBmaWVsZHMsXG4gICAgICAgIHZhbGlkUmVsYXRpb25zaGlwczogW10sXG4gICAgICB9KVswXSBhcyBDaGVja2JveEZpZWxkXG4gICAgICBleHBlY3Qoc2FuaXRpemVkRmllbGQuZGVmYXVsdFZhbHVlKS50b1N0cmljdEVxdWFsKGZhbHNlKVxuICAgIH0pXG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiBlbXB0eSBmaWVsZCBhcnJheSBpZiBubyBmaWVsZHMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBzYW5pdGl6ZWRGaWVsZHMgPSBzYW5pdGl6ZUZpZWxkcyh7XG4gICAgICAgIGNvbmZpZzogZHVtbXlDb25maWcsXG4gICAgICAgIGZpZWxkczogW10sXG4gICAgICAgIHZhbGlkUmVsYXRpb25zaGlwczogW10sXG4gICAgICB9KVxuICAgICAgZXhwZWN0KHNhbml0aXplZEZpZWxkcykudG9TdHJpY3RFcXVhbChbXSlcbiAgICB9KVxuICB9KVxufSlcbiJdLCJuYW1lcyI6WyJJbnZhbGlkRmllbGROYW1lIiwiSW52YWxpZEZpZWxkUmVsYXRpb25zaGlwIiwiTWlzc2luZ0ZpZWxkVHlwZSIsInNhbml0aXplRmllbGRzIiwiZHVtbXlDb25maWciLCJjb2xsZWN0aW9ucyIsImRiIiwiZGVzY3JpYmUiLCJpdCIsImZpZWxkcyIsImxhYmVsIiwibmFtZSIsImV4cGVjdCIsImNvbmZpZyIsInZhbGlkUmVsYXRpb25zaGlwcyIsInRvVGhyb3ciLCJ0eXBlIiwic2FuaXRpemVkRmllbGQiLCJ0b1N0cmljdEVxdWFsIiwiYXJyYXlGaWVsZCIsImxhYmVscyIsInRvQmVVbmRlZmluZWQiLCJibG9ja3MiLCJzbHVnIiwidG9NYXRjaE9iamVjdCIsInBsdXJhbCIsInNpbmd1bGFyIiwicmVsYXRpb25UbyIsIm5vdCIsInJlbGF0aW9uc2hpcEJsb2NrIiwicmVxdWlyZWQiLCJkZWZhdWx0VmFsdWUiLCJzYW5pdGl6ZWRGaWVsZHMiXSwibWFwcGluZ3MiOiJBQVVBLFNBQVNBLGdCQUFnQixFQUFFQyx3QkFBd0IsRUFBRUMsZ0JBQWdCLFFBQVEsZUFBYztBQUMzRixTQUFTQyxjQUFjLFFBQVEsYUFBWTtBQUczQyxNQUFNQyxjQUFzQjtJQUMxQkMsYUFBYSxFQUFFO0lBQ2ZDLElBQUksSUFBTyxDQUFBLENBQUMsQ0FBQTtBQUNkO0FBRUFDLFNBQVMsa0JBQWtCO0lBQ3pCQyxHQUFHLHNDQUFzQztRQUN2Qyw2REFBNkQ7UUFDN0QsYUFBYTtRQUNiLE1BQU1DLFNBQWtCO1lBQ3RCO2dCQUNFQyxPQUFPO2dCQUNQQyxNQUFNO1lBQ1I7U0FDRDtRQUNEQyxPQUFPO1lBQ0wsNkRBQTZEO1lBQzdELGFBQWE7WUFDYlQsZUFBZTtnQkFDYlUsUUFBUVQ7Z0JBQ1JLO2dCQUNBSyxvQkFBb0IsRUFBRTtZQUN4QjtRQUNGLEdBQUdDLE9BQU8sQ0FBQ2I7SUFDYjtJQUNBTSxHQUFHLHNDQUFzQztRQUN2QyxNQUFNQyxTQUFrQjtZQUN0QjtnQkFDRUMsT0FBTztnQkFDUEMsTUFBTTtn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