payload 3.0.0-alpha.4 → 3.0.0-alpha.40

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 (797) hide show
  1. package/auth.d.ts +5 -5
  2. package/auth.js +5 -44
  3. package/bin.js +17 -1
  4. package/components.d.ts +14 -0
  5. package/components.js +71 -0
  6. package/config.d.ts +10 -10
  7. package/config.js +10 -59
  8. package/database.d.ts +22 -22
  9. package/database.js +21 -108
  10. package/dist/admin/RichText.d.ts +9 -5
  11. package/dist/admin/RichText.d.ts.map +1 -1
  12. package/dist/admin/RichText.js +2 -5
  13. package/dist/admin/elements/Cell.d.ts +2 -2
  14. package/dist/admin/elements/Cell.d.ts.map +1 -1
  15. package/dist/admin/elements/Cell.js +2 -5
  16. package/dist/admin/elements/DatePicker.js +2 -5
  17. package/dist/admin/elements/PreviewButton.js +2 -5
  18. package/dist/admin/elements/PublishButton.js +2 -5
  19. package/dist/admin/elements/SaveButton.js +2 -5
  20. package/dist/admin/elements/SaveDraftButton.js +2 -5
  21. package/dist/admin/elements/Tab.d.ts +3 -3
  22. package/dist/admin/elements/Tab.d.ts.map +1 -1
  23. package/dist/admin/elements/Tab.js +2 -5
  24. package/dist/admin/forms/Error.js +2 -5
  25. package/dist/admin/forms/FieldDescription.js +2 -5
  26. package/dist/admin/forms/FieldTypes.js +2 -5
  27. package/dist/admin/forms/Form.d.ts +22 -0
  28. package/dist/admin/forms/Form.d.ts.map +1 -1
  29. package/dist/admin/forms/Form.js +2 -5
  30. package/dist/admin/forms/Label.js +2 -5
  31. package/dist/admin/forms/RowLabel.d.ts +1 -1
  32. package/dist/admin/forms/RowLabel.d.ts.map +1 -1
  33. package/dist/admin/forms/RowLabel.js +2 -5
  34. package/dist/admin/types.d.ts +19 -18
  35. package/dist/admin/types.d.ts.map +1 -1
  36. package/dist/admin/types.js +2 -5
  37. package/dist/admin/views/types.d.ts +41 -0
  38. package/dist/admin/views/types.d.ts.map +1 -0
  39. package/dist/admin/views/types.js +3 -0
  40. package/dist/assets/assets.d.js +0 -1
  41. package/dist/auth/baseFields/accountLock.d.ts +1 -1
  42. package/dist/auth/baseFields/accountLock.d.ts.map +1 -1
  43. package/dist/auth/baseFields/accountLock.js +6 -16
  44. package/dist/auth/baseFields/apiKey.d.ts +1 -1
  45. package/dist/auth/baseFields/apiKey.d.ts.map +1 -1
  46. package/dist/auth/baseFields/apiKey.js +6 -21
  47. package/dist/auth/baseFields/auth.d.ts +1 -1
  48. package/dist/auth/baseFields/auth.d.ts.map +1 -1
  49. package/dist/auth/baseFields/auth.js +6 -16
  50. package/dist/auth/baseFields/verification.d.ts +1 -1
  51. package/dist/auth/baseFields/verification.d.ts.map +1 -1
  52. package/dist/auth/baseFields/verification.js +8 -18
  53. package/dist/auth/cookies.d.ts +2 -2
  54. package/dist/auth/cookies.d.ts.map +1 -1
  55. package/dist/auth/cookies.js +6 -33
  56. package/dist/auth/crypto.js +7 -30
  57. package/dist/auth/defaultAccess.d.ts +1 -1
  58. package/dist/auth/defaultAccess.d.ts.map +1 -1
  59. package/dist/auth/defaultAccess.js +2 -12
  60. package/dist/auth/defaultUser.d.ts +1 -1
  61. package/dist/auth/defaultUser.d.ts.map +1 -1
  62. package/dist/auth/defaultUser.js +6 -16
  63. package/dist/auth/executeAccess.d.ts +2 -2
  64. package/dist/auth/executeAccess.d.ts.map +1 -1
  65. package/dist/auth/executeAccess.js +5 -15
  66. package/dist/auth/extractJWT.d.ts +1 -1
  67. package/dist/auth/extractJWT.d.ts.map +1 -1
  68. package/dist/auth/extractJWT.js +4 -14
  69. package/dist/auth/getAccessResults.d.ts +2 -2
  70. package/dist/auth/getAccessResults.d.ts.map +1 -1
  71. package/dist/auth/getAccessResults.js +9 -19
  72. package/dist/auth/getAuthenticatedUser.d.ts +1 -1
  73. package/dist/auth/getAuthenticatedUser.d.ts.map +1 -1
  74. package/dist/auth/getAuthenticatedUser.js +2 -12
  75. package/dist/auth/getFieldsToSign.d.ts +2 -2
  76. package/dist/auth/getFieldsToSign.d.ts.map +1 -1
  77. package/dist/auth/getFieldsToSign.js +5 -15
  78. package/dist/auth/index.d.ts +3 -3
  79. package/dist/auth/index.d.ts.map +1 -1
  80. package/dist/auth/index.js +4 -27
  81. package/dist/auth/isLocked.js +2 -12
  82. package/dist/auth/operations/access.d.ts +2 -2
  83. package/dist/auth/operations/access.d.ts.map +1 -1
  84. package/dist/auth/operations/access.js +12 -22
  85. package/dist/auth/operations/forgotPassword.d.ts +2 -2
  86. package/dist/auth/operations/forgotPassword.d.ts.map +1 -1
  87. package/dist/auth/operations/forgotPassword.js +21 -32
  88. package/dist/auth/operations/init.d.ts +1 -1
  89. package/dist/auth/operations/init.d.ts.map +1 -1
  90. package/dist/auth/operations/init.js +2 -12
  91. package/dist/auth/operations/local/forgotPassword.d.ts +3 -3
  92. package/dist/auth/operations/local/forgotPassword.d.ts.map +1 -1
  93. package/dist/auth/operations/local/forgotPassword.js +8 -18
  94. package/dist/auth/operations/local/index.d.ts +5 -5
  95. package/dist/auth/operations/local/index.d.ts.map +1 -1
  96. package/dist/auth/operations/local/index.js +12 -27
  97. package/dist/auth/operations/local/login.d.ts +4 -4
  98. package/dist/auth/operations/local/login.d.ts.map +1 -1
  99. package/dist/auth/operations/local/login.js +8 -18
  100. package/dist/auth/operations/local/resetPassword.d.ts +4 -4
  101. package/dist/auth/operations/local/resetPassword.d.ts.map +1 -1
  102. package/dist/auth/operations/local/resetPassword.js +8 -18
  103. package/dist/auth/operations/local/unlock.d.ts +3 -3
  104. package/dist/auth/operations/local/unlock.d.ts.map +1 -1
  105. package/dist/auth/operations/local/unlock.js +8 -18
  106. package/dist/auth/operations/local/verifyEmail.d.ts +3 -3
  107. package/dist/auth/operations/local/verifyEmail.d.ts.map +1 -1
  108. package/dist/auth/operations/local/verifyEmail.js +8 -18
  109. package/dist/auth/operations/login.d.ts +7 -7
  110. package/dist/auth/operations/login.d.ts.map +1 -1
  111. package/dist/auth/operations/login.js +32 -47
  112. package/dist/auth/operations/logout.d.ts +2 -2
  113. package/dist/auth/operations/logout.d.ts.map +1 -1
  114. package/dist/auth/operations/logout.js +6 -21
  115. package/dist/auth/operations/me.d.ts +3 -3
  116. package/dist/auth/operations/me.d.ts.map +1 -1
  117. package/dist/auth/operations/me.js +4 -19
  118. package/dist/auth/operations/refresh.d.ts +3 -3
  119. package/dist/auth/operations/refresh.d.ts.map +1 -1
  120. package/dist/auth/operations/refresh.js +19 -34
  121. package/dist/auth/operations/registerFirstUser.d.ts +9 -9
  122. package/dist/auth/operations/registerFirstUser.d.ts.map +1 -1
  123. package/dist/auth/operations/registerFirstUser.js +11 -21
  124. package/dist/auth/operations/resetPassword.d.ts +2 -2
  125. package/dist/auth/operations/resetPassword.d.ts.map +1 -1
  126. package/dist/auth/operations/resetPassword.js +21 -43
  127. package/dist/auth/operations/unlock.d.ts +2 -2
  128. package/dist/auth/operations/unlock.d.ts.map +1 -1
  129. package/dist/auth/operations/unlock.js +17 -39
  130. package/dist/auth/operations/verifyEmail.d.ts +2 -2
  131. package/dist/auth/operations/verifyEmail.d.ts.map +1 -1
  132. package/dist/auth/operations/verifyEmail.js +14 -37
  133. package/dist/auth/sendVerificationEmail.d.ts +5 -5
  134. package/dist/auth/sendVerificationEmail.d.ts.map +1 -1
  135. package/dist/auth/sendVerificationEmail.js +4 -14
  136. package/dist/auth/strategies/apiKey.d.ts +2 -2
  137. package/dist/auth/strategies/apiKey.d.ts.map +1 -1
  138. package/dist/auth/strategies/apiKey.js +4 -19
  139. package/dist/auth/strategies/jwt.d.ts +1 -1
  140. package/dist/auth/strategies/jwt.d.ts.map +1 -1
  141. package/dist/auth/strategies/jwt.js +6 -21
  142. package/dist/auth/strategies/local/authenticate.d.ts +1 -1
  143. package/dist/auth/strategies/local/authenticate.d.ts.map +1 -1
  144. package/dist/auth/strategies/local/authenticate.js +6 -21
  145. package/dist/auth/strategies/local/generatePasswordSaltHash.js +7 -22
  146. package/dist/auth/strategies/local/incrementLoginAttempts.d.ts +3 -3
  147. package/dist/auth/strategies/local/incrementLoginAttempts.d.ts.map +1 -1
  148. package/dist/auth/strategies/local/incrementLoginAttempts.js +2 -12
  149. package/dist/auth/strategies/local/register.d.ts +3 -3
  150. package/dist/auth/strategies/local/register.d.ts.map +1 -1
  151. package/dist/auth/strategies/local/register.js +6 -16
  152. package/dist/auth/strategies/local/resetLoginAttempts.d.ts +3 -3
  153. package/dist/auth/strategies/local/resetLoginAttempts.d.ts.map +1 -1
  154. package/dist/auth/strategies/local/resetLoginAttempts.js +2 -12
  155. package/dist/auth/types.d.ts +2 -2
  156. package/dist/auth/types.d.ts.map +1 -1
  157. package/dist/auth/types.js +2 -12
  158. package/dist/bin/generateTypes.d.ts +1 -1
  159. package/dist/bin/generateTypes.d.ts.map +1 -1
  160. package/dist/bin/generateTypes.js +10 -34
  161. package/dist/bin/index.d.ts +1 -1
  162. package/dist/bin/index.d.ts.map +1 -1
  163. package/dist/bin/index.js +25 -69
  164. package/dist/bin/loadEnv.js +13 -26
  165. package/dist/bin/migrate.d.ts +7 -1
  166. package/dist/bin/migrate.d.ts.map +1 -1
  167. package/dist/bin/migrate.js +12 -37
  168. package/dist/bin/register/clientExtensions.d.ts +2 -0
  169. package/dist/bin/register/clientExtensions.d.ts.map +1 -0
  170. package/dist/bin/register/clientExtensions.js +13 -0
  171. package/dist/bin/register/index.d.ts +34 -0
  172. package/dist/bin/register/index.d.ts.map +1 -0
  173. package/dist/bin/register/index.js +95 -0
  174. package/dist/bin/register/read-default-tsconfig.d.ts +4 -0
  175. package/dist/bin/register/read-default-tsconfig.d.ts.map +1 -0
  176. package/dist/bin/register/read-default-tsconfig.js +92 -0
  177. package/dist/bin/register/register.d.ts +15 -0
  178. package/dist/bin/register/register.d.ts.map +1 -0
  179. package/dist/bin/register/register.js +92 -0
  180. package/dist/collections/config/build.d.ts +1 -1
  181. package/dist/collections/config/build.d.ts.map +1 -1
  182. package/dist/collections/config/build.js +2 -12
  183. package/dist/collections/config/defaults.d.ts +5 -5
  184. package/dist/collections/config/defaults.js +9 -32
  185. package/dist/collections/config/sanitize.d.ts +2 -2
  186. package/dist/collections/config/sanitize.d.ts.map +1 -1
  187. package/dist/collections/config/sanitize.js +34 -49
  188. package/dist/collections/config/schema.js +157 -172
  189. package/dist/collections/config/types.d.ts +13 -13
  190. package/dist/collections/config/types.d.ts.map +1 -1
  191. package/dist/collections/config/types.js +2 -5
  192. package/dist/collections/dataloader.d.ts +2 -2
  193. package/dist/collections/dataloader.d.ts.map +1 -1
  194. package/dist/collections/dataloader.js +8 -23
  195. package/dist/collections/operations/create.d.ts +9 -9
  196. package/dist/collections/operations/create.d.ts.map +1 -1
  197. package/dist/collections/operations/create.js +38 -53
  198. package/dist/collections/operations/delete.d.ts +9 -10
  199. package/dist/collections/operations/delete.d.ts.map +1 -1
  200. package/dist/collections/operations/delete.js +27 -42
  201. package/dist/collections/operations/deleteByID.d.ts +2 -3
  202. package/dist/collections/operations/deleteByID.d.ts.map +1 -1
  203. package/dist/collections/operations/deleteByID.js +27 -42
  204. package/dist/collections/operations/docAccess.d.ts +3 -3
  205. package/dist/collections/operations/docAccess.d.ts.map +1 -1
  206. package/dist/collections/operations/docAccess.js +12 -22
  207. package/dist/collections/operations/find.d.ts +3 -4
  208. package/dist/collections/operations/find.d.ts.map +1 -1
  209. package/dist/collections/operations/find.js +25 -40
  210. package/dist/collections/operations/findByID.d.ts +2 -2
  211. package/dist/collections/operations/findByID.d.ts.map +1 -1
  212. package/dist/collections/operations/findByID.js +21 -36
  213. package/dist/collections/operations/findVersionByID.d.ts +3 -3
  214. package/dist/collections/operations/findVersionByID.d.ts.map +1 -1
  215. package/dist/collections/operations/findVersionByID.js +19 -34
  216. package/dist/collections/operations/findVersions.d.ts +4 -5
  217. package/dist/collections/operations/findVersions.d.ts.map +1 -1
  218. package/dist/collections/operations/findVersions.js +20 -35
  219. package/dist/collections/operations/local/create.d.ts +4 -5
  220. package/dist/collections/operations/local/create.d.ts.map +1 -1
  221. package/dist/collections/operations/local/create.js +10 -25
  222. package/dist/collections/operations/local/delete.d.ts +5 -5
  223. package/dist/collections/operations/local/delete.d.ts.map +1 -1
  224. package/dist/collections/operations/local/delete.js +10 -20
  225. package/dist/collections/operations/local/find.d.ts +3 -4
  226. package/dist/collections/operations/local/find.d.ts.map +1 -1
  227. package/dist/collections/operations/local/find.js +8 -18
  228. package/dist/collections/operations/local/findByID.d.ts +2 -4
  229. package/dist/collections/operations/local/findByID.d.ts.map +1 -1
  230. package/dist/collections/operations/local/findByID.js +8 -18
  231. package/dist/collections/operations/local/findVersionByID.d.ts +3 -4
  232. package/dist/collections/operations/local/findVersionByID.d.ts.map +1 -1
  233. package/dist/collections/operations/local/findVersionByID.js +8 -18
  234. package/dist/collections/operations/local/findVersions.d.ts +4 -5
  235. package/dist/collections/operations/local/findVersions.d.ts.map +1 -1
  236. package/dist/collections/operations/local/findVersions.js +8 -18
  237. package/dist/collections/operations/local/index.d.ts +13 -13
  238. package/dist/collections/operations/local/index.d.ts.map +1 -1
  239. package/dist/collections/operations/local/index.js +20 -35
  240. package/dist/collections/operations/local/restoreVersion.d.ts +2 -3
  241. package/dist/collections/operations/local/restoreVersion.d.ts.map +1 -1
  242. package/dist/collections/operations/local/restoreVersion.js +8 -18
  243. package/dist/collections/operations/local/update.d.ts +4 -5
  244. package/dist/collections/operations/local/update.d.ts.map +1 -1
  245. package/dist/collections/operations/local/update.js +12 -27
  246. package/dist/collections/operations/restoreVersion.d.ts +2 -2
  247. package/dist/collections/operations/restoreVersion.d.ts.map +1 -1
  248. package/dist/collections/operations/restoreVersion.js +26 -41
  249. package/dist/collections/operations/update.d.ts +7 -8
  250. package/dist/collections/operations/update.d.ts.map +1 -1
  251. package/dist/collections/operations/update.js +43 -58
  252. package/dist/collections/operations/updateByID.d.ts +9 -9
  253. package/dist/collections/operations/updateByID.d.ts.map +1 -1
  254. package/dist/collections/operations/updateByID.js +44 -59
  255. package/dist/collections/operations/utils.d.ts +12 -12
  256. package/dist/collections/operations/utils.d.ts.map +1 -1
  257. package/dist/collections/operations/utils.js +3 -12
  258. package/dist/config/build.d.ts +1 -1
  259. package/dist/config/build.d.ts.map +1 -1
  260. package/dist/config/build.js +9 -15
  261. package/dist/config/createClientConfig.d.ts +1243 -3
  262. package/dist/config/createClientConfig.d.ts.map +1 -1
  263. package/dist/config/createClientConfig.js +107 -72
  264. package/dist/config/defaults.d.ts +1 -1
  265. package/dist/config/defaults.d.ts.map +1 -1
  266. package/dist/config/defaults.js +4 -19
  267. package/dist/config/find.d.ts +1 -2
  268. package/dist/config/find.d.ts.map +1 -1
  269. package/dist/config/find.js +18 -34
  270. package/dist/config/load.d.ts +2 -2
  271. package/dist/config/load.d.ts.map +1 -1
  272. package/dist/config/load.js +17 -30
  273. package/dist/config/sanitize.d.ts +1 -1
  274. package/dist/config/sanitize.d.ts.map +1 -1
  275. package/dist/config/sanitize.js +25 -40
  276. package/dist/config/schema.d.ts.map +1 -1
  277. package/dist/config/schema.js +116 -133
  278. package/dist/config/shared/adminViewSchema.js +9 -24
  279. package/dist/config/shared/componentSchema.js +21 -50
  280. package/dist/config/types.d.ts +28 -34
  281. package/dist/config/types.d.ts.map +1 -1
  282. package/dist/config/types.js +9 -21
  283. package/dist/config/validate.d.ts +1 -1
  284. package/dist/config/validate.d.ts.map +1 -1
  285. package/dist/config/validate.js +15 -71
  286. package/dist/database/combineQueries.d.ts +1 -1
  287. package/dist/database/combineQueries.d.ts.map +1 -1
  288. package/dist/database/combineQueries.js +4 -14
  289. package/dist/database/createDatabaseAdapter.d.ts +1 -1
  290. package/dist/database/createDatabaseAdapter.d.ts.map +1 -1
  291. package/dist/database/createDatabaseAdapter.js +14 -24
  292. package/dist/database/flattenWhereToOperators.d.ts +1 -1
  293. package/dist/database/flattenWhereToOperators.d.ts.map +1 -1
  294. package/dist/database/flattenWhereToOperators.js +2 -12
  295. package/dist/database/getLocalizedPaths.d.ts +3 -3
  296. package/dist/database/getLocalizedPaths.d.ts.map +1 -1
  297. package/dist/database/getLocalizedPaths.js +7 -22
  298. package/dist/database/migrations/createMigration.d.ts +1 -1
  299. package/dist/database/migrations/createMigration.d.ts.map +1 -1
  300. package/dist/database/migrations/createMigration.js +7 -22
  301. package/dist/database/migrations/getMigrations.d.ts +2 -2
  302. package/dist/database/migrations/getMigrations.d.ts.map +1 -1
  303. package/dist/database/migrations/getMigrations.js +4 -12
  304. package/dist/database/migrations/migrate.d.ts +1 -1
  305. package/dist/database/migrations/migrate.d.ts.map +1 -1
  306. package/dist/database/migrations/migrate.js +12 -22
  307. package/dist/database/migrations/migrateDown.d.ts +1 -1
  308. package/dist/database/migrations/migrateDown.d.ts.map +1 -1
  309. package/dist/database/migrations/migrateDown.js +12 -22
  310. package/dist/database/migrations/migrateRefresh.d.ts +1 -1
  311. package/dist/database/migrations/migrateRefresh.d.ts.map +1 -1
  312. package/dist/database/migrations/migrateRefresh.js +16 -24
  313. package/dist/database/migrations/migrateReset.d.ts +1 -1
  314. package/dist/database/migrations/migrateReset.d.ts.map +1 -1
  315. package/dist/database/migrations/migrateReset.js +12 -22
  316. package/dist/database/migrations/migrateStatus.d.ts +1 -1
  317. package/dist/database/migrations/migrateStatus.d.ts.map +1 -1
  318. package/dist/database/migrations/migrateStatus.js +8 -18
  319. package/dist/database/migrations/migrationTemplate.js +2 -12
  320. package/dist/database/migrations/migrationsCollection.d.ts +1 -1
  321. package/dist/database/migrations/migrationsCollection.d.ts.map +1 -1
  322. package/dist/database/migrations/migrationsCollection.js +2 -12
  323. package/dist/database/migrations/readMigrationFiles.d.ts +2 -2
  324. package/dist/database/migrations/readMigrationFiles.d.ts.map +1 -1
  325. package/dist/database/migrations/readMigrationFiles.js +17 -25
  326. package/dist/database/queryValidation/types.d.ts +2 -2
  327. package/dist/database/queryValidation/types.d.ts.map +1 -1
  328. package/dist/database/queryValidation/types.js +2 -5
  329. package/dist/database/queryValidation/validateQueryPaths.d.ts +5 -5
  330. package/dist/database/queryValidation/validateQueryPaths.d.ts.map +1 -1
  331. package/dist/database/queryValidation/validateQueryPaths.js +13 -28
  332. package/dist/database/queryValidation/validateSearchParams.d.ts +5 -5
  333. package/dist/database/queryValidation/validateSearchParams.d.ts.map +1 -1
  334. package/dist/database/queryValidation/validateSearchParams.js +17 -25
  335. package/dist/database/types.d.ts +11 -9
  336. package/dist/database/types.d.ts.map +1 -1
  337. package/dist/database/types.js +2 -5
  338. package/dist/email/build.d.ts +2 -2
  339. package/dist/email/build.d.ts.map +1 -1
  340. package/dist/email/build.js +11 -26
  341. package/dist/email/defaults.d.ts +1 -1
  342. package/dist/email/defaults.d.ts.map +1 -1
  343. package/dist/email/defaults.js +2 -12
  344. package/dist/email/mockHandler.d.ts +2 -2
  345. package/dist/email/mockHandler.d.ts.map +1 -1
  346. package/dist/email/mockHandler.js +8 -23
  347. package/dist/email/sendEmail.js +2 -12
  348. package/dist/email/types.js +2 -5
  349. package/dist/errors/APIError.js +4 -19
  350. package/dist/errors/AuthenticationError.d.ts +1 -1
  351. package/dist/errors/AuthenticationError.d.ts.map +1 -1
  352. package/dist/errors/AuthenticationError.js +7 -22
  353. package/dist/errors/DuplicateCollection.d.ts +1 -1
  354. package/dist/errors/DuplicateCollection.d.ts.map +1 -1
  355. package/dist/errors/DuplicateCollection.js +4 -19
  356. package/dist/errors/DuplicateFieldName.d.ts +1 -1
  357. package/dist/errors/DuplicateFieldName.d.ts.map +1 -1
  358. package/dist/errors/DuplicateFieldName.js +4 -19
  359. package/dist/errors/DuplicateGlobal.d.ts +2 -2
  360. package/dist/errors/DuplicateGlobal.d.ts.map +1 -1
  361. package/dist/errors/DuplicateGlobal.js +4 -19
  362. package/dist/errors/ErrorDeletingFile.d.ts +1 -1
  363. package/dist/errors/ErrorDeletingFile.d.ts.map +1 -1
  364. package/dist/errors/ErrorDeletingFile.js +7 -22
  365. package/dist/errors/FileUploadError.d.ts +1 -1
  366. package/dist/errors/FileUploadError.d.ts.map +1 -1
  367. package/dist/errors/FileUploadError.js +7 -22
  368. package/dist/errors/Forbidden.d.ts +1 -1
  369. package/dist/errors/Forbidden.d.ts.map +1 -1
  370. package/dist/errors/Forbidden.js +7 -22
  371. package/dist/errors/InvalidConfiguration.d.ts +1 -1
  372. package/dist/errors/InvalidConfiguration.d.ts.map +1 -1
  373. package/dist/errors/InvalidConfiguration.js +6 -21
  374. package/dist/errors/InvalidFieldName.d.ts +2 -2
  375. package/dist/errors/InvalidFieldName.d.ts.map +1 -1
  376. package/dist/errors/InvalidFieldName.js +4 -19
  377. package/dist/errors/InvalidFieldRelationship.d.ts +2 -2
  378. package/dist/errors/InvalidFieldRelationship.d.ts.map +1 -1
  379. package/dist/errors/InvalidFieldRelationship.js +4 -19
  380. package/dist/errors/InvalidSchema.d.ts +1 -1
  381. package/dist/errors/InvalidSchema.d.ts.map +1 -1
  382. package/dist/errors/InvalidSchema.js +6 -21
  383. package/dist/errors/LockedAuth.d.ts +1 -1
  384. package/dist/errors/LockedAuth.d.ts.map +1 -1
  385. package/dist/errors/LockedAuth.js +7 -22
  386. package/dist/errors/MissingCollectionLabel.d.ts +1 -1
  387. package/dist/errors/MissingCollectionLabel.d.ts.map +1 -1
  388. package/dist/errors/MissingCollectionLabel.js +4 -19
  389. package/dist/errors/MissingFieldInputOptions.d.ts +2 -2
  390. package/dist/errors/MissingFieldInputOptions.d.ts.map +1 -1
  391. package/dist/errors/MissingFieldInputOptions.js +4 -19
  392. package/dist/errors/MissingFieldType.d.ts +2 -2
  393. package/dist/errors/MissingFieldType.d.ts.map +1 -1
  394. package/dist/errors/MissingFieldType.js +6 -21
  395. package/dist/errors/MissingFile.d.ts +1 -1
  396. package/dist/errors/MissingFile.d.ts.map +1 -1
  397. package/dist/errors/MissingFile.js +7 -22
  398. package/dist/errors/NotFound.d.ts +1 -1
  399. package/dist/errors/NotFound.d.ts.map +1 -1
  400. package/dist/errors/NotFound.js +7 -22
  401. package/dist/errors/QueryError.d.ts +1 -1
  402. package/dist/errors/QueryError.d.ts.map +1 -1
  403. package/dist/errors/QueryError.js +6 -21
  404. package/dist/errors/TimestampsRequired.d.ts +2 -2
  405. package/dist/errors/TimestampsRequired.d.ts.map +1 -1
  406. package/dist/errors/TimestampsRequired.js +4 -19
  407. package/dist/errors/UnathorizedError.d.ts +1 -1
  408. package/dist/errors/UnathorizedError.d.ts.map +1 -1
  409. package/dist/errors/UnathorizedError.js +7 -22
  410. package/dist/errors/ValidationError.d.ts +1 -1
  411. package/dist/errors/ValidationError.d.ts.map +1 -1
  412. package/dist/errors/ValidationError.js +8 -23
  413. package/dist/errors/index.d.ts +19 -19
  414. package/dist/errors/index.d.ts.map +1 -1
  415. package/dist/errors/index.js +20 -94
  416. package/dist/errors/types.d.ts +1 -1
  417. package/dist/errors/types.d.ts.map +1 -1
  418. package/dist/errors/types.js +2 -19
  419. package/dist/exports/auth.d.ts +5 -5
  420. package/dist/exports/auth.d.ts.map +1 -1
  421. package/dist/exports/auth.js +5 -44
  422. package/dist/exports/components/utilities.js +0 -1
  423. package/dist/exports/config.d.ts +10 -10
  424. package/dist/exports/config.d.ts.map +1 -1
  425. package/dist/exports/config.js +10 -59
  426. package/dist/exports/database.d.ts +22 -22
  427. package/dist/exports/database.d.ts.map +1 -1
  428. package/dist/exports/database.js +21 -108
  429. package/dist/exports/errors.d.ts +1 -1
  430. package/dist/exports/errors.d.ts.map +1 -1
  431. package/dist/exports/errors.js +2 -68
  432. package/dist/exports/fields/index.d.ts +2 -2
  433. package/dist/exports/fields/index.d.ts.map +1 -1
  434. package/dist/exports/fields/index.js +3 -26
  435. package/dist/exports/fields/validations.d.ts +1 -1
  436. package/dist/exports/fields/validations.d.ts.map +1 -1
  437. package/dist/exports/fields/validations.js +2 -19
  438. package/dist/exports/operations.d.ts +28 -28
  439. package/dist/exports/operations.d.ts.map +1 -1
  440. package/dist/exports/operations.js +29 -125
  441. package/dist/exports/types.d.ts +11 -11
  442. package/dist/exports/types.d.ts.map +1 -1
  443. package/dist/exports/types.js +4 -74
  444. package/dist/exports/utilities.d.ts +28 -27
  445. package/dist/exports/utilities.d.ts.map +1 -1
  446. package/dist/exports/utilities.js +29 -141
  447. package/dist/exports/versions.d.ts +9 -9
  448. package/dist/exports/versions.d.ts.map +1 -1
  449. package/dist/exports/versions.js +9 -45
  450. package/dist/fields/baseFields/baseBlockFields.d.ts +1 -1
  451. package/dist/fields/baseFields/baseBlockFields.d.ts.map +1 -1
  452. package/dist/fields/baseFields/baseBlockFields.js +6 -16
  453. package/dist/fields/baseFields/baseIDField.d.ts +1 -1
  454. package/dist/fields/baseFields/baseIDField.d.ts.map +1 -1
  455. package/dist/fields/baseFields/baseIDField.js +7 -21
  456. package/dist/fields/config/sanitize.d.ts +2 -2
  457. package/dist/fields/config/sanitize.d.ts.map +1 -1
  458. package/dist/fields/config/sanitize.js +28 -43
  459. package/dist/fields/config/sanitize.spec.js +25 -29
  460. package/dist/fields/config/schema.js +336 -431
  461. package/dist/fields/config/types.d.ts +5 -6
  462. package/dist/fields/config/types.d.ts.map +1 -1
  463. package/dist/fields/config/types.js +15 -69
  464. package/dist/fields/getDefaultValue.d.ts +1 -1
  465. package/dist/fields/getDefaultValue.d.ts.map +1 -1
  466. package/dist/fields/getDefaultValue.js +2 -12
  467. package/dist/fields/hooks/afterChange/index.d.ts +3 -3
  468. package/dist/fields/hooks/afterChange/index.d.ts.map +1 -1
  469. package/dist/fields/hooks/afterChange/index.js +6 -16
  470. package/dist/fields/hooks/afterChange/promise.d.ts +4 -4
  471. package/dist/fields/hooks/afterChange/promise.d.ts.map +1 -1
  472. package/dist/fields/hooks/afterChange/promise.js +14 -22
  473. package/dist/fields/hooks/afterChange/traverseFields.d.ts +4 -4
  474. package/dist/fields/hooks/afterChange/traverseFields.d.ts.map +1 -1
  475. package/dist/fields/hooks/afterChange/traverseFields.js +4 -14
  476. package/dist/fields/hooks/afterRead/index.d.ts +3 -3
  477. package/dist/fields/hooks/afterRead/index.d.ts.map +1 -1
  478. package/dist/fields/hooks/afterRead/index.js +6 -16
  479. package/dist/fields/hooks/afterRead/promise.d.ts +4 -4
  480. package/dist/fields/hooks/afterRead/promise.d.ts.map +1 -1
  481. package/dist/fields/hooks/afterRead/promise.js +28 -38
  482. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.d.ts +2 -2
  483. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.d.ts.map +1 -1
  484. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.js +5 -15
  485. package/dist/fields/hooks/afterRead/traverseFields.d.ts +4 -4
  486. package/dist/fields/hooks/afterRead/traverseFields.d.ts.map +1 -1
  487. package/dist/fields/hooks/afterRead/traverseFields.js +4 -14
  488. package/dist/fields/hooks/beforeChange/cloneDataFromOriginalDoc.js +2 -12
  489. package/dist/fields/hooks/beforeChange/getExistingRowDoc.js +2 -12
  490. package/dist/fields/hooks/beforeChange/index.d.ts +3 -4
  491. package/dist/fields/hooks/beforeChange/index.d.ts.map +1 -1
  492. package/dist/fields/hooks/beforeChange/index.js +8 -18
  493. package/dist/fields/hooks/beforeChange/promise.d.ts +4 -5
  494. package/dist/fields/hooks/beforeChange/promise.d.ts.map +1 -1
  495. package/dist/fields/hooks/beforeChange/promise.js +26 -35
  496. package/dist/fields/hooks/beforeChange/traverseFields.d.ts +4 -5
  497. package/dist/fields/hooks/beforeChange/traverseFields.d.ts.map +1 -1
  498. package/dist/fields/hooks/beforeChange/traverseFields.js +4 -14
  499. package/dist/fields/hooks/beforeValidate/index.d.ts +3 -3
  500. package/dist/fields/hooks/beforeValidate/index.d.ts.map +1 -1
  501. package/dist/fields/hooks/beforeValidate/index.js +6 -16
  502. package/dist/fields/hooks/beforeValidate/promise.d.ts +4 -4
  503. package/dist/fields/hooks/beforeValidate/promise.d.ts.map +1 -1
  504. package/dist/fields/hooks/beforeValidate/promise.js +30 -39
  505. package/dist/fields/hooks/beforeValidate/traverseFields.d.ts +4 -4
  506. package/dist/fields/hooks/beforeValidate/traverseFields.d.ts.map +1 -1
  507. package/dist/fields/hooks/beforeValidate/traverseFields.js +4 -14
  508. package/dist/fields/mergeBaseFields.d.ts +1 -1
  509. package/dist/fields/mergeBaseFields.d.ts.map +1 -1
  510. package/dist/fields/mergeBaseFields.js +8 -23
  511. package/dist/fields/sortableFieldTypes.js +2 -12
  512. package/dist/fields/validations.d.ts +6 -6
  513. package/dist/fields/validations.d.ts.map +1 -1
  514. package/dist/fields/validations.js +31 -97
  515. package/dist/fields/validations.spec.js +93 -87
  516. package/dist/globals/config/sanitize.d.ts +2 -2
  517. package/dist/globals/config/sanitize.d.ts.map +1 -1
  518. package/dist/globals/config/sanitize.js +23 -34
  519. package/dist/globals/config/schema.js +55 -70
  520. package/dist/globals/config/types.d.ts +11 -11
  521. package/dist/globals/config/types.d.ts.map +1 -1
  522. package/dist/globals/config/types.js +2 -5
  523. package/dist/globals/operations/docAccess.d.ts +3 -3
  524. package/dist/globals/operations/docAccess.d.ts.map +1 -1
  525. package/dist/globals/operations/docAccess.js +12 -22
  526. package/dist/globals/operations/findOne.d.ts +2 -2
  527. package/dist/globals/operations/findOne.d.ts.map +1 -1
  528. package/dist/globals/operations/findOne.js +14 -29
  529. package/dist/globals/operations/findVersionByID.d.ts +3 -3
  530. package/dist/globals/operations/findVersionByID.d.ts.map +1 -1
  531. package/dist/globals/operations/findVersionByID.js +18 -33
  532. package/dist/globals/operations/findVersions.d.ts +4 -5
  533. package/dist/globals/operations/findVersions.d.ts.map +1 -1
  534. package/dist/globals/operations/findVersions.js +20 -35
  535. package/dist/globals/operations/local/findOne.d.ts +2 -4
  536. package/dist/globals/operations/local/findOne.d.ts.map +1 -1
  537. package/dist/globals/operations/local/findOne.js +11 -21
  538. package/dist/globals/operations/local/findVersionByID.d.ts +3 -5
  539. package/dist/globals/operations/local/findVersionByID.d.ts.map +1 -1
  540. package/dist/globals/operations/local/findVersionByID.js +9 -19
  541. package/dist/globals/operations/local/findVersions.d.ts +4 -6
  542. package/dist/globals/operations/local/findVersions.d.ts.map +1 -1
  543. package/dist/globals/operations/local/findVersions.js +9 -19
  544. package/dist/globals/operations/local/index.d.ts +5 -5
  545. package/dist/globals/operations/local/index.d.ts.map +1 -1
  546. package/dist/globals/operations/local/index.js +12 -27
  547. package/dist/globals/operations/local/restoreVersion.d.ts +2 -4
  548. package/dist/globals/operations/local/restoreVersion.d.ts.map +1 -1
  549. package/dist/globals/operations/local/restoreVersion.js +9 -19
  550. package/dist/globals/operations/local/update.d.ts +2 -4
  551. package/dist/globals/operations/local/update.d.ts.map +1 -1
  552. package/dist/globals/operations/local/update.js +9 -19
  553. package/dist/globals/operations/restoreVersion.d.ts +3 -3
  554. package/dist/globals/operations/restoreVersion.d.ts.map +1 -1
  555. package/dist/globals/operations/restoreVersion.js +16 -31
  556. package/dist/globals/operations/update.d.ts +9 -9
  557. package/dist/globals/operations/update.d.ts.map +1 -1
  558. package/dist/globals/operations/update.js +23 -38
  559. package/dist/index.d.ts +29 -29
  560. package/dist/index.d.ts.map +1 -1
  561. package/dist/index.js +50 -71
  562. package/dist/localization/middleware.js +2 -12
  563. package/dist/localization/sanitizeFallbackLocale.js +2 -12
  564. package/dist/preferences/deleteUserPreferences.d.ts +3 -3
  565. package/dist/preferences/deleteUserPreferences.d.ts.map +1 -1
  566. package/dist/preferences/deleteUserPreferences.js +2 -12
  567. package/dist/preferences/operations/delete.d.ts +2 -2
  568. package/dist/preferences/operations/delete.d.ts.map +1 -1
  569. package/dist/preferences/operations/delete.js +10 -25
  570. package/dist/preferences/operations/findOne.d.ts +2 -2
  571. package/dist/preferences/operations/findOne.d.ts.map +1 -1
  572. package/dist/preferences/operations/findOne.js +2 -12
  573. package/dist/preferences/operations/update.d.ts +1 -1
  574. package/dist/preferences/operations/update.d.ts.map +1 -1
  575. package/dist/preferences/operations/update.js +8 -23
  576. package/dist/preferences/preferencesCollection.d.ts +2 -2
  577. package/dist/preferences/preferencesCollection.d.ts.map +1 -1
  578. package/dist/preferences/preferencesCollection.js +8 -18
  579. package/dist/preferences/requestHandlers/delete.d.ts +1 -1
  580. package/dist/preferences/requestHandlers/delete.d.ts.map +1 -1
  581. package/dist/preferences/requestHandlers/delete.js +6 -21
  582. package/dist/preferences/requestHandlers/findOne.d.ts +1 -1
  583. package/dist/preferences/requestHandlers/findOne.d.ts.map +1 -1
  584. package/dist/preferences/requestHandlers/findOne.js +6 -21
  585. package/dist/preferences/requestHandlers/update.d.ts +1 -1
  586. package/dist/preferences/requestHandlers/update.d.ts.map +1 -1
  587. package/dist/preferences/requestHandlers/update.js +6 -21
  588. package/dist/preferences/types.d.ts +2 -2
  589. package/dist/preferences/types.d.ts.map +1 -1
  590. package/dist/preferences/types.js +2 -5
  591. package/dist/translations/extractTranslations.js +4 -14
  592. package/dist/translations/getLocalI18n.d.ts +1 -1
  593. package/dist/translations/getLocalI18n.d.ts.map +1 -1
  594. package/dist/translations/getLocalI18n.js +5 -15
  595. package/dist/types/constants.js +2 -12
  596. package/dist/types/index.d.ts +8 -6
  597. package/dist/types/index.d.ts.map +1 -1
  598. package/dist/types/index.js +2 -12
  599. package/dist/uploads/canResizeImage.js +2 -12
  600. package/dist/uploads/cropImage.d.ts +3 -7
  601. package/dist/uploads/cropImage.d.ts.map +1 -1
  602. package/dist/uploads/cropImage.js +4 -28
  603. package/dist/uploads/deleteAssociatedFiles.d.ts +4 -4
  604. package/dist/uploads/deleteAssociatedFiles.d.ts.map +1 -1
  605. package/dist/uploads/deleteAssociatedFiles.js +11 -26
  606. package/dist/uploads/docWithFilenameExists.d.ts +1 -1
  607. package/dist/uploads/docWithFilenameExists.d.ts.map +1 -1
  608. package/dist/uploads/docWithFilenameExists.js +2 -12
  609. package/dist/uploads/fileExists.js +4 -19
  610. package/dist/uploads/formatFilesize.js +2 -12
  611. package/dist/uploads/generateFileData.d.ts +4 -4
  612. package/dist/uploads/generateFileData.d.ts.map +1 -1
  613. package/dist/uploads/generateFileData.js +42 -55
  614. package/dist/uploads/getBaseFields.d.ts +3 -3
  615. package/dist/uploads/getBaseFields.d.ts.map +1 -1
  616. package/dist/uploads/getBaseFields.js +6 -16
  617. package/dist/uploads/getExternalFile.d.ts +2 -2
  618. package/dist/uploads/getExternalFile.d.ts.map +1 -1
  619. package/dist/uploads/getExternalFile.js +5 -15
  620. package/dist/uploads/getFileByPath.d.ts +1 -1
  621. package/dist/uploads/getFileByPath.d.ts.map +1 -1
  622. package/dist/uploads/getFileByPath.js +11 -25
  623. package/dist/uploads/getImageSize.d.ts +3 -3
  624. package/dist/uploads/getImageSize.d.ts.map +1 -1
  625. package/dist/uploads/getImageSize.js +14 -22
  626. package/dist/uploads/getSafeFilename.d.ts +1 -1
  627. package/dist/uploads/getSafeFilename.d.ts.map +1 -1
  628. package/dist/uploads/getSafeFilename.js +8 -23
  629. package/dist/uploads/imageResizer.d.ts +6 -5
  630. package/dist/uploads/imageResizer.d.ts.map +1 -1
  631. package/dist/uploads/imageResizer.js +29 -44
  632. package/dist/uploads/isImage.js +2 -12
  633. package/dist/uploads/mimeTypeValidator.d.ts +1 -1
  634. package/dist/uploads/mimeTypeValidator.d.ts.map +1 -1
  635. package/dist/uploads/mimeTypeValidator.js +2 -12
  636. package/dist/uploads/mimeTypeValidator.spec.js +11 -15
  637. package/dist/uploads/saveBufferToFile.d.ts +1 -1
  638. package/dist/uploads/saveBufferToFile.js +6 -21
  639. package/dist/uploads/types.d.ts +8 -4
  640. package/dist/uploads/types.d.ts.map +1 -1
  641. package/dist/uploads/types.js +2 -5
  642. package/dist/uploads/unlinkTempFiles.d.ts +3 -3
  643. package/dist/uploads/unlinkTempFiles.d.ts.map +1 -1
  644. package/dist/uploads/unlinkTempFiles.js +9 -22
  645. package/dist/uploads/uploadFiles.d.ts +3 -3
  646. package/dist/uploads/uploadFiles.d.ts.map +1 -1
  647. package/dist/uploads/uploadFiles.js +6 -21
  648. package/dist/utilities/checkDuplicateCollections.d.ts +1 -1
  649. package/dist/utilities/checkDuplicateCollections.d.ts.map +1 -1
  650. package/dist/utilities/checkDuplicateCollections.js +4 -14
  651. package/dist/utilities/combineMerge.js +4 -19
  652. package/dist/utilities/commitTransaction.d.ts +1 -1
  653. package/dist/utilities/commitTransaction.d.ts.map +1 -1
  654. package/dist/utilities/commitTransaction.js +4 -12
  655. package/dist/utilities/configToJSONSchema.d.ts +12 -6
  656. package/dist/utilities/configToJSONSchema.d.ts.map +1 -1
  657. package/dist/utilities/configToJSONSchema.js +82 -97
  658. package/dist/utilities/configToJSONSchema.spec.js +5 -9
  659. package/dist/utilities/convertData.js +3 -23
  660. package/dist/utilities/createArrayFromCommaDelineated.js +2 -12
  661. package/dist/utilities/createLocalReq.d.ts +3 -3
  662. package/dist/utilities/createLocalReq.d.ts.map +1 -1
  663. package/dist/utilities/createLocalReq.js +7 -16
  664. package/dist/utilities/deepCopyObject.js +2 -12
  665. package/dist/utilities/deepMerge.js +2 -12
  666. package/dist/utilities/fieldSchemaToJSON.d.ts +2 -2
  667. package/dist/utilities/fieldSchemaToJSON.d.ts.map +1 -1
  668. package/dist/utilities/fieldSchemaToJSON.js +2 -12
  669. package/dist/utilities/flattenTopLevelFields.d.ts +1 -1
  670. package/dist/utilities/flattenTopLevelFields.d.ts.map +1 -1
  671. package/dist/utilities/flattenTopLevelFields.js +6 -16
  672. package/dist/utilities/formatLabels.d.ts +2 -1
  673. package/dist/utilities/formatLabels.d.ts.map +1 -1
  674. package/dist/utilities/formatLabels.js +10 -70
  675. package/dist/utilities/formatLabels.spec.js +8 -12
  676. package/dist/utilities/getCSSVariable.js +2 -12
  677. package/dist/utilities/getCollectionIDFieldTypes.d.ts +13 -0
  678. package/dist/utilities/getCollectionIDFieldTypes.d.ts.map +1 -0
  679. package/dist/utilities/getCollectionIDFieldTypes.js +16 -0
  680. package/dist/utilities/getEntityPolicies.d.ts +4 -4
  681. package/dist/utilities/getEntityPolicies.d.ts.map +1 -1
  682. package/dist/utilities/getEntityPolicies.js +4 -14
  683. package/dist/utilities/getIDType.d.ts +2 -2
  684. package/dist/utilities/getIDType.d.ts.map +1 -1
  685. package/dist/utilities/getIDType.js +2 -12
  686. package/dist/utilities/getObjectDotNotation.js +2 -12
  687. package/dist/utilities/getUniqueListBy.js +2 -12
  688. package/dist/utilities/initTransaction.d.ts +1 -1
  689. package/dist/utilities/initTransaction.d.ts.map +1 -1
  690. package/dist/utilities/initTransaction.js +5 -12
  691. package/dist/utilities/isEntityHidden.d.ts +2 -2
  692. package/dist/utilities/isEntityHidden.d.ts.map +1 -1
  693. package/dist/utilities/isEntityHidden.js +2 -12
  694. package/dist/utilities/isNumber.js +2 -12
  695. package/dist/utilities/isPlainObject.d.ts +2 -0
  696. package/dist/utilities/isPlainObject.d.ts.map +1 -0
  697. package/dist/utilities/isPlainObject.js +25 -0
  698. package/dist/utilities/isValidID.d.ts.map +1 -1
  699. package/dist/utilities/isValidID.js +6 -20
  700. package/dist/utilities/isolateObjectProperty.js +2 -12
  701. package/dist/utilities/killTransaction.d.ts +1 -1
  702. package/dist/utilities/killTransaction.d.ts.map +1 -1
  703. package/dist/utilities/killTransaction.js +4 -12
  704. package/dist/utilities/logger.d.ts +6 -6
  705. package/dist/utilities/logger.d.ts.map +1 -1
  706. package/dist/utilities/logger.js +18 -37
  707. package/dist/utilities/mapAsync.js +2 -12
  708. package/dist/utilities/overwriteMerge.js +2 -12
  709. package/dist/utilities/parseCookies.js +4 -14
  710. package/dist/utilities/sanitizeInternalFields.js +2 -12
  711. package/dist/utilities/setsAreEqual.js +2 -12
  712. package/dist/utilities/telemetry/events/adminInit.d.ts +2 -2
  713. package/dist/utilities/telemetry/events/adminInit.d.ts.map +1 -1
  714. package/dist/utilities/telemetry/events/adminInit.js +7 -17
  715. package/dist/utilities/telemetry/events/serverInit.d.ts +1 -1
  716. package/dist/utilities/telemetry/events/serverInit.d.ts.map +1 -1
  717. package/dist/utilities/telemetry/events/serverInit.js +4 -14
  718. package/dist/utilities/telemetry/index.d.ts +3 -3
  719. package/dist/utilities/telemetry/index.d.ts.map +1 -1
  720. package/dist/utilities/telemetry/index.js +23 -41
  721. package/dist/utilities/telemetry/oneWayHash.js +4 -14
  722. package/dist/utilities/timestamp.js +2 -12
  723. package/dist/utilities/toKebabCase.js +2 -12
  724. package/dist/utilities/wait.js +2 -12
  725. package/dist/utilities/wordBoundariesRegex.js +3 -13
  726. package/dist/versions/baseFields.d.ts +1 -1
  727. package/dist/versions/baseFields.d.ts.map +1 -1
  728. package/dist/versions/baseFields.js +7 -25
  729. package/dist/versions/buildCollectionFields.d.ts +2 -2
  730. package/dist/versions/buildCollectionFields.d.ts.map +1 -1
  731. package/dist/versions/buildCollectionFields.js +2 -12
  732. package/dist/versions/buildGlobalFields.d.ts +2 -2
  733. package/dist/versions/buildGlobalFields.d.ts.map +1 -1
  734. package/dist/versions/buildGlobalFields.js +12 -22
  735. package/dist/versions/deleteCollectionVersions.d.ts +3 -3
  736. package/dist/versions/deleteCollectionVersions.d.ts.map +1 -1
  737. package/dist/versions/deleteCollectionVersions.js +2 -12
  738. package/dist/versions/drafts/appendVersionToQueryKey.d.ts +1 -1
  739. package/dist/versions/drafts/appendVersionToQueryKey.d.ts.map +1 -1
  740. package/dist/versions/drafts/appendVersionToQueryKey.js +2 -12
  741. package/dist/versions/drafts/getQueryDraftsSort.js +2 -12
  742. package/dist/versions/drafts/replaceWithDraftIfAvailable.d.ts +4 -4
  743. package/dist/versions/drafts/replaceWithDraftIfAvailable.d.ts.map +1 -1
  744. package/dist/versions/drafts/replaceWithDraftIfAvailable.js +12 -27
  745. package/dist/versions/enforceMaxVersions.d.ts +3 -3
  746. package/dist/versions/enforceMaxVersions.d.ts.map +1 -1
  747. package/dist/versions/enforceMaxVersions.js +2 -12
  748. package/dist/versions/getLatestCollectionVersion.d.ts +3 -3
  749. package/dist/versions/getLatestCollectionVersion.d.ts.map +1 -1
  750. package/dist/versions/getLatestCollectionVersion.js +4 -14
  751. package/dist/versions/getLatestGlobalVersion.d.ts +3 -3
  752. package/dist/versions/getLatestGlobalVersion.d.ts.map +1 -1
  753. package/dist/versions/getLatestGlobalVersion.js +5 -15
  754. package/dist/versions/getVersionsModelName.d.ts +2 -2
  755. package/dist/versions/getVersionsModelName.d.ts.map +1 -1
  756. package/dist/versions/getVersionsModelName.js +2 -12
  757. package/dist/versions/saveVersion.d.ts +4 -4
  758. package/dist/versions/saveVersion.d.ts.map +1 -1
  759. package/dist/versions/saveVersion.js +8 -23
  760. package/dist/versions/types.js +2 -5
  761. package/errors.d.ts +1 -1
  762. package/errors.js +2 -68
  763. package/graphql.d.ts +3 -0
  764. package/graphql.js +27 -0
  765. package/operations.d.ts +28 -28
  766. package/operations.js +29 -125
  767. package/package.json +10 -7
  768. package/types.d.ts +11 -11
  769. package/types.js +4 -74
  770. package/utilities.d.ts +28 -27
  771. package/utilities.js +29 -141
  772. package/versions.d.ts +9 -9
  773. package/versions.js +9 -45
  774. package/.eslintrc.js +0 -58
  775. package/dist/bundlers/mocks/db-mongodb.js +0 -3
  776. package/dist/bundlers/mocks/db-postgres.js +0 -13
  777. package/dist/bundlers/mocks/dotENV.js +0 -15
  778. package/dist/bundlers/mocks/emptyModule.js +0 -13
  779. package/dist/bundlers/mocks/fileMock.js +0 -13
  780. package/dist/bundlers/types.d.ts +0 -8
  781. package/dist/bundlers/types.d.ts.map +0 -1
  782. package/dist/bundlers/types.js +0 -6
  783. package/dist/config/clientFiles.d.ts +0 -2
  784. package/dist/config/clientFiles.d.ts.map +0 -1
  785. package/dist/config/clientFiles.js +0 -23
  786. package/dist/express/middleware/errorHandler.d.ts +0 -2
  787. package/dist/express/middleware/errorHandler.d.ts.map +0 -1
  788. package/dist/express/middleware/errorHandler.js +0 -3
  789. package/dist/express/middleware/index.d.ts +0 -2
  790. package/dist/express/middleware/index.d.ts.map +0 -1
  791. package/dist/express/middleware/index.js +0 -3
  792. package/dist/globals/config/build.d.ts +0 -2
  793. package/dist/globals/config/build.d.ts.map +0 -1
  794. package/dist/globals/config/build.js +0 -3
  795. package/dist/globals/graphql/resolvers/docAccess.d.ts +0 -2
  796. package/dist/globals/graphql/resolvers/docAccess.d.ts.map +0 -1
  797. package/dist/globals/graphql/resolvers/docAccess.js +0 -3
@@ -1,560 +1,465 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- function _export(target, all) {
6
- for(var name in all)Object.defineProperty(target, name, {
7
- enumerable: true,
8
- get: all[name]
9
- });
10
- }
11
- _export(exports, {
12
- array: function() {
13
- return array;
14
- },
15
- baseAdminComponentFields: function() {
16
- return baseAdminComponentFields;
17
- },
18
- baseAdminFields: function() {
19
- return baseAdminFields;
20
- },
21
- baseField: function() {
22
- return baseField;
23
- },
24
- blocks: function() {
25
- return blocks;
26
- },
27
- checkbox: function() {
28
- return checkbox;
29
- },
30
- code: function() {
31
- return code;
32
- },
33
- collapsible: function() {
34
- return collapsible;
35
- },
36
- date: function() {
37
- return date;
38
- },
39
- default: function() {
40
- return _default;
41
- },
42
- email: function() {
43
- return email;
44
- },
45
- group: function() {
46
- return group;
47
- },
48
- idField: function() {
49
- return idField;
50
- },
51
- json: function() {
52
- return json;
53
- },
54
- number: function() {
55
- return number;
56
- },
57
- point: function() {
58
- return point;
59
- },
60
- radio: function() {
61
- return radio;
62
- },
63
- relationship: function() {
64
- return relationship;
65
- },
66
- richText: function() {
67
- return richText;
68
- },
69
- row: function() {
70
- return row;
71
- },
72
- select: function() {
73
- return select;
74
- },
75
- tabs: function() {
76
- return tabs;
77
- },
78
- text: function() {
79
- return text;
80
- },
81
- textarea: function() {
82
- return textarea;
83
- },
84
- ui: function() {
85
- return ui;
86
- },
87
- upload: function() {
88
- return upload;
89
- }
90
- });
91
- const _joi = /*#__PURE__*/ _interop_require_default(require("joi"));
92
- const _componentSchema = require("../../config/shared/componentSchema");
93
- function _interop_require_default(obj) {
94
- return obj && obj.__esModule ? obj : {
95
- default: obj
96
- };
97
- }
98
- const baseAdminComponentFields = _joi.default.object().keys({
99
- Cell: _componentSchema.componentSchema,
100
- Field: _componentSchema.componentSchema,
101
- Filter: _componentSchema.componentSchema
1
+ import joi from 'joi';
2
+ import { componentSchema } from '../../config/shared/componentSchema.js';
3
+ export const baseAdminComponentFields = joi.object().keys({
4
+ Cell: componentSchema,
5
+ Field: componentSchema,
6
+ Filter: componentSchema
102
7
  }).default({});
103
- const baseAdminFields = _joi.default.object().keys({
104
- className: _joi.default.string(),
8
+ export const baseAdminFields = joi.object().keys({
9
+ className: joi.string(),
105
10
  components: baseAdminComponentFields,
106
- condition: _joi.default.func(),
107
- description: _joi.default.alternatives().try(_joi.default.string(), _joi.default.object().pattern(_joi.default.string(), [
108
- _joi.default.string()
109
- ]), _componentSchema.componentSchema),
110
- disableBulkEdit: _joi.default.boolean().default(false),
111
- disabled: _joi.default.boolean().default(false),
112
- hidden: _joi.default.boolean().default(false),
113
- initCollapsed: _joi.default.boolean().default(false),
114
- position: _joi.default.string().valid('sidebar'),
115
- readOnly: _joi.default.boolean().default(false),
116
- style: _joi.default.object().unknown(),
117
- width: _joi.default.string()
11
+ condition: joi.func(),
12
+ description: joi.alternatives().try(joi.string(), joi.object().pattern(joi.string(), [
13
+ joi.string()
14
+ ]), componentSchema),
15
+ disableBulkEdit: joi.boolean().default(false),
16
+ disabled: joi.boolean().default(false),
17
+ hidden: joi.boolean().default(false),
18
+ initCollapsed: joi.boolean().default(false),
19
+ position: joi.string().valid('sidebar'),
20
+ readOnly: joi.boolean().default(false),
21
+ style: joi.object().unknown(),
22
+ width: joi.string()
118
23
  });
119
- const baseField = _joi.default.object().keys({
120
- access: _joi.default.object().keys({
121
- create: _joi.default.func(),
122
- read: _joi.default.func(),
123
- update: _joi.default.func()
24
+ export const baseField = joi.object().keys({
25
+ access: joi.object().keys({
26
+ create: joi.func(),
27
+ read: joi.func(),
28
+ update: joi.func()
124
29
  }),
125
30
  admin: baseAdminFields.default(),
126
- custom: _joi.default.object().pattern(_joi.default.string(), _joi.default.any()),
127
- hidden: _joi.default.boolean().default(false),
128
- hooks: _joi.default.object().keys({
129
- afterChange: _joi.default.array().items(_joi.default.func()).default([]),
130
- afterRead: _joi.default.array().items(_joi.default.func()).default([]),
131
- beforeChange: _joi.default.array().items(_joi.default.func()).default([]),
132
- beforeValidate: _joi.default.array().items(_joi.default.func()).default([])
31
+ custom: joi.object().pattern(joi.string(), joi.any()),
32
+ hidden: joi.boolean().default(false),
33
+ hooks: joi.object().keys({
34
+ afterChange: joi.array().items(joi.func()).default([]),
35
+ afterRead: joi.array().items(joi.func()).default([]),
36
+ beforeChange: joi.array().items(joi.func()).default([]),
37
+ beforeValidate: joi.array().items(joi.func()).default([])
133
38
  }).default(),
134
- index: _joi.default.boolean().default(false),
135
- label: _joi.default.alternatives().try(_joi.default.object().pattern(_joi.default.string(), [
136
- _joi.default.string()
137
- ]), _joi.default.string(), _joi.default.valid(false)),
138
- localized: _joi.default.boolean().default(false),
139
- required: _joi.default.boolean().default(false),
140
- saveToJWT: _joi.default.alternatives().try(_joi.default.boolean(), _joi.default.string()).default(false),
141
- unique: _joi.default.boolean().default(false),
142
- validate: _joi.default.func()
39
+ index: joi.boolean().default(false),
40
+ label: joi.alternatives().try(joi.object().pattern(joi.string(), [
41
+ joi.string()
42
+ ]), joi.string(), joi.valid(false)),
43
+ localized: joi.boolean().default(false),
44
+ required: joi.boolean().default(false),
45
+ saveToJWT: joi.alternatives().try(joi.boolean(), joi.string()).default(false),
46
+ unique: joi.boolean().default(false),
47
+ validate: joi.func()
143
48
  }).default();
144
- const idField = baseField.keys({
145
- name: _joi.default.string().valid('id'),
146
- localized: _joi.default.invalid(true),
147
- required: _joi.default.not(false, 0).default(true),
148
- type: _joi.default.string().valid('text', 'number')
49
+ export const idField = baseField.keys({
50
+ name: joi.string().valid('id'),
51
+ type: joi.string().valid('text', 'number'),
52
+ localized: joi.invalid(true),
53
+ required: joi.not(false, 0).default(true)
149
54
  });
150
- const text = baseField.keys({
151
- name: _joi.default.string().required(),
55
+ export const text = baseField.keys({
56
+ name: joi.string().required(),
57
+ type: joi.string().valid('text').required(),
152
58
  admin: baseAdminFields.keys({
153
- autoComplete: _joi.default.string(),
59
+ autoComplete: joi.string(),
154
60
  components: baseAdminComponentFields.keys({
155
- Error: _componentSchema.componentSchema,
156
- Label: _componentSchema.componentSchema,
157
- afterInput: _joi.default.array().items(_componentSchema.componentSchema),
158
- beforeInput: _joi.default.array().items(_componentSchema.componentSchema)
61
+ Error: componentSchema,
62
+ Label: componentSchema,
63
+ afterInput: joi.array().items(componentSchema),
64
+ beforeInput: joi.array().items(componentSchema)
159
65
  }),
160
- placeholder: _joi.default.alternatives().try(_joi.default.object().pattern(_joi.default.string(), [
161
- _joi.default.string()
162
- ]), _joi.default.string()),
163
- rtl: _joi.default.boolean()
164
- }),
165
- defaultValue: _joi.default.alternatives().try(_joi.default.string(), _joi.default.func()),
166
- hasMany: _joi.default.boolean().default(false),
167
- maxLength: _joi.default.number(),
168
- maxRows: _joi.default.number().when('hasMany', {
169
- is: _joi.default.not(true),
170
- then: _joi.default.forbidden()
66
+ placeholder: joi.alternatives().try(joi.object().pattern(joi.string(), [
67
+ joi.string()
68
+ ]), joi.string()),
69
+ rtl: joi.boolean()
171
70
  }),
172
- minLength: _joi.default.number(),
173
- minRows: _joi.default.number().when('hasMany', {
174
- is: _joi.default.not(true),
175
- then: _joi.default.forbidden()
71
+ defaultValue: joi.alternatives().try(joi.string(), joi.func()),
72
+ hasMany: joi.boolean().default(false),
73
+ maxLength: joi.number(),
74
+ maxRows: joi.number().when('hasMany', {
75
+ is: joi.not(true),
76
+ then: joi.forbidden()
176
77
  }),
177
- type: _joi.default.string().valid('text').required()
78
+ minLength: joi.number(),
79
+ minRows: joi.number().when('hasMany', {
80
+ is: joi.not(true),
81
+ then: joi.forbidden()
82
+ })
178
83
  });
179
- const number = baseField.keys({
180
- name: _joi.default.string().required(),
84
+ export const number = baseField.keys({
85
+ name: joi.string().required(),
86
+ type: joi.string().valid('number').required(),
181
87
  admin: baseAdminFields.keys({
182
- autoComplete: _joi.default.string(),
88
+ autoComplete: joi.string(),
183
89
  components: baseAdminComponentFields.keys({
184
- Error: _componentSchema.componentSchema,
185
- Label: _componentSchema.componentSchema,
186
- afterInput: _joi.default.array().items(_componentSchema.componentSchema).when('hasMany', {
90
+ Error: componentSchema,
91
+ Label: componentSchema,
92
+ afterInput: joi.array().items(componentSchema).when('hasMany', {
187
93
  not: true,
188
- otherwise: _joi.default.forbidden()
94
+ otherwise: joi.forbidden()
189
95
  }),
190
- beforeInput: _joi.default.array().items(_componentSchema.componentSchema).when('hasMany', {
96
+ beforeInput: joi.array().items(componentSchema).when('hasMany', {
191
97
  not: true,
192
- otherwise: _joi.default.forbidden()
98
+ otherwise: joi.forbidden()
193
99
  })
194
100
  }),
195
- placeholder: _joi.default.string(),
196
- step: _joi.default.number()
101
+ placeholder: joi.string(),
102
+ step: joi.number()
197
103
  }),
198
- defaultValue: _joi.default.alternatives().try(_joi.default.number(), _joi.default.func()),
199
- hasMany: _joi.default.boolean().default(false),
200
- max: _joi.default.number(),
201
- maxRows: _joi.default.number().when('hasMany', {
202
- is: _joi.default.not(true),
203
- then: _joi.default.forbidden()
104
+ defaultValue: joi.alternatives().try(joi.number(), joi.func()),
105
+ hasMany: joi.boolean().default(false),
106
+ max: joi.number(),
107
+ maxRows: joi.number().when('hasMany', {
108
+ is: joi.not(true),
109
+ then: joi.forbidden()
204
110
  }),
205
- min: _joi.default.number(),
206
- minRows: _joi.default.number().when('hasMany', {
207
- is: _joi.default.not(true),
208
- then: _joi.default.forbidden()
209
- }),
210
- type: _joi.default.string().valid('number').required()
111
+ min: joi.number(),
112
+ minRows: joi.number().when('hasMany', {
113
+ is: joi.not(true),
114
+ then: joi.forbidden()
115
+ })
211
116
  });
212
- const textarea = baseField.keys({
213
- name: _joi.default.string().required(),
117
+ export const textarea = baseField.keys({
118
+ name: joi.string().required(),
119
+ type: joi.string().valid('textarea').required(),
214
120
  admin: baseAdminFields.keys({
215
121
  components: baseAdminComponentFields.keys({
216
- Error: _componentSchema.componentSchema,
217
- Label: _componentSchema.componentSchema,
218
- afterInput: _joi.default.array().items(_componentSchema.componentSchema),
219
- beforeInput: _joi.default.array().items(_componentSchema.componentSchema)
122
+ Error: componentSchema,
123
+ Label: componentSchema,
124
+ afterInput: joi.array().items(componentSchema),
125
+ beforeInput: joi.array().items(componentSchema)
220
126
  }),
221
- placeholder: _joi.default.string(),
222
- rows: _joi.default.number(),
223
- rtl: _joi.default.boolean()
127
+ placeholder: joi.string(),
128
+ rows: joi.number(),
129
+ rtl: joi.boolean()
224
130
  }),
225
- defaultValue: _joi.default.alternatives().try(_joi.default.string(), _joi.default.func()),
226
- maxLength: _joi.default.number(),
227
- minLength: _joi.default.number(),
228
- type: _joi.default.string().valid('textarea').required()
131
+ defaultValue: joi.alternatives().try(joi.string(), joi.func()),
132
+ maxLength: joi.number(),
133
+ minLength: joi.number()
229
134
  });
230
- const email = baseField.keys({
231
- name: _joi.default.string().required(),
135
+ export const email = baseField.keys({
136
+ name: joi.string().required(),
137
+ type: joi.string().valid('email').required(),
232
138
  admin: baseAdminFields.keys({
233
- autoComplete: _joi.default.string(),
139
+ autoComplete: joi.string(),
234
140
  components: baseAdminComponentFields.keys({
235
- Error: _componentSchema.componentSchema,
236
- Label: _componentSchema.componentSchema,
237
- afterInput: _joi.default.array().items(_componentSchema.componentSchema),
238
- beforeInput: _joi.default.array().items(_componentSchema.componentSchema)
141
+ Error: componentSchema,
142
+ Label: componentSchema,
143
+ afterInput: joi.array().items(componentSchema),
144
+ beforeInput: joi.array().items(componentSchema)
239
145
  }),
240
- placeholder: _joi.default.string()
146
+ placeholder: joi.string()
241
147
  }),
242
- defaultValue: _joi.default.alternatives().try(_joi.default.string(), _joi.default.func()),
243
- maxLength: _joi.default.number(),
244
- minLength: _joi.default.number(),
245
- type: _joi.default.string().valid('email').required()
148
+ defaultValue: joi.alternatives().try(joi.string(), joi.func()),
149
+ maxLength: joi.number(),
150
+ minLength: joi.number()
246
151
  });
247
- const code = baseField.keys({
248
- name: _joi.default.string().required(),
152
+ export const code = baseField.keys({
153
+ name: joi.string().required(),
154
+ type: joi.string().valid('code').required(),
249
155
  admin: baseAdminFields.keys({
250
156
  components: baseAdminComponentFields.keys({
251
- Error: _componentSchema.componentSchema,
252
- Label: _componentSchema.componentSchema
157
+ Error: componentSchema,
158
+ Label: componentSchema
253
159
  }),
254
- editorOptions: _joi.default.object().unknown(),
255
- language: _joi.default.string()
160
+ editorOptions: joi.object().unknown(),
161
+ language: joi.string()
256
162
  }),
257
- defaultValue: _joi.default.alternatives().try(_joi.default.string(), _joi.default.func()),
258
- type: _joi.default.string().valid('code').required()
163
+ defaultValue: joi.alternatives().try(joi.string(), joi.func())
259
164
  });
260
- const json = baseField.keys({
261
- name: _joi.default.string().required(),
165
+ export const json = baseField.keys({
166
+ name: joi.string().required(),
167
+ type: joi.string().valid('json').required(),
262
168
  admin: baseAdminFields.keys({
263
169
  components: baseAdminComponentFields.keys({
264
- Error: _componentSchema.componentSchema,
265
- Label: _componentSchema.componentSchema
170
+ Error: componentSchema,
171
+ Label: componentSchema
266
172
  }),
267
- editorOptions: _joi.default.object().unknown()
173
+ editorOptions: joi.object().unknown()
268
174
  }),
269
- defaultValue: _joi.default.alternatives().try(_joi.default.array(), _joi.default.object()),
270
- type: _joi.default.string().valid('json').required()
175
+ defaultValue: joi.alternatives().try(joi.array(), joi.object())
271
176
  });
272
- const select = baseField.keys({
273
- name: _joi.default.string().required(),
177
+ export const select = baseField.keys({
178
+ name: joi.string().required(),
179
+ type: joi.string().valid('select').required(),
274
180
  admin: baseAdminFields.keys({
275
181
  components: baseAdminComponentFields.keys({
276
- Error: _componentSchema.componentSchema,
277
- Label: _componentSchema.componentSchema
182
+ Error: componentSchema,
183
+ Label: componentSchema
278
184
  }),
279
- isClearable: _joi.default.boolean().default(false),
280
- isSortable: _joi.default.boolean().default(false)
185
+ isClearable: joi.boolean().default(false),
186
+ isSortable: joi.boolean().default(false)
281
187
  }),
282
- defaultValue: _joi.default.alternatives().try(_joi.default.string().allow(''), _joi.default.array().items(_joi.default.string().allow('')), _joi.default.func()),
283
- hasMany: _joi.default.boolean().default(false),
284
- options: _joi.default.array().min(1).items(_joi.default.alternatives().try(_joi.default.string(), _joi.default.object({
285
- label: _joi.default.alternatives().try(_joi.default.string(), _joi.default.object().pattern(_joi.default.string(), [
286
- _joi.default.string()
188
+ defaultValue: joi.alternatives().try(joi.string().allow(''), joi.array().items(joi.string().allow('')), joi.func()),
189
+ hasMany: joi.boolean().default(false),
190
+ options: joi.array().min(1).items(joi.alternatives().try(joi.string(), joi.object({
191
+ label: joi.alternatives().try(joi.string(), joi.object().pattern(joi.string(), [
192
+ joi.string()
287
193
  ])),
288
- value: _joi.default.string().required().allow('')
289
- }))).required(),
290
- type: _joi.default.string().valid('select').required()
194
+ value: joi.string().required().allow('')
195
+ }))).required()
291
196
  });
292
- const radio = baseField.keys({
293
- name: _joi.default.string().required(),
197
+ export const radio = baseField.keys({
198
+ name: joi.string().required(),
199
+ type: joi.string().valid('radio').required(),
294
200
  admin: baseAdminFields.keys({
295
201
  components: baseAdminComponentFields.keys({
296
- Error: _componentSchema.componentSchema,
297
- Label: _componentSchema.componentSchema
202
+ Error: componentSchema,
203
+ Label: componentSchema
298
204
  }),
299
- layout: _joi.default.string().valid('vertical', 'horizontal')
205
+ layout: joi.string().valid('vertical', 'horizontal')
300
206
  }),
301
- defaultValue: _joi.default.alternatives().try(_joi.default.string().allow(''), _joi.default.func()),
302
- options: _joi.default.array().min(1).items(_joi.default.alternatives().try(_joi.default.string(), _joi.default.object({
303
- label: _joi.default.alternatives().try(_joi.default.string(), _joi.default.object().pattern(_joi.default.string(), [
304
- _joi.default.string()
207
+ defaultValue: joi.alternatives().try(joi.string().allow(''), joi.func()),
208
+ options: joi.array().min(1).items(joi.alternatives().try(joi.string(), joi.object({
209
+ label: joi.alternatives().try(joi.string(), joi.object().pattern(joi.string(), [
210
+ joi.string()
305
211
  ])).required(),
306
- value: _joi.default.string().required().allow('')
307
- }))).required(),
308
- type: _joi.default.string().valid('radio').required()
212
+ value: joi.string().required().allow('')
213
+ }))).required()
309
214
  });
310
- const row = baseField.keys({
215
+ export const row = baseField.keys({
216
+ type: joi.string().valid('row').required(),
311
217
  admin: baseAdminFields.default(),
312
- fields: _joi.default.array().items(_joi.default.link('#field')),
313
- type: _joi.default.string().valid('row').required()
218
+ fields: joi.array().items(joi.link('#field'))
314
219
  });
315
- const collapsible = baseField.keys({
220
+ export const collapsible = baseField.keys({
221
+ type: joi.string().valid('collapsible').required(),
316
222
  admin: baseAdminFields.default(),
317
- fields: _joi.default.array().items(_joi.default.link('#field')),
318
- label: _joi.default.alternatives().try(_joi.default.string(), _componentSchema.componentSchema),
319
- type: _joi.default.string().valid('collapsible').required()
223
+ fields: joi.array().items(joi.link('#field')),
224
+ label: joi.alternatives().try(joi.string(), componentSchema)
320
225
  });
321
226
  const tab = baseField.keys({
322
- name: _joi.default.string().when('localized', {
323
- is: _joi.default.exist(),
324
- then: _joi.default.required()
227
+ name: joi.string().when('localized', {
228
+ is: joi.exist(),
229
+ then: joi.required()
325
230
  }),
326
- description: _joi.default.alternatives().try(_joi.default.string(), _componentSchema.componentSchema),
327
- fields: _joi.default.array().items(_joi.default.link('#field')).required(),
328
- interfaceName: _joi.default.string().when('name', {
329
- not: _joi.default.exist(),
330
- then: _joi.default.forbidden()
231
+ description: joi.alternatives().try(joi.string(), componentSchema),
232
+ fields: joi.array().items(joi.link('#field')).required(),
233
+ interfaceName: joi.string().when('name', {
234
+ not: joi.exist(),
235
+ then: joi.forbidden()
331
236
  }),
332
- label: _joi.default.alternatives().try(_joi.default.string(), _joi.default.object().pattern(_joi.default.string(), [
333
- _joi.default.string()
237
+ label: joi.alternatives().try(joi.string(), joi.object().pattern(joi.string(), [
238
+ joi.string()
334
239
  ])).when('name', {
335
- is: _joi.default.not(),
336
- then: _joi.default.required()
240
+ is: joi.not(),
241
+ then: joi.required()
337
242
  }),
338
- localized: _joi.default.boolean(),
339
- saveToJWT: _joi.default.alternatives().try(_joi.default.boolean(), _joi.default.string())
243
+ localized: joi.boolean(),
244
+ saveToJWT: joi.alternatives().try(joi.boolean(), joi.string())
340
245
  });
341
- const tabs = baseField.keys({
246
+ export const tabs = baseField.keys({
247
+ type: joi.string().valid('tabs').required(),
342
248
  admin: baseAdminFields.keys({
343
- description: _joi.default.forbidden()
249
+ description: joi.forbidden()
344
250
  }),
345
- fields: _joi.default.forbidden(),
346
- localized: _joi.default.forbidden(),
347
- tabs: _joi.default.array().items(tab).required(),
348
- type: _joi.default.string().valid('tabs').required()
251
+ fields: joi.forbidden(),
252
+ localized: joi.forbidden(),
253
+ tabs: joi.array().items(tab).required()
349
254
  });
350
- const group = baseField.keys({
351
- name: _joi.default.string().required(),
255
+ export const group = baseField.keys({
256
+ name: joi.string().required(),
257
+ type: joi.string().valid('group').required(),
352
258
  admin: baseAdminFields.keys({
353
- hideGutter: _joi.default.boolean().default(true)
259
+ hideGutter: joi.boolean().default(true)
354
260
  }),
355
- defaultValue: _joi.default.alternatives().try(_joi.default.object(), _joi.default.func()),
356
- fields: _joi.default.array().items(_joi.default.link('#field')),
357
- interfaceName: _joi.default.string(),
358
- type: _joi.default.string().valid('group').required()
261
+ defaultValue: joi.alternatives().try(joi.object(), joi.func()),
262
+ fields: joi.array().items(joi.link('#field')),
263
+ interfaceName: joi.string()
359
264
  });
360
- const array = baseField.keys({
361
- name: _joi.default.string().required(),
265
+ export const array = baseField.keys({
266
+ name: joi.string().required(),
267
+ type: joi.string().valid('array').required(),
362
268
  admin: baseAdminFields.keys({
363
269
  components: baseAdminComponentFields.keys({
364
- RowLabel: _componentSchema.componentSchema
270
+ RowLabel: componentSchema
365
271
  }).default({})
366
272
  }).default({}),
367
- defaultValue: _joi.default.alternatives().try(_joi.default.array().items(_joi.default.object()), _joi.default.func()),
368
- fields: _joi.default.array().items(_joi.default.link('#field')).required(),
369
- interfaceName: _joi.default.string(),
370
- labels: _joi.default.object({
371
- plural: _joi.default.alternatives().try(_joi.default.string(), _joi.default.object().pattern(_joi.default.string(), [
372
- _joi.default.string()
273
+ defaultValue: joi.alternatives().try(joi.array().items(joi.object()), joi.func()),
274
+ fields: joi.array().items(joi.link('#field')).required(),
275
+ interfaceName: joi.string(),
276
+ labels: joi.object({
277
+ plural: joi.alternatives().try(joi.string(), joi.object().pattern(joi.string(), [
278
+ joi.string()
373
279
  ])),
374
- singular: _joi.default.alternatives().try(_joi.default.string(), _joi.default.object().pattern(_joi.default.string(), [
375
- _joi.default.string()
280
+ singular: joi.alternatives().try(joi.string(), joi.object().pattern(joi.string(), [
281
+ joi.string()
376
282
  ]))
377
283
  }),
378
- maxRows: _joi.default.number(),
379
- minRows: _joi.default.number(),
380
- type: _joi.default.string().valid('array').required()
284
+ maxRows: joi.number(),
285
+ minRows: joi.number()
381
286
  });
382
- const upload = baseField.keys({
383
- name: _joi.default.string().required(),
287
+ export const upload = baseField.keys({
288
+ name: joi.string().required(),
289
+ type: joi.string().valid('upload').required(),
384
290
  admin: baseAdminFields.keys({
385
291
  components: baseAdminComponentFields.keys({
386
- Error: _componentSchema.componentSchema,
387
- Label: _componentSchema.componentSchema
292
+ Error: componentSchema,
293
+ Label: componentSchema
388
294
  })
389
295
  }),
390
- defaultValue: _joi.default.alternatives().try(_joi.default.object(), _joi.default.func()),
391
- filterOptions: _joi.default.alternatives().try(_joi.default.object(), _joi.default.func()),
392
- maxDepth: _joi.default.number(),
393
- relationTo: _joi.default.string().required(),
394
- type: _joi.default.string().valid('upload').required()
296
+ defaultValue: joi.alternatives().try(joi.object(), joi.func()),
297
+ filterOptions: joi.alternatives().try(joi.object(), joi.func()),
298
+ maxDepth: joi.number(),
299
+ relationTo: joi.string().required()
395
300
  });
396
- const checkbox = baseField.keys({
397
- name: _joi.default.string().required(),
301
+ export const checkbox = baseField.keys({
302
+ name: joi.string().required(),
303
+ type: joi.string().valid('checkbox').required(),
398
304
  admin: baseAdminFields.keys({
399
305
  components: baseAdminComponentFields.keys({
400
- Error: _componentSchema.componentSchema,
401
- Label: _componentSchema.componentSchema,
402
- afterInput: _joi.default.array().items(_componentSchema.componentSchema),
403
- beforeInput: _joi.default.array().items(_componentSchema.componentSchema)
306
+ Error: componentSchema,
307
+ Label: componentSchema,
308
+ afterInput: joi.array().items(componentSchema),
309
+ beforeInput: joi.array().items(componentSchema)
404
310
  })
405
311
  }),
406
- defaultValue: _joi.default.alternatives().try(_joi.default.boolean(), _joi.default.func()),
407
- type: _joi.default.string().valid('checkbox').required()
312
+ defaultValue: joi.alternatives().try(joi.boolean(), joi.func())
408
313
  });
409
- const point = baseField.keys({
410
- name: _joi.default.string().required(),
314
+ export const point = baseField.keys({
315
+ name: joi.string().required(),
316
+ type: joi.string().valid('point').required(),
411
317
  admin: baseAdminFields.keys({
412
318
  components: baseAdminComponentFields.keys({
413
- Error: _componentSchema.componentSchema,
414
- Label: _componentSchema.componentSchema,
415
- afterInput: _joi.default.array().items(_componentSchema.componentSchema),
416
- beforeInput: _joi.default.array().items(_componentSchema.componentSchema)
319
+ Error: componentSchema,
320
+ Label: componentSchema,
321
+ afterInput: joi.array().items(componentSchema),
322
+ beforeInput: joi.array().items(componentSchema)
417
323
  })
418
324
  }),
419
- defaultValue: _joi.default.alternatives().try(_joi.default.array().items(_joi.default.number()).max(2).min(2), _joi.default.func()),
420
- type: _joi.default.string().valid('point').required()
325
+ defaultValue: joi.alternatives().try(joi.array().items(joi.number()).max(2).min(2), joi.func())
421
326
  });
422
- const relationship = baseField.keys({
423
- name: _joi.default.string().required(),
327
+ export const relationship = baseField.keys({
328
+ name: joi.string().required(),
329
+ type: joi.string().valid('relationship').required(),
424
330
  admin: baseAdminFields.keys({
425
- allowCreate: _joi.default.boolean().default(true),
331
+ allowCreate: joi.boolean().default(true),
426
332
  components: baseAdminComponentFields.keys({
427
- Error: _componentSchema.componentSchema,
428
- Label: _componentSchema.componentSchema
333
+ Error: componentSchema,
334
+ Label: componentSchema
429
335
  }),
430
- isSortable: _joi.default.boolean().default(false),
431
- sortOptions: _joi.default.alternatives().conditional(_joi.default.ref('...relationTo'), {
432
- is: _joi.default.string(),
433
- otherwise: _joi.default.object().pattern(_joi.default.string(), _joi.default.string()),
434
- then: _joi.default.string()
336
+ isSortable: joi.boolean().default(false),
337
+ sortOptions: joi.alternatives().conditional(joi.ref('...relationTo'), {
338
+ is: joi.string(),
339
+ otherwise: joi.object().pattern(joi.string(), joi.string()),
340
+ then: joi.string()
435
341
  })
436
342
  }),
437
- defaultValue: _joi.default.alternatives().try(_joi.default.func()),
438
- filterOptions: _joi.default.alternatives().try(_joi.default.object(), _joi.default.func()),
439
- hasMany: _joi.default.boolean().default(false),
440
- max: _joi.default.number().when('hasMany', {
441
- is: _joi.default.not(true),
442
- then: _joi.default.forbidden()
343
+ defaultValue: joi.alternatives().try(joi.func()),
344
+ filterOptions: joi.alternatives().try(joi.object(), joi.func()),
345
+ hasMany: joi.boolean().default(false),
346
+ max: joi.number().when('hasMany', {
347
+ is: joi.not(true),
348
+ then: joi.forbidden()
443
349
  }).warning('deprecated', {
444
350
  message: 'Use maxRows instead.'
445
351
  }),
446
- maxDepth: _joi.default.number(),
447
- maxRows: _joi.default.number().when('hasMany', {
448
- is: _joi.default.not(true),
449
- then: _joi.default.forbidden()
352
+ maxDepth: joi.number(),
353
+ maxRows: joi.number().when('hasMany', {
354
+ is: joi.not(true),
355
+ then: joi.forbidden()
450
356
  }),
451
- min: _joi.default.number().when('hasMany', {
452
- is: _joi.default.not(true),
453
- then: _joi.default.forbidden()
357
+ min: joi.number().when('hasMany', {
358
+ is: joi.not(true),
359
+ then: joi.forbidden()
454
360
  }).warning('deprecated', {
455
361
  message: 'Use minRows instead.'
456
362
  }),
457
- minRows: _joi.default.number().when('hasMany', {
458
- is: _joi.default.not(true),
459
- then: _joi.default.forbidden()
363
+ minRows: joi.number().when('hasMany', {
364
+ is: joi.not(true),
365
+ then: joi.forbidden()
460
366
  }),
461
- relationTo: _joi.default.alternatives().try(_joi.default.string().required(), _joi.default.array().items(_joi.default.string())),
462
- type: _joi.default.string().valid('relationship').required()
367
+ relationTo: joi.alternatives().try(joi.string().required(), joi.array().items(joi.string()))
463
368
  });
464
- const blocks = baseField.keys({
465
- name: _joi.default.string().required(),
466
- blocks: _joi.default.array().items(_joi.default.object({
467
- fields: _joi.default.array().items(_joi.default.link('#field')),
468
- graphQL: _joi.default.object().keys({
469
- singularName: _joi.default.string()
369
+ export const blocks = baseField.keys({
370
+ name: joi.string().required(),
371
+ type: joi.string().valid('blocks').required(),
372
+ blocks: joi.array().items(joi.object({
373
+ slug: joi.string().required(),
374
+ custom: joi.object().pattern(joi.string(), joi.any()),
375
+ fields: joi.array().items(joi.link('#field')),
376
+ graphQL: joi.object().keys({
377
+ singularName: joi.string()
470
378
  }),
471
- imageAltText: _joi.default.string(),
472
- imageURL: _joi.default.string(),
473
- interfaceName: _joi.default.string(),
474
- labels: _joi.default.object({
475
- plural: _joi.default.alternatives().try(_joi.default.string(), _joi.default.object().pattern(_joi.default.string(), [
476
- _joi.default.string()
379
+ imageAltText: joi.string(),
380
+ imageURL: joi.string(),
381
+ interfaceName: joi.string(),
382
+ labels: joi.object({
383
+ plural: joi.alternatives().try(joi.string(), joi.object().pattern(joi.string(), [
384
+ joi.string()
477
385
  ])),
478
- singular: _joi.default.alternatives().try(_joi.default.string(), _joi.default.object().pattern(_joi.default.string(), [
479
- _joi.default.string()
386
+ singular: joi.alternatives().try(joi.string(), joi.object().pattern(joi.string(), [
387
+ joi.string()
480
388
  ]))
481
- }),
482
- slug: _joi.default.string().required(),
483
- custom: _joi.default.object().pattern(_joi.default.string(), _joi.default.any())
389
+ })
484
390
  })).required(),
485
- defaultValue: _joi.default.alternatives().try(_joi.default.array().items(_joi.default.object()), _joi.default.func()),
486
- labels: _joi.default.object({
487
- plural: _joi.default.alternatives().try(_joi.default.string(), _joi.default.object().pattern(_joi.default.string(), [
488
- _joi.default.string()
391
+ defaultValue: joi.alternatives().try(joi.array().items(joi.object()), joi.func()),
392
+ labels: joi.object({
393
+ plural: joi.alternatives().try(joi.string(), joi.object().pattern(joi.string(), [
394
+ joi.string()
489
395
  ])),
490
- singular: _joi.default.alternatives().try(_joi.default.string(), _joi.default.object().pattern(_joi.default.string(), [
491
- _joi.default.string()
396
+ singular: joi.alternatives().try(joi.string(), joi.object().pattern(joi.string(), [
397
+ joi.string()
492
398
  ]))
493
399
  }),
494
- maxRows: _joi.default.number(),
495
- minRows: _joi.default.number(),
496
- type: _joi.default.string().valid('blocks').required()
400
+ maxRows: joi.number(),
401
+ minRows: joi.number()
497
402
  });
498
- const richText = baseField.keys({
499
- name: _joi.default.string().required(),
403
+ export const richText = baseField.keys({
404
+ name: joi.string().required(),
405
+ type: joi.string().valid('richText').required(),
500
406
  admin: baseAdminFields.default(),
501
- defaultValue: _joi.default.alternatives().try(_joi.default.array().items(_joi.default.object()), _joi.default.func(), _joi.default.object()),
502
- editor: _joi.default.object().keys({
503
- CellComponent: _componentSchema.componentSchema.optional(),
504
- FieldComponent: _componentSchema.componentSchema.optional(),
505
- LazyCellComponent: _joi.default.func().optional(),
506
- LazyFieldComponent: _joi.default.func().optional(),
507
- afterReadPromise: _joi.default.func().optional(),
508
- outputSchema: _joi.default.func().optional(),
509
- populationPromise: _joi.default.func().optional(),
510
- validate: _joi.default.func().required()
511
- }).unknown(),
512
- type: _joi.default.string().valid('richText').required()
407
+ defaultValue: joi.alternatives().try(joi.array().items(joi.object()), joi.func(), joi.object()),
408
+ editor: joi.object().keys({
409
+ CellComponent: componentSchema.optional(),
410
+ FieldComponent: componentSchema.optional(),
411
+ LazyCellComponent: joi.func().optional(),
412
+ LazyFieldComponent: joi.func().optional(),
413
+ afterReadPromise: joi.func().optional(),
414
+ outputSchema: joi.func().optional(),
415
+ populationPromise: joi.func().optional(),
416
+ validate: joi.func().required()
417
+ }).unknown()
513
418
  });
514
- const date = baseField.keys({
515
- name: _joi.default.string().required(),
419
+ export const date = baseField.keys({
420
+ name: joi.string().required(),
421
+ type: joi.string().valid('date').required(),
516
422
  admin: baseAdminFields.keys({
517
423
  components: baseAdminComponentFields.keys({
518
- Error: _componentSchema.componentSchema,
519
- Label: _componentSchema.componentSchema,
520
- afterInput: _joi.default.array().items(_componentSchema.componentSchema),
521
- beforeInput: _joi.default.array().items(_componentSchema.componentSchema)
424
+ Error: componentSchema,
425
+ Label: componentSchema,
426
+ afterInput: joi.array().items(componentSchema),
427
+ beforeInput: joi.array().items(componentSchema)
522
428
  }),
523
- date: _joi.default.object({
524
- displayFormat: _joi.default.string(),
525
- maxDate: _joi.default.date(),
526
- maxTime: _joi.default.date(),
527
- minDate: _joi.default.date(),
528
- minTime: _joi.default.date(),
529
- monthsToShow: _joi.default.number(),
530
- overrides: _joi.default.object().unknown(),
531
- pickerAppearance: _joi.default.string(),
532
- timeFormat: _joi.default.string(),
533
- timeIntervals: _joi.default.number()
429
+ date: joi.object({
430
+ displayFormat: joi.string(),
431
+ maxDate: joi.date(),
432
+ maxTime: joi.date(),
433
+ minDate: joi.date(),
434
+ minTime: joi.date(),
435
+ monthsToShow: joi.number(),
436
+ overrides: joi.object().unknown(),
437
+ pickerAppearance: joi.string(),
438
+ timeFormat: joi.string(),
439
+ timeIntervals: joi.number()
534
440
  }),
535
- placeholder: _joi.default.string()
441
+ placeholder: joi.string()
536
442
  }),
537
- defaultValue: _joi.default.alternatives().try(_joi.default.string(), _joi.default.func()),
538
- type: _joi.default.string().valid('date').required()
443
+ defaultValue: joi.alternatives().try(joi.string(), joi.func())
539
444
  });
540
- const ui = _joi.default.object().keys({
541
- name: _joi.default.string().required(),
542
- admin: _joi.default.object().keys({
543
- components: _joi.default.object().keys({
544
- Cell: _componentSchema.componentSchema,
545
- Field: _componentSchema.componentSchema
445
+ export const ui = joi.object().keys({
446
+ name: joi.string().required(),
447
+ type: joi.string().valid('ui').required(),
448
+ admin: joi.object().keys({
449
+ components: joi.object().keys({
450
+ Cell: componentSchema,
451
+ Field: componentSchema
546
452
  }).default({}),
547
- condition: _joi.default.func(),
548
- position: _joi.default.string().valid('sidebar'),
549
- width: _joi.default.string()
453
+ condition: joi.func(),
454
+ position: joi.string().valid('sidebar'),
455
+ width: joi.string()
550
456
  }).default(),
551
- custom: _joi.default.object().pattern(_joi.default.string(), _joi.default.any()),
552
- label: _joi.default.alternatives().try(_joi.default.string(), _joi.default.object().pattern(_joi.default.string(), [
553
- _joi.default.string()
554
- ])),
555
- type: _joi.default.string().valid('ui').required()
457
+ custom: joi.object().pattern(joi.string(), joi.any()),
458
+ label: joi.alternatives().try(joi.string(), joi.object().pattern(joi.string(), [
459
+ joi.string()
460
+ ]))
556
461
  });
557
- const fieldSchema = _joi.default.alternatives().try(text, number, textarea, email, code, json, select, group, array, row, collapsible, tabs, radio, relationship, checkbox, upload, richText, blocks, date, point, ui).id('field');
558
- const _default = fieldSchema;
462
+ const fieldSchema = joi.alternatives().try(text, number, textarea, email, code, json, select, group, array, row, collapsible, tabs, radio, relationship, checkbox, upload, richText, blocks, date, point, ui).id('field');
463
+ export default fieldSchema;
559
464
 
560
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9maWVsZHMvY29uZmlnL3NjaGVtYS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgam9pIGZyb20gJ2pvaSdcblxuaW1wb3J0IHsgY29tcG9uZW50U2NoZW1hIH0gZnJvbSAnLi4vLi4vY29uZmlnL3NoYXJlZC9jb21wb25lbnRTY2hlbWEnXG5cbmV4cG9ydCBjb25zdCBiYXNlQWRtaW5Db21wb25lbnRGaWVsZHMgPSBqb2lcbiAgLm9iamVjdCgpXG4gIC5rZXlzKHtcbiAgICBDZWxsOiBjb21wb25lbnRTY2hlbWEsXG4gICAgRmllbGQ6IGNvbXBvbmVudFNjaGVtYSxcbiAgICBGaWx0ZXI6IGNvbXBvbmVudFNjaGVtYSxcbiAgfSlcbiAgLmRlZmF1bHQoe30pXG5cbmV4cG9ydCBjb25zdCBiYXNlQWRtaW5GaWVsZHMgPSBqb2kub2JqZWN0KCkua2V5cyh7XG4gIGNsYXNzTmFtZTogam9pLnN0cmluZygpLFxuICBjb21wb25lbnRzOiBiYXNlQWRtaW5Db21wb25lbnRGaWVsZHMsXG4gIGNvbmRpdGlvbjogam9pLmZ1bmMoKSxcbiAgZGVzY3JpcHRpb246IGpvaVxuICAgIC5hbHRlcm5hdGl2ZXMoKVxuICAgIC50cnkoam9pLnN0cmluZygpLCBqb2kub2JqZWN0KCkucGF0dGVybihqb2kuc3RyaW5nKCksIFtqb2kuc3RyaW5nKCldKSwgY29tcG9uZW50U2NoZW1hKSxcbiAgZGlzYWJsZUJ1bGtFZGl0OiBqb2kuYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBkaXNhYmxlZDogam9pLmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgaGlkZGVuOiBqb2kuYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBpbml0Q29sbGFwc2VkOiBqb2kuYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBwb3NpdGlvbjogam9pLnN0cmluZygpLnZhbGlkKCdzaWRlYmFyJyksXG4gIHJlYWRPbmx5OiBqb2kuYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBzdHlsZTogam9pLm9iamVjdCgpLnVua25vd24oKSxcbiAgd2lkdGg6IGpvaS5zdHJpbmcoKSxcbn0pXG5cbmV4cG9ydCBjb25zdCBiYXNlRmllbGQgPSBqb2lcbiAgLm9iamVjdCgpXG4gIC5rZXlzKHtcbiAgICBhY2Nlc3M6IGpvaS5vYmplY3QoKS5rZXlzKHtcbiAgICAgIGNyZWF0ZTogam9pLmZ1bmMoKSxcbiAgICAgIHJlYWQ6IGpvaS5mdW5jKCksXG4gICAgICB1cGRhdGU6IGpvaS5mdW5jKCksXG4gICAgfSksXG4gICAgYWRtaW46IGJhc2VBZG1pbkZpZWxkcy5kZWZhdWx0KCksXG4gICAgY3VzdG9tOiBqb2kub2JqZWN0KCkucGF0dGVybihqb2kuc3RyaW5nKCksIGpvaS5hbnkoKSksXG4gICAgaGlkZGVuOiBqb2kuYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICAgIGhvb2tzOiBqb2lcbiAgICAgIC5vYmplY3QoKVxuICAgICAgLmtleXMoe1xuICAgICAgICBhZnRlckNoYW5nZTogam9pLmFycmF5KCkuaXRlbXMoam9pLmZ1bmMoKSkuZGVmYXVsdChbXSksXG4gICAgICAgIGFmdGVyUmVhZDogam9pLmFycmF5KCkuaXRlbXMoam9pLmZ1bmMoKSkuZGVmYXVsdChbXSksXG4gICAgICAgIGJlZm9yZUNoYW5nZTogam9pLmFycmF5KCkuaXRlbXMoam9pLmZ1bmMoKSkuZGVmYXVsdChbXSksXG4gICAgICAgIGJlZm9yZVZhbGlkYXRlOiBqb2kuYXJyYXkoKS5pdGVtcyhqb2kuZnVuYygpKS5kZWZhdWx0KFtdKSxcbiAgICAgIH0pXG4gICAgICAuZGVmYXVsdCgpLFxuICAgIGluZGV4OiBqb2kuYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICAgIGxhYmVsOiBqb2lcbiAgICAgIC5hbHRlcm5hdGl2ZXMoKVxuICAgICAgLnRyeShqb2kub2JqZWN0KCkucGF0dGVybihqb2kuc3RyaW5nKCksIFtqb2kuc3RyaW5nKCldKSwgam9pLnN0cmluZygpLCBqb2kudmFsaWQoZmFsc2UpKSxcbiAgICBsb2NhbGl6ZWQ6IGpvaS5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gICAgcmVxdWlyZWQ6IGpvaS5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gICAgc2F2ZVRvSldUOiBqb2kuYWx0ZXJuYXRpdmVzKCkudHJ5KGpvaS5ib29sZWFuKCksIGpvaS5zdHJpbmcoKSkuZGVmYXVsdChmYWxzZSksXG4gICAgdW5pcXVlOiBqb2kuYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICAgIHZhbGlkYXRlOiBqb2kuZnVuYygpLFxuICB9KVxuICAuZGVmYXVsdCgpXG5cbmV4cG9ydCBjb25zdCBpZEZpZWxkID0gYmFzZUZpZWxkLmtleXMoe1xuICBuYW1lOiBqb2kuc3RyaW5nKCkudmFsaWQoJ2lkJyksXG4gIGxvY2FsaXplZDogam9pLmludmFsaWQodHJ1ZSksXG4gIHJlcXVpcmVkOiBqb2kubm90KGZhbHNlLCAwKS5kZWZhdWx0KHRydWUpLFxuICB0eXBlOiBqb2kuc3RyaW5nKCkudmFsaWQoJ3RleHQnLCAnbnVtYmVyJyksXG59KVxuXG5leHBvcnQgY29uc3QgdGV4dCA9IGJhc2VGaWVsZC5rZXlzKHtcbiAgbmFtZTogam9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gIGFkbWluOiBiYXNlQWRtaW5GaWVsZHMua2V5cyh7XG4gICAgYXV0b0NvbXBsZXRlOiBqb2kuc3RyaW5nKCksXG4gICAgY29tcG9uZW50czogYmFzZUFkbWluQ29tcG9uZW50RmllbGRzLmtleXMoe1xuICAgICAgRXJyb3I6IGNvbXBvbmVudFNjaGVtYSxcbiAgICAgIExhYmVsOiBjb21wb25lbnRTY2hlbWEsXG4gICAgICBhZnRlcklucHV0OiBqb2kuYXJyYXkoKS5pdGVtcyhjb21wb25lbnRTY2hlbWEpLFxuICAgICAgYmVmb3JlSW5wdXQ6IGpvaS5hcnJheSgpLml0ZW1zKGNvbXBvbmVudFNjaGVtYSksXG4gICAgfSksXG4gICAgcGxhY2Vob2xkZXI6IGpvaVxuICAgICAgLmFsdGVybmF0aXZlcygpXG4gICAgICAudHJ5KGpvaS5vYmplY3QoKS5wYXR0ZXJuKGpvaS5zdHJpbmcoKSwgW2pvaS5zdHJpbmcoKV0pLCBqb2kuc3RyaW5nKCkpLFxuICAgIHJ0bDogam9pLmJvb2xlYW4oKSxcbiAgfSksXG4gIGRlZmF1bHRWYWx1ZTogam9pLmFsdGVybmF0aXZlcygpLnRyeShqb2kuc3RyaW5nKCksIGpvaS5mdW5jKCkpLFxuICBoYXNNYW55OiBqb2kuYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBtYXhMZW5ndGg6IGpvaS5udW1iZXIoKSxcbiAgbWF4Um93czogam9pLm51bWJlcigpLndoZW4oJ2hhc01hbnknLCB7IGlzOiBqb2kubm90KHRydWUpLCB0aGVuOiBqb2kuZm9yYmlkZGVuKCkgfSksXG4gIG1pbkxlbmd0aDogam9pLm51bWJlcigpLFxuICBtaW5Sb3dzOiBqb2kubnVtYmVyKCkud2hlbignaGFzTWFueScsIHsgaXM6IGpvaS5ub3QodHJ1ZSksIHRoZW46IGpvaS5mb3JiaWRkZW4oKSB9KSxcbiAgdHlwZTogam9pLnN0cmluZygpLnZhbGlkKCd0ZXh0JykucmVxdWlyZWQoKSxcbn0pXG5cbmV4cG9ydCBjb25zdCBudW1iZXIgPSBiYXNlRmllbGQua2V5cyh7XG4gIG5hbWU6IGpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICBhZG1pbjogYmFzZUFkbWluRmllbGRzLmtleXMoe1xuICAgIGF1dG9Db21wbGV0ZTogam9pLnN0cmluZygpLFxuICAgIGNvbXBvbmVudHM6IGJhc2VBZG1pbkNvbXBvbmVudEZpZWxkcy5rZXlzKHtcbiAgICAgIEVycm9yOiBjb21wb25lbnRTY2hlbWEsXG4gICAgICBMYWJlbDogY29tcG9uZW50U2NoZW1hLFxuICAgICAgYWZ0ZXJJbnB1dDogam9pXG4gICAgICAgIC5hcnJheSgpXG4gICAgICAgIC5pdGVtcyhjb21wb25lbnRTY2hlbWEpXG4gICAgICAgIC53aGVuKCdoYXNNYW55JywgeyBub3Q6IHRydWUsIG90aGVyd2lzZTogam9pLmZvcmJpZGRlbigpIH0pLFxuICAgICAgYmVmb3JlSW5wdXQ6IGpvaVxuICAgICAgICAuYXJyYXkoKVxuICAgICAgICAuaXRlbXMoY29tcG9uZW50U2NoZW1hKVxuICAgICAgICAud2hlbignaGFzTWFueScsIHsgbm90OiB0cnVlLCBvdGhlcndpc2U6IGpvaS5mb3JiaWRkZW4oKSB9KSxcbiAgICB9KSxcbiAgICBwbGFjZWhvbGRlcjogam9pLnN0cmluZygpLFxuICAgIHN0ZXA6IGpvaS5udW1iZXIoKSxcbiAgfSksXG4gIGRlZmF1bHRWYWx1ZTogam9pLmFsdGVybmF0aXZlcygpLnRyeShqb2kubnVtYmVyKCksIGpvaS5mdW5jKCkpLFxuICBoYXNNYW55OiBqb2kuYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBtYXg6IGpvaS5udW1iZXIoKSxcbiAgbWF4Um93czogam9pLm51bWJlcigpLndoZW4oJ2hhc01hbnknLCB7IGlzOiBqb2kubm90KHRydWUpLCB0aGVuOiBqb2kuZm9yYmlkZGVuKCkgfSksXG4gIG1pbjogam9pLm51bWJlcigpLFxuICBtaW5Sb3dzOiBqb2kubnVtYmVyKCkud2hlbignaGFzTWFueScsIHsgaXM6IGpvaS5ub3QodHJ1ZSksIHRoZW46IGpvaS5mb3JiaWRkZW4oKSB9KSxcbiAgdHlwZTogam9pLnN0cmluZygpLnZhbGlkKCdudW1iZXInKS5yZXF1aXJlZCgpLFxufSlcblxuZXhwb3J0IGNvbnN0IHRleHRhcmVhID0gYmFzZUZpZWxkLmtleXMoe1xuICBuYW1lOiBqb2kuc3RyaW5nKCkucmVxdWlyZWQoKSxcbiAgYWRtaW46IGJhc2VBZG1pbkZpZWxkcy5rZXlzKHtcbiAgICBjb21wb25lbnRzOiBiYXNlQWRtaW5Db21wb25lbnRGaWVsZHMua2V5cyh7XG4gICAgICBFcnJvcjogY29tcG9uZW50U2NoZW1hLFxuICAgICAgTGFiZWw6IGNvbXBvbmVudFNjaGVtYSxcbiAgICAgIGFmdGVySW5wdXQ6IGpvaS5hcnJheSgpLml0ZW1zKGNvbXBvbmVudFNjaGVtYSksXG4gICAgICBiZWZvcmVJbnB1dDogam9pLmFycmF5KCkuaXRlbXMoY29tcG9uZW50U2NoZW1hKSxcbiAgICB9KSxcbiAgICBwbGFjZWhvbGRlcjogam9pLnN0cmluZygpLFxuICAgIHJvd3M6IGpvaS5udW1iZXIoKSxcbiAgICBydGw6IGpvaS5ib29sZWFuKCksXG4gIH0pLFxuICBkZWZhdWx0VmFsdWU6IGpvaS5hbHRlcm5hdGl2ZXMoKS50cnkoam9pLnN0cmluZygpLCBqb2kuZnVuYygpKSxcbiAgbWF4TGVuZ3RoOiBqb2kubnVtYmVyKCksXG4gIG1pbkxlbmd0aDogam9pLm51bWJlcigpLFxuICB0eXBlOiBqb2kuc3RyaW5nKCkudmFsaWQoJ3RleHRhcmVhJykucmVxdWlyZWQoKSxcbn0pXG5cbmV4cG9ydCBjb25zdCBlbWFpbCA9IGJhc2VGaWVsZC5rZXlzKHtcbiAgbmFtZTogam9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gIGFkbWluOiBiYXNlQWRtaW5GaWVsZHMua2V5cyh7XG4gICAgYXV0b0NvbXBsZXRlOiBqb2kuc3RyaW5nKCksXG4gICAgY29tcG9uZW50czogYmFzZUFkbWluQ29tcG9uZW50RmllbGRzLmtleXMoe1xuICAgICAgRXJyb3I6IGNvbXBvbmVudFNjaGVtYSxcbiAgICAgIExhYmVsOiBjb21wb25lbnRTY2hlbWEsXG4gICAgICBhZnRlcklucHV0OiBqb2kuYXJyYXkoKS5pdGVtcyhjb21wb25lbnRTY2hlbWEpLFxuICAgICAgYmVmb3JlSW5wdXQ6IGpvaS5hcnJheSgpLml0ZW1zKGNvbXBvbmVudFNjaGVtYSksXG4gICAgfSksXG4gICAgcGxhY2Vob2xkZXI6IGpvaS5zdHJpbmcoKSxcbiAgfSksXG4gIGRlZmF1bHRWYWx1ZTogam9pLmFsdGVybmF0aXZlcygpLnRyeShqb2kuc3RyaW5nKCksIGpvaS5mdW5jKCkpLFxuICBtYXhMZW5ndGg6IGpvaS5udW1iZXIoKSxcbiAgbWluTGVuZ3RoOiBqb2kubnVtYmVyKCksXG4gIHR5cGU6IGpvaS5zdHJpbmcoKS52YWxpZCgnZW1haWwnKS5yZXF1aXJlZCgpLFxufSlcblxuZXhwb3J0IGNvbnN0IGNvZGUgPSBiYXNlRmllbGQua2V5cyh7XG4gIG5hbWU6IGpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICBhZG1pbjogYmFzZUFkbWluRmllbGRzLmtleXMoe1xuICAgIGNvbXBvbmVudHM6IGJhc2VBZG1pbkNvbXBvbmVudEZpZWxkcy5rZXlzKHtcbiAgICAgIEVycm9yOiBjb21wb25lbnRTY2hlbWEsXG4gICAgICBMYWJlbDogY29tcG9uZW50U2NoZW1hLFxuICAgIH0pLFxuICAgIGVkaXRvck9wdGlvbnM6IGpvaS5vYmplY3QoKS51bmtub3duKCksIC8vIEVkaXRvclsnb3B0aW9ucyddIEBtb25hY28tZWRpdG9yL3JlYWN0XG4gICAgbGFuZ3VhZ2U6IGpvaS5zdHJpbmcoKSxcbiAgfSksXG4gIGRlZmF1bHRWYWx1ZTogam9pLmFsdGVybmF0aXZlcygpLnRyeShqb2kuc3RyaW5nKCksIGpvaS5mdW5jKCkpLFxuICB0eXBlOiBqb2kuc3RyaW5nKCkudmFsaWQoJ2NvZGUnKS5yZXF1aXJlZCgpLFxufSlcblxuZXhwb3J0IGNvbnN0IGpzb24gPSBiYXNlRmllbGQua2V5cyh7XG4gIG5hbWU6IGpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICBhZG1pbjogYmFzZUFkbWluRmllbGRzLmtleXMoe1xuICAgIGNvbXBvbmVudHM6IGJhc2VBZG1pbkNvbXBvbmVudEZpZWxkcy5rZXlzKHtcbiAgICAgIEVycm9yOiBjb21wb25lbnRTY2hlbWEsXG4gICAgICBMYWJlbDogY29tcG9uZW50U2NoZW1hLFxuICAgIH0pLFxuICAgIGVkaXRvck9wdGlvbnM6IGpvaS5vYmplY3QoKS51bmtub3duKCksIC8vIEVkaXRvclsnb3B0aW9ucyddIEBtb25hY28tZWRpdG9yL3JlYWN0XG4gIH0pLFxuICBkZWZhdWx0VmFsdWU6IGpvaS5hbHRlcm5hdGl2ZXMoKS50cnkoam9pLmFycmF5KCksIGpvaS5vYmplY3QoKSksXG4gIHR5cGU6IGpvaS5zdHJpbmcoKS52YWxpZCgnanNvbicpLnJlcXVpcmVkKCksXG59KVxuXG5leHBvcnQgY29uc3Qgc2VsZWN0ID0gYmFzZUZpZWxkLmtleXMoe1xuICBuYW1lOiBqb2kuc3RyaW5nKCkucmVxdWlyZWQoKSxcbiAgYWRtaW46IGJhc2VBZG1pbkZpZWxkcy5rZXlzKHtcbiAgICBjb21wb25lbnRzOiBiYXNlQWRtaW5Db21wb25lbnRGaWVsZHMua2V5cyh7XG4gICAgICBFcnJvcjogY29tcG9uZW50U2NoZW1hLFxuICAgICAgTGFiZWw6IGNvbXBvbmVudFNjaGVtYSxcbiAgICB9KSxcbiAgICBpc0NsZWFyYWJsZTogam9pLmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgICBpc1NvcnRhYmxlOiBqb2kuYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICB9KSxcbiAgZGVmYXVsdFZhbHVlOiBqb2lcbiAgICAuYWx0ZXJuYXRpdmVzKClcbiAgICAudHJ5KGpvaS5zdHJpbmcoKS5hbGxvdygnJyksIGpvaS5hcnJheSgpLml0ZW1zKGpvaS5zdHJpbmcoKS5hbGxvdygnJykpLCBqb2kuZnVuYygpKSxcbiAgaGFzTWFueTogam9pLmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgb3B0aW9uczogam9pXG4gICAgLmFycmF5KClcbiAgICAubWluKDEpXG4gICAgLml0ZW1zKFxuICAgICAgam9pLmFsdGVybmF0aXZlcygpLnRyeShcbiAgICAgICAgam9pLnN0cmluZygpLFxuICAgICAgICBqb2kub2JqZWN0KHtcbiAgICAgICAgICBsYWJlbDogam9pXG4gICAgICAgICAgICAuYWx0ZXJuYXRpdmVzKClcbiAgICAgICAgICAgIC50cnkoam9pLnN0cmluZygpLCBqb2kub2JqZWN0KCkucGF0dGVybihqb2kuc3RyaW5nKCksIFtqb2kuc3RyaW5nKCldKSksXG4gICAgICAgICAgdmFsdWU6IGpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLmFsbG93KCcnKSxcbiAgICAgICAgfSksXG4gICAgICApLFxuICAgIClcbiAgICAucmVxdWlyZWQoKSxcbiAgdHlwZTogam9pLnN0cmluZygpLnZhbGlkKCdzZWxlY3QnKS5yZXF1aXJlZCgpLFxufSlcblxuZXhwb3J0IGNvbnN0IHJhZGlvID0gYmFzZUZpZWxkLmtleXMoe1xuICBuYW1lOiBqb2kuc3RyaW5nKCkucmVxdWlyZWQoKSxcbiAgYWRtaW46IGJhc2VBZG1pbkZpZWxkcy5rZXlzKHtcbiAgICBjb21wb25lbnRzOiBiYXNlQWRtaW5Db21wb25lbnRGaWVsZHMua2V5cyh7XG4gICAgICBFcnJvcjogY29tcG9uZW50U2NoZW1hLFxuICAgICAgTGFiZWw6IGNvbXBvbmVudFNjaGVtYSxcbiAgICB9KSxcbiAgICBsYXlvdXQ6IGpvaS5zdHJpbmcoKS52YWxpZCgndmVydGljYWwnLCAnaG9yaXpvbnRhbCcpLFxuICB9KSxcbiAgZGVmYXVsdFZhbHVlOiBqb2kuYWx0ZXJuYXRpdmVzKCkudHJ5KGpvaS5zdHJpbmcoKS5hbGxvdygnJyksIGpvaS5mdW5jKCkpLFxuICBvcHRpb25zOiBqb2lcbiAgICAuYXJyYXkoKVxuICAgIC5taW4oMSlcbiAgICAuaXRlbXMoXG4gICAgICBqb2kuYWx0ZXJuYXRpdmVzKCkudHJ5KFxuICAgICAgICBqb2kuc3RyaW5nKCksXG4gICAgICAgIGpvaS5vYmplY3Qoe1xuICAgICAgICAgIGxhYmVsOiBqb2lcbiAgICAgICAgICAgIC5hbHRlcm5hdGl2ZXMoKVxuICAgICAgICAgICAgLnRyeShqb2kuc3RyaW5nKCksIGpvaS5vYmplY3QoKS5wYXR0ZXJuKGpvaS5zdHJpbmcoKSwgW2pvaS5zdHJpbmcoKV0pKVxuICAgICAgICAgICAgLnJlcXVpcmVkKCksXG4gICAgICAgICAgdmFsdWU6IGpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLmFsbG93KCcnKSxcbiAgICAgICAgfSksXG4gICAgICApLFxuICAgIClcbiAgICAucmVxdWlyZWQoKSxcbiAgdHlwZTogam9pLnN0cmluZygpLnZhbGlkKCdyYWRpbycpLnJlcXVpcmVkKCksXG59KVxuXG5leHBvcnQgY29uc3Qgcm93ID0gYmFzZUZpZWxkLmtleXMoe1xuICBhZG1pbjogYmFzZUFkbWluRmllbGRzLmRlZmF1bHQoKSxcbiAgZmllbGRzOiBqb2kuYXJyYXkoKS5pdGVtcyhqb2kubGluaygnI2ZpZWxkJykpLFxuICB0eXBlOiBqb2kuc3RyaW5nKCkudmFsaWQoJ3JvdycpLnJlcXVpcmVkKCksXG59KVxuXG5leHBvcnQgY29uc3QgY29sbGFwc2libGUgPSBiYXNlRmllbGQua2V5cyh7XG4gIGFkbWluOiBiYXNlQWRtaW5GaWVsZHMuZGVmYXVsdCgpLFxuICBmaWVsZHM6IGpvaS5hcnJheSgpLml0ZW1zKGpvaS5saW5rKCcjZmllbGQnKSksXG4gIGxhYmVsOiBqb2kuYWx0ZXJuYXRpdmVzKCkudHJ5KGpvaS5zdHJpbmcoKSwgY29tcG9uZW50U2NoZW1hKSxcbiAgdHlwZTogam9pLnN0cmluZygpLnZhbGlkKCdjb2xsYXBzaWJsZScpLnJlcXVpcmVkKCksXG59KVxuXG5jb25zdCB0YWIgPSBiYXNlRmllbGQua2V5cyh7XG4gIG5hbWU6IGpvaS5zdHJpbmcoKS53aGVuKCdsb2NhbGl6ZWQnLCB7IGlzOiBqb2kuZXhpc3QoKSwgdGhlbjogam9pLnJlcXVpcmVkKCkgfSksXG4gIGRlc2NyaXB0aW9uOiBqb2kuYWx0ZXJuYXRpdmVzKCkudHJ5KGpvaS5zdHJpbmcoKSwgY29tcG9uZW50U2NoZW1hKSxcbiAgZmllbGRzOiBqb2kuYXJyYXkoKS5pdGVtcyhqb2kubGluaygnI2ZpZWxkJykpLnJlcXVpcmVkKCksXG4gIGludGVyZmFjZU5hbWU6IGpvaS5zdHJpbmcoKS53aGVuKCduYW1lJywgeyBub3Q6IGpvaS5leGlzdCgpLCB0aGVuOiBqb2kuZm9yYmlkZGVuKCkgfSksXG4gIGxhYmVsOiBqb2lcbiAgICAuYWx0ZXJuYXRpdmVzKClcbiAgICAudHJ5KGpvaS5zdHJpbmcoKSwgam9pLm9iamVjdCgpLnBhdHRlcm4oam9pLnN0cmluZygpLCBbam9pLnN0cmluZygpXSkpXG4gICAgLndoZW4oJ25hbWUnLCB7IGlzOiBqb2kubm90KCksIHRoZW46IGpvaS5yZXF1aXJlZCgpIH0pLFxuICBsb2NhbGl6ZWQ6IGpvaS5ib29sZWFuKCksXG4gIHNhdmVUb0pXVDogam9pLmFsdGVybmF0aXZlcygpLnRyeShqb2kuYm9vbGVhbigpLCBqb2kuc3RyaW5nKCkpLFxufSlcblxuZXhwb3J0IGNvbnN0IHRhYnMgPSBiYXNlRmllbGQua2V5cyh7XG4gIGFkbWluOiBiYXNlQWRtaW5GaWVsZHMua2V5cyh7XG4gICAgZGVzY3JpcHRpb246IGpvaS5mb3JiaWRkZW4oKSxcbiAgfSksXG4gIGZpZWxkczogam9pLmZvcmJpZGRlbigpLFxuICBsb2NhbGl6ZWQ6IGpvaS5mb3JiaWRkZW4oKSxcbiAgdGFiczogam9pLmFycmF5KCkuaXRlbXModGFiKS5yZXF1aXJlZCgpLFxuICB0eXBlOiBqb2kuc3RyaW5nKCkudmFsaWQoJ3RhYnMnKS5yZXF1aXJlZCgpLFxufSlcblxuZXhwb3J0IGNvbnN0IGdyb3VwID0gYmFzZUZpZWxkLmtleXMoe1xuICBuYW1lOiBqb2kuc3RyaW5nKCkucmVxdWlyZWQoKSxcbiAgYWRtaW46IGJhc2VBZG1pbkZpZWxkcy5rZXlzKHtcbiAgICBoaWRlR3V0dGVyOiBqb2kuYm9vbGVhbigpLmRlZmF1bHQodHJ1ZSksXG4gIH0pLFxuICBkZWZhdWx0VmFsdWU6IGpvaS5hbHRlcm5hdGl2ZXMoKS50cnkoam9pLm9iamVjdCgpLCBqb2kuZnVuYygpKSxcbiAgZmllbGRzOiBqb2kuYXJyYXkoKS5pdGVtcyhqb2kubGluaygnI2ZpZWxkJykpLFxuICBpbnRlcmZhY2VOYW1lOiBqb2kuc3RyaW5nKCksXG4gIHR5cGU6IGpvaS5zdHJpbmcoKS52YWxpZCgnZ3JvdXAnKS5yZXF1aXJlZCgpLFxufSlcblxuZXhwb3J0IGNvbnN0IGFycmF5ID0gYmFzZUZpZWxkLmtleXMoe1xuICBuYW1lOiBqb2kuc3RyaW5nKCkucmVxdWlyZWQoKSxcbiAgYWRtaW46IGJhc2VBZG1pbkZpZWxkc1xuICAgIC5rZXlzKHtcbiAgICAgIGNvbXBvbmVudHM6IGJhc2VBZG1pbkNvbXBvbmVudEZpZWxkc1xuICAgICAgICAua2V5cyh7XG4gICAgICAgICAgUm93TGFiZWw6IGNvbXBvbmVudFNjaGVtYSxcbiAgICAgICAgfSlcbiAgICAgICAgLmRlZmF1bHQoe30pLFxuICAgIH0pXG4gICAgLmRlZmF1bHQoe30pLFxuICBkZWZhdWx0VmFsdWU6IGpvaS5hbHRlcm5hdGl2ZXMoKS50cnkoam9pLmFycmF5KCkuaXRlbXMoam9pLm9iamVjdCgpKSwgam9pLmZ1bmMoKSksXG4gIGZpZWxkczogam9pLmFycmF5KCkuaXRlbXMoam9pLmxpbmsoJyNmaWVsZCcpKS5yZXF1aXJlZCgpLFxuICBpbnRlcmZhY2VOYW1lOiBqb2kuc3RyaW5nKCksXG4gIGxhYmVsczogam9pLm9iamVjdCh7XG4gICAgcGx1cmFsOiBqb2lcbiAgICAgIC5hbHRlcm5hdGl2ZXMoKVxuICAgICAgLnRyeShqb2kuc3RyaW5nKCksIGpvaS5vYmplY3QoKS5wYXR0ZXJuKGpvaS5zdHJpbmcoKSwgW2pvaS5zdHJpbmcoKV0pKSxcbiAgICBzaW5ndWxhcjogam9pXG4gICAgICAuYWx0ZXJuYXRpdmVzKClcbiAgICAgIC50cnkoam9pLnN0cmluZygpLCBqb2kub2JqZWN0KCkucGF0dGVybihqb2kuc3RyaW5nKCksIFtqb2kuc3RyaW5nKCldKSksXG4gIH0pLFxuICBtYXhSb3dzOiBqb2kubnVtYmVyKCksXG4gIG1pblJvd3M6IGpvaS5udW1iZXIoKSxcbiAgdHlwZTogam9pLnN0cmluZygpLnZhbGlkKCdhcnJheScpLnJlcXVpcmVkKCksXG59KVxuXG5leHBvcnQgY29uc3QgdXBsb2FkID0gYmFzZUZpZWxkLmtleXMoe1xuICBuYW1lOiBqb2kuc3RyaW5nKCkucmVxdWlyZWQoKSxcbiAgYWRtaW46IGJhc2VBZG1pbkZpZWxkcy5rZXlzKHtcbiAgICBjb21wb25lbnRzOiBiYXNlQWRtaW5Db21wb25lbnRGaWVsZHMua2V5cyh7XG4gICAgICBFcnJvcjogY29tcG9uZW50U2NoZW1hLFxuICAgICAgTGFiZWw6IGNvbXBvbmVudFNjaGVtYSxcbiAgICB9KSxcbiAgfSksXG4gIGRlZmF1bHRWYWx1ZTogam9pLmFsdGVybmF0aXZlcygpLnRyeShqb2kub2JqZWN0KCksIGpvaS5mdW5jKCkpLFxuICBmaWx0ZXJPcHRpb25zOiBqb2kuYWx0ZXJuYXRpdmVzKCkudHJ5KGpvaS5vYmplY3QoKSwgam9pLmZ1bmMoKSksXG4gIG1heERlcHRoOiBqb2kubnVtYmVyKCksXG4gIHJlbGF0aW9uVG86IGpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICB0eXBlOiBqb2kuc3RyaW5nKCkudmFsaWQoJ3VwbG9hZCcpLnJlcXVpcmVkKCksXG59KVxuXG5leHBvcnQgY29uc3QgY2hlY2tib3ggPSBiYXNlRmllbGQua2V5cyh7XG4gIG5hbWU6IGpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICBhZG1pbjogYmFzZUFkbWluRmllbGRzLmtleXMoe1xuICAgIGNvbXBvbmVudHM6IGJhc2VBZG1pbkNvbXBvbmVudEZpZWxkcy5rZXlzKHtcbiAgICAgIEVycm9yOiBjb21wb25lbnRTY2hlbWEsXG4gICAgICBMYWJlbDogY29tcG9uZW50U2NoZW1hLFxuICAgICAgYWZ0ZXJJbnB1dDogam9pLmFycmF5KCkuaXRlbXMoY29tcG9uZW50U2NoZW1hKSxcbiAgICAgIGJlZm9yZUlucHV0OiBqb2kuYXJyYXkoKS5pdGVtcyhjb21wb25lbnRTY2hlbWEpLFxuICAgIH0pLFxuICB9KSxcbiAgZGVmYXVsdFZhbHVlOiBqb2kuYWx0ZXJuYXRpdmVzKCkudHJ5KGpvaS5ib29sZWFuKCksIGpvaS5mdW5jKCkpLFxuICB0eXBlOiBqb2kuc3RyaW5nKCkudmFsaWQoJ2NoZWNrYm94JykucmVxdWlyZWQoKSxcbn0pXG5cbmV4cG9ydCBjb25zdCBwb2ludCA9IGJhc2VGaWVsZC5rZXlzKHtcbiAgbmFtZTogam9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gIGFkbWluOiBiYXNlQWRtaW5GaWVsZHMua2V5cyh7XG4gICAgY29tcG9uZW50czogYmFzZUFkbWluQ29tcG9uZW50RmllbGRzLmtleXMoe1xuICAgICAgRXJyb3I6IGNvbXBvbmVudFNjaGVtYSxcbiAgICAgIExhYmVsOiBjb21wb25lbnRTY2hlbWEsXG4gICAgICBhZnRlcklucHV0OiBqb2kuYXJyYXkoKS5pdGVtcyhjb21wb25lbnRTY2hlbWEpLFxuICAgICAgYmVmb3JlSW5wdXQ6IGpvaS5hcnJheSgpLml0ZW1zKGNvbXBvbmVudFNjaGVtYSksXG4gICAgfSksXG4gIH0pLFxuICBkZWZhdWx0VmFsdWU6IGpvaS5hbHRlcm5hdGl2ZXMoKS50cnkoam9pLmFycmF5KCkuaXRlbXMoam9pLm51bWJlcigpKS5tYXgoMikubWluKDIpLCBqb2kuZnVuYygpKSxcbiAgdHlwZTogam9pLnN0cmluZygpLnZhbGlkKCdwb2ludCcpLnJlcXVpcmVkKCksXG59KVxuXG5leHBvcnQgY29uc3QgcmVsYXRpb25zaGlwID0gYmFzZUZpZWxkLmtleXMoe1xuICBuYW1lOiBqb2kuc3RyaW5nKCkucmVxdWlyZWQoKSxcbiAgYWRtaW46IGJhc2VBZG1pbkZpZWxkcy5rZXlzKHtcbiAgICBhbGxvd0NyZWF0ZTogam9pLmJvb2xlYW4oKS5kZWZhdWx0KHRydWUpLFxuICAgIGNvbXBvbmVudHM6IGJhc2VBZG1pbkNvbXBvbmVudEZpZWxkcy5rZXlzKHtcbiAgICAgIEVycm9yOiBjb21wb25lbnRTY2hlbWEsXG4gICAgICBMYWJlbDogY29tcG9uZW50U2NoZW1hLFxuICAgIH0pLFxuICAgIGlzU29ydGFibGU6IGpvaS5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gICAgc29ydE9wdGlvbnM6IGpvaS5hbHRlcm5hdGl2ZXMoKS5jb25kaXRpb25hbChqb2kucmVmKCcuLi5yZWxhdGlvblRvJyksIHtcbiAgICAgIGlzOiBqb2kuc3RyaW5nKCksXG4gICAgICBvdGhlcndpc2U6IGpvaS5vYmplY3QoKS5wYXR0ZXJuKGpvaS5zdHJpbmcoKSwgam9pLnN0cmluZygpKSxcbiAgICAgIHRoZW46IGpvaS5zdHJpbmcoKSxcbiAgICB9KSxcbiAgfSksXG4gIGRlZmF1bHRWYWx1ZTogam9pLmFsdGVybmF0aXZlcygpLnRyeShqb2kuZnVuYygpKSxcbiAgZmlsdGVyT3B0aW9uczogam9pLmFsdGVybmF0aXZlcygpLnRyeShqb2kub2JqZWN0KCksIGpvaS5mdW5jKCkpLFxuICBoYXNNYW55OiBqb2kuYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBtYXg6IGpvaVxuICAgIC5udW1iZXIoKVxuICAgIC53aGVuKCdoYXNNYW55JywgeyBpczogam9pLm5vdCh0cnVlKSwgdGhlbjogam9pLmZvcmJpZGRlbigpIH0pXG4gICAgLndhcm5pbmcoJ2RlcHJlY2F0ZWQnLCB7IG1lc3NhZ2U6ICdVc2UgbWF4Um93cyBpbnN0ZWFkLicgfSksXG4gIG1heERlcHRoOiBqb2kubnVtYmVyKCksXG4gIG1heFJvd3M6IGpvaS5udW1iZXIoKS53aGVuKCdoYXNNYW55JywgeyBpczogam9pLm5vdCh0cnVlKSwgdGhlbjogam9pLmZvcmJpZGRlbigpIH0pLFxuICBtaW46IGpvaVxuICAgIC5udW1iZXIoKVxuICAgIC53aGVuKCdoYXNNYW55JywgeyBpczogam9pLm5vdCh0cnVlKSwgdGhlbjogam9pLmZvcmJpZGRlbigpIH0pXG4gICAgLndhcm5pbmcoJ2RlcHJlY2F0ZWQnLCB7IG1lc3NhZ2U6ICdVc2UgbWluUm93cyBpbnN0ZWFkLicgfSksXG4gIG1pblJvd3M6IGpvaS5udW1iZXIoKS53aGVuKCdoYXNNYW55JywgeyBpczogam9pLm5vdCh0cnVlKSwgdGhlbjogam9pLmZvcmJpZGRlbigpIH0pLFxuICByZWxhdGlvblRvOiBqb2kuYWx0ZXJuYXRpdmVzKCkudHJ5KGpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLCBqb2kuYXJyYXkoKS5pdGVtcyhqb2kuc3RyaW5nKCkpKSxcbiAgdHlwZTogam9pLnN0cmluZygpLnZhbGlkKCdyZWxhdGlvbnNoaXAnKS5yZXF1aXJlZCgpLFxufSlcblxuZXhwb3J0IGNvbnN0IGJsb2NrcyA9IGJhc2VGaWVsZC5rZXlzKHtcbiAgbmFtZTogam9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gIGJsb2Nrczogam9pXG4gICAgLmFycmF5KClcbiAgICAuaXRlbXMoXG4gICAgICBqb2kub2JqZWN0KHtcbiAgICAgICAgZmllbGRzOiBqb2kuYXJyYXkoKS5pdGVtcyhqb2kubGluaygnI2ZpZWxkJykpLFxuICAgICAgICBncmFwaFFMOiBqb2kub2JqZWN0KCkua2V5cyh7XG4gICAgICAgICAgc2luZ3VsYXJOYW1lOiBqb2kuc3RyaW5nKCksXG4gICAgICAgIH0pLFxuICAgICAgICBpbWFnZUFsdFRleHQ6IGpvaS5zdHJpbmcoKSxcbiAgICAgICAgaW1hZ2VVUkw6IGpvaS5zdHJpbmcoKSxcbiAgICAgICAgaW50ZXJmYWNlTmFtZTogam9pLnN0cmluZygpLFxuICAgICAgICBsYWJlbHM6IGpvaS5vYmplY3Qoe1xuICAgICAgICAgIHBsdXJhbDogam9pXG4gICAgICAgICAgICAuYWx0ZXJuYXRpdmVzKClcbiAgICAgICAgICAgIC50cnkoam9pLnN0cmluZygpLCBqb2kub2JqZWN0KCkucGF0dGVybihqb2kuc3RyaW5nKCksIFtqb2kuc3RyaW5nKCldKSksXG4gICAgICAgICAgc2luZ3VsYXI6IGpvaVxuICAgICAgICAgICAgLmFsdGVybmF0aXZlcygpXG4gICAgICAgICAgICAudHJ5KGpvaS5zdHJpbmcoKSwgam9pLm9iamVjdCgpLnBhdHRlcm4oam9pLnN0cmluZygpLCBbam9pLnN0cmluZygpXSkpLFxuICAgICAgICB9KSxcbiAgICAgICAgc2x1Zzogam9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gICAgICAgIGN1c3RvbTogam9pLm9iamVjdCgpLnBhdHRlcm4oam9pLnN0cmluZygpLCBqb2kuYW55KCkpLFxuICAgICAgfSksXG4gICAgKVxuICAgIC5yZXF1aXJlZCgpLFxuICBkZWZhdWx0VmFsdWU6IGpvaS5hbHRlcm5hdGl2ZXMoKS50cnkoam9pLmFycmF5KCkuaXRlbXMoam9pLm9iamVjdCgpKSwgam9pLmZ1bmMoKSksXG4gIGxhYmVsczogam9pLm9iamVjdCh7XG4gICAgcGx1cmFsOiBqb2lcbiAgICAgIC5hbHRlcm5hdGl2ZXMoKVxuICAgICAgLnRyeShqb2kuc3RyaW5nKCksIGpvaS5vYmplY3QoKS5wYXR0ZXJuKGpvaS5zdHJpbmcoKSwgW2pvaS5zdHJpbmcoKV0pKSxcbiAgICBzaW5ndWxhcjogam9pXG4gICAgICAuYWx0ZXJuYXRpdmVzKClcbiAgICAgIC50cnkoam9pLnN0cmluZygpLCBqb2kub2JqZWN0KCkucGF0dGVybihqb2kuc3RyaW5nKCksIFtqb2kuc3RyaW5nKCldKSksXG4gIH0pLFxuICBtYXhSb3dzOiBqb2kubnVtYmVyKCksXG4gIG1pblJvd3M6IGpvaS5udW1iZXIoKSxcbiAgdHlwZTogam9pLnN0cmluZygpLnZhbGlkKCdibG9ja3MnKS5yZXF1aXJlZCgpLFxufSlcblxuZXhwb3J0IGNvbnN0IHJpY2hUZXh0ID0gYmFzZUZpZWxkLmtleXMoe1xuICBuYW1lOiBqb2kuc3RyaW5nKCkucmVxdWlyZWQoKSxcbiAgYWRtaW46IGJhc2VBZG1pbkZpZWxkcy5kZWZhdWx0KCksXG4gIGRlZmF1bHRWYWx1ZTogam9pLmFsdGVybmF0aXZlcygpLnRyeShqb2kuYXJyYXkoKS5pdGVtcyhqb2kub2JqZWN0KCkpLCBqb2kuZnVuYygpLCBqb2kub2JqZWN0KCkpLFxuICBlZGl0b3I6IGpvaVxuICAgIC5vYmplY3QoKVxuICAgIC5rZXlzKHtcbiAgICAgIENlbGxDb21wb25lbnQ6IGNvbXBvbmVudFNjaGVtYS5vcHRpb25hbCgpLFxuICAgICAgRmllbGRDb21wb25lbnQ6IGNvbXBvbmVudFNjaGVtYS5vcHRpb25hbCgpLFxuICAgICAgTGF6eUNlbGxDb21wb25lbnQ6IGpvaS5mdW5jKCkub3B0aW9uYWwoKSxcbiAgICAgIExhenlGaWVsZENvbXBvbmVudDogam9pLmZ1bmMoKS5vcHRpb25hbCgpLFxuICAgICAgYWZ0ZXJSZWFkUHJvbWlzZTogam9pLmZ1bmMoKS5vcHRpb25hbCgpLFxuICAgICAgb3V0cHV0U2NoZW1hOiBqb2kuZnVuYygpLm9wdGlvbmFsKCksXG4gICAgICBwb3B1bGF0aW9uUHJvbWlzZTogam9pLmZ1bmMoKS5vcHRpb25hbCgpLFxuICAgICAgdmFsaWRhdGU6IGpvaS5mdW5jKCkucmVxdWlyZWQoKSxcbiAgICB9KVxuICAgIC51bmtub3duKCksXG4gIHR5cGU6IGpvaS5zdHJpbmcoKS52YWxpZCgncmljaFRleHQnKS5yZXF1aXJlZCgpLFxufSlcblxuZXhwb3J0IGNvbnN0IGRhdGUgPSBiYXNlRmllbGQua2V5cyh7XG4gIG5hbWU6IGpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICBhZG1pbjogYmFzZUFkbWluRmllbGRzLmtleXMoe1xuICAgIGNvbXBvbmVudHM6IGJhc2VBZG1pbkNvbXBvbmVudEZpZWxkcy5rZXlzKHtcbiAgICAgIEVycm9yOiBjb21wb25lbnRTY2hlbWEsXG4gICAgICBMYWJlbDogY29tcG9uZW50U2NoZW1hLFxuICAgICAgYWZ0ZXJJbnB1dDogam9pLmFycmF5KCkuaXRlbXMoY29tcG9uZW50U2NoZW1hKSxcbiAgICAgIGJlZm9yZUlucHV0OiBqb2kuYXJyYXkoKS5pdGVtcyhjb21wb25lbnRTY2hlbWEpLFxuICAgIH0pLFxuICAgIGRhdGU6IGpvaS5vYmplY3Qoe1xuICAgICAgZGlzcGxheUZvcm1hdDogam9pLnN0cmluZygpLFxuICAgICAgbWF4RGF0ZTogam9pLmRhdGUoKSxcbiAgICAgIG1heFRpbWU6IGpvaS5kYXRlKCksXG4gICAgICBtaW5EYXRlOiBqb2kuZGF0ZSgpLFxuICAgICAgbWluVGltZTogam9pLmRhdGUoKSxcbiAgICAgIG1vbnRoc1RvU2hvdzogam9pLm51bWJlcigpLFxuICAgICAgb3ZlcnJpZGVzOiBqb2kub2JqZWN0KCkudW5rbm93bigpLFxuICAgICAgcGlja2VyQXBwZWFyYW5jZTogam9pLnN0cmluZygpLFxuICAgICAgdGltZUZvcm1hdDogam9pLnN0cmluZygpLFxuICAgICAgdGltZUludGVydmFsczogam9pLm51bWJlcigpLFxuICAgIH0pLFxuICAgIHBsYWNlaG9sZGVyOiBqb2kuc3RyaW5nKCksXG4gIH0pLFxuICBkZWZhdWx0VmFsdWU6IGpvaS5hbHRlcm5hdGl2ZXMoKS50cnkoam9pLnN0cmluZygpLCBqb2kuZnVuYygpKSxcbiAgdHlwZTogam9pLnN0cmluZygpLnZhbGlkKCdkYXRlJykucmVxdWlyZWQoKSxcbn0pXG5cbmV4cG9ydCBjb25zdCB1aSA9IGpvaS5vYmplY3QoKS5rZXlzKHtcbiAgbmFtZTogam9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gIGFkbWluOiBqb2lcbiAgICAub2JqZWN0KClcbiAgICAua2V5cyh7XG4gICAgICBjb21wb25lbnRzOiBqb2lcbiAgICAgICAgLm9iamVjdCgpXG4gICAgICAgIC5rZXlzKHtcbiAgICAgICAgICBDZWxsOiBjb21wb25lbnRTY2hlbWEsXG4gICAgICAgICAgRmllbGQ6IGNvbXBvbmVudFNjaGVtYSxcbiAgICAgICAgfSlcbiAgICAgICAgLmRlZmF1bHQoe30pLFxuICAgICAgY29uZGl0aW9uOiBqb2kuZnVuYygpLFxuICAgICAgcG9zaXRpb246IGpvaS5zdHJpbmcoKS52YWxpZCgnc2lkZWJhcicpLFxuICAgICAgd2lkdGg6IGpvaS5zdHJpbmcoKSxcbiAgICB9KVxuICAgIC5kZWZhdWx0KCksXG4gIGN1c3RvbTogam9pLm9iamVjdCgpLnBhdHRlcm4oam9pLnN0cmluZygpLCBqb2kuYW55KCkpLFxuICBsYWJlbDogam9pLmFsdGVybmF0aXZlcygpLnRyeShqb2kuc3RyaW5nKCksIGpvaS5vYmplY3QoKS5wYXR0ZXJuKGpvaS5zdHJpbmcoKSwgW2pvaS5zdHJpbmcoKV0pKSxcbiAgdHlwZTogam9pLnN0cmluZygpLnZhbGlkKCd1aScpLnJlcXVpcmVkKCksXG59KVxuXG5jb25zdCBmaWVsZFNjaGVtYSA9IGpvaVxuICAuYWx0ZXJuYXRpdmVzKClcbiAgLnRyeShcbiAgICB0ZXh0LFxuICAgIG51bWJlcixcbiAgICB0ZXh0YXJlYSxcbiAgICBlbWFpbCxcbiAgICBjb2RlLFxuICAgIGpzb24sXG4gICAgc2VsZWN0LFxuICAgIGdyb3VwLFxuICAgIGFycmF5LFxuICAgIHJvdyxcbiAgICBjb2xsYXBzaWJsZSxcbiAgICB0YWJzLFxuICAgIHJhZGlvLFxuICAgIHJlbGF0aW9uc2hpcCxcbiAgICBjaGVja2JveCxcbiAgICB1cGxvYWQsXG4gICAgcmljaFRleHQsXG4gICAgYmxvY2tzLFxuICAgIGRhdGUsXG4gICAgcG9pbnQsXG4gICAgdWksXG4gIClcbiAgLmlkKCdmaWVsZCcpXG5cbmV4cG9ydCBkZWZhdWx0IGZpZWxkU2NoZW1hXG4iXSwibmFtZXMiOlsiYXJyYXkiLCJiYXNlQWRtaW5Db21wb25lbnRGaWVsZHMiLCJiYXNlQWRtaW5GaWVsZHMiLCJiYXNlRmllbGQiLCJibG9ja3MiLCJjaGVja2JveCIsImNvZGUiLCJjb2xsYXBzaWJsZSIsImRhdGUiLCJlbWFpbCIsImdyb3VwIiwiaWRGaWVsZCIsImpzb24iLCJudW1iZXIiLCJwb2ludCIsInJhZGlvIiwicmVsYXRpb25zaGlwIiwicmljaFRleHQiLCJyb3ciLCJzZWxlY3QiLCJ0YWJzIiwidGV4dCIsInRleHRhcmVhIiwidWkiLCJ1cGxvYWQiLCJqb2kiLCJvYmplY3QiLCJrZXlzIiwiQ2VsbCIsImNvbXBvbmVudFNjaGVtYSIsIkZpZWxkIiwiRmlsdGVyIiwiZGVmYXVsdCIsImNsYXNzTmFtZSIsInN0cmluZyIsImNvbXBvbmVudHMiLCJjb25kaXRpb24iLCJmdW5jIiwiZGVzY3JpcHRpb24iLCJhbHRlcm5hdGl2ZXMiLCJ0cnkiLCJwYXR0ZXJuIiwiZGlzYWJsZUJ1bGtFZGl0IiwiYm9vbGVhbiIsImRpc2FibGVkIiwiaGlkZGVuIiwiaW5pdENvbGxhcHNlZCIsInBvc2l0aW9uIiwidmFsaWQiLCJyZWFkT25seSIsInN0eWxlIiwidW5rbm93biIsIndpZHRoIiwiYWNjZXNzIiwiY3JlYXRlIiwicmVhZCIsInVwZGF0ZSIsImFkbWluIiwiY3VzdG9tIiwiYW55IiwiaG9va3MiLCJhZnRlckNoYW5nZSIsIml0ZW1zIiwiYWZ0ZXJSZWFkIiwiYmVmb3JlQ2hhbmdlIiwiYmVmb3JlVmFsaWRhdGUiLCJpbmRleCIsImxhYmVsIiwibG9jYWxpemVkIiwicmVxdWlyZWQiLCJzYXZlVG9KV1QiLCJ1bmlxdWUiLCJ2YWxpZGF0ZSIsIm5hbWUiLCJpbnZhbGlkIiwibm90IiwidHlwZSIsImF1dG9Db21wbGV0ZSIsIkVycm9yIiwiTGFiZWwiLCJhZnRlcklucHV0IiwiYmVmb3JlSW5wdXQiLCJwbGFjZWhvbGRlciIsInJ0bCIsImRlZmF1bHRWYWx1ZSIsImhhc01hbnkiLCJtYXhMZW5ndGgiLCJtYXhSb3dzIiwid2hlbiIsImlzIiwidGhlbiIsImZvcmJpZGRlbiIsIm1pbkxlbmd0aCIsIm1pblJvd3MiLCJvdGhlcndpc2UiLCJzdGVwIiwibWF4IiwibWluIiwicm93cyIsImVkaXRvck9wdGlvbnMiLCJsYW5ndWFnZSIsImlzQ2xlYXJhYmxlIiwiaXNTb3J0YWJsZSIsImFsbG93Iiwib3B0aW9ucyIsInZhbHVlIiwibGF5b3V0IiwiZmllbGRzIiwibGluayIsInRhYiIsImV4aXN0IiwiaW50ZXJmYWNlTmFtZSIsImhpZGVHdXR0ZXIiLCJSb3dMYWJlbCIsImxhYmVscyIsInBsdXJhbCIsInNpbmd1bGFyIiwiZmlsdGVyT3B0aW9ucyIsIm1heERlcHRoIiwicmVsYXRpb25UbyIsImFsbG93Q3JlYXRlIiwic29ydE9wdGlvbnMiLCJjb25kaXRpb25hbCIsInJlZiIsIndhcm5pbmciLCJtZXNzYWdlIiwiZ3JhcGhRTCIsInNpbmd1bGFyTmFtZSIsImltYWdlQWx0VGV4dCIsImltYWdlVVJMIiwic2x1ZyIsImVkaXRvciIsIkNlbGxDb21wb25lbnQiLCJvcHRpb25hbCIsIkZpZWxkQ29tcG9uZW50IiwiTGF6eUNlbGxDb21wb25lbnQiLCJMYXp5RmllbGRDb21wb25lbnQiLCJhZnRlclJlYWRQcm9taXNlIiwib3V0cHV0U2NoZW1hIiwicG9wdWxhdGlvblByb21pc2UiLCJkaXNwbGF5Rm9ybWF0IiwibWF4RGF0ZSIsIm1heFRpbWUiLCJtaW5EYXRlIiwibWluVGltZSIsIm1vbnRoc1RvU2hvdyIsIm92ZXJyaWRlcyIsInBpY2tlckFwcGVh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
465
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9maWVsZHMvY29uZmlnL3NjaGVtYS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgam9pIGZyb20gJ2pvaSdcblxuaW1wb3J0IHsgY29tcG9uZW50U2NoZW1hIH0gZnJvbSAnLi4vLi4vY29uZmlnL3NoYXJlZC9jb21wb25lbnRTY2hlbWEuanMnXG5cbmV4cG9ydCBjb25zdCBiYXNlQWRtaW5Db21wb25lbnRGaWVsZHMgPSBqb2lcbiAgLm9iamVjdCgpXG4gIC5rZXlzKHtcbiAgICBDZWxsOiBjb21wb25lbnRTY2hlbWEsXG4gICAgRmllbGQ6IGNvbXBvbmVudFNjaGVtYSxcbiAgICBGaWx0ZXI6IGNvbXBvbmVudFNjaGVtYSxcbiAgfSlcbiAgLmRlZmF1bHQoe30pXG5cbmV4cG9ydCBjb25zdCBiYXNlQWRtaW5GaWVsZHMgPSBqb2kub2JqZWN0KCkua2V5cyh7XG4gIGNsYXNzTmFtZTogam9pLnN0cmluZygpLFxuICBjb21wb25lbnRzOiBiYXNlQWRtaW5Db21wb25lbnRGaWVsZHMsXG4gIGNvbmRpdGlvbjogam9pLmZ1bmMoKSxcbiAgZGVzY3JpcHRpb246IGpvaVxuICAgIC5hbHRlcm5hdGl2ZXMoKVxuICAgIC50cnkoam9pLnN0cmluZygpLCBqb2kub2JqZWN0KCkucGF0dGVybihqb2kuc3RyaW5nKCksIFtqb2kuc3RyaW5nKCldKSwgY29tcG9uZW50U2NoZW1hKSxcbiAgZGlzYWJsZUJ1bGtFZGl0OiBqb2kuYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBkaXNhYmxlZDogam9pLmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgaGlkZGVuOiBqb2kuYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBpbml0Q29sbGFwc2VkOiBqb2kuYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBwb3NpdGlvbjogam9pLnN0cmluZygpLnZhbGlkKCdzaWRlYmFyJyksXG4gIHJlYWRPbmx5OiBqb2kuYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBzdHlsZTogam9pLm9iamVjdCgpLnVua25vd24oKSxcbiAgd2lkdGg6IGpvaS5zdHJpbmcoKSxcbn0pXG5cbmV4cG9ydCBjb25zdCBiYXNlRmllbGQgPSBqb2lcbiAgLm9iamVjdCgpXG4gIC5rZXlzKHtcbiAgICBhY2Nlc3M6IGpvaS5vYmplY3QoKS5rZXlzKHtcbiAgICAgIGNyZWF0ZTogam9pLmZ1bmMoKSxcbiAgICAgIHJlYWQ6IGpvaS5mdW5jKCksXG4gICAgICB1cGRhdGU6IGpvaS5mdW5jKCksXG4gICAgfSksXG4gICAgYWRtaW46IGJhc2VBZG1pbkZpZWxkcy5kZWZhdWx0KCksXG4gICAgY3VzdG9tOiBqb2kub2JqZWN0KCkucGF0dGVybihqb2kuc3RyaW5nKCksIGpvaS5hbnkoKSksXG4gICAgaGlkZGVuOiBqb2kuYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICAgIGhvb2tzOiBqb2lcbiAgICAgIC5vYmplY3QoKVxuICAgICAgLmtleXMoe1xuICAgICAgICBhZnRlckNoYW5nZTogam9pLmFycmF5KCkuaXRlbXMoam9pLmZ1bmMoKSkuZGVmYXVsdChbXSksXG4gICAgICAgIGFmdGVyUmVhZDogam9pLmFycmF5KCkuaXRlbXMoam9pLmZ1bmMoKSkuZGVmYXVsdChbXSksXG4gICAgICAgIGJlZm9yZUNoYW5nZTogam9pLmFycmF5KCkuaXRlbXMoam9pLmZ1bmMoKSkuZGVmYXVsdChbXSksXG4gICAgICAgIGJlZm9yZVZhbGlkYXRlOiBqb2kuYXJyYXkoKS5pdGVtcyhqb2kuZnVuYygpKS5kZWZhdWx0KFtdKSxcbiAgICAgIH0pXG4gICAgICAuZGVmYXVsdCgpLFxuICAgIGluZGV4OiBqb2kuYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICAgIGxhYmVsOiBqb2lcbiAgICAgIC5hbHRlcm5hdGl2ZXMoKVxuICAgICAgLnRyeShqb2kub2JqZWN0KCkucGF0dGVybihqb2kuc3RyaW5nKCksIFtqb2kuc3RyaW5nKCldKSwgam9pLnN0cmluZygpLCBqb2kudmFsaWQoZmFsc2UpKSxcbiAgICBsb2NhbGl6ZWQ6IGpvaS5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gICAgcmVxdWlyZWQ6IGpvaS5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gICAgc2F2ZVRvSldUOiBqb2kuYWx0ZXJuYXRpdmVzKCkudHJ5KGpvaS5ib29sZWFuKCksIGpvaS5zdHJpbmcoKSkuZGVmYXVsdChmYWxzZSksXG4gICAgdW5pcXVlOiBqb2kuYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICAgIHZhbGlkYXRlOiBqb2kuZnVuYygpLFxuICB9KVxuICAuZGVmYXVsdCgpXG5cbmV4cG9ydCBjb25zdCBpZEZpZWxkID0gYmFzZUZpZWxkLmtleXMoe1xuICBuYW1lOiBqb2kuc3RyaW5nKCkudmFsaWQoJ2lkJyksXG4gIHR5cGU6IGpvaS5zdHJpbmcoKS52YWxpZCgndGV4dCcsICdudW1iZXInKSxcbiAgbG9jYWxpemVkOiBqb2kuaW52YWxpZCh0cnVlKSxcbiAgcmVxdWlyZWQ6IGpvaS5ub3QoZmFsc2UsIDApLmRlZmF1bHQodHJ1ZSksXG59KVxuXG5leHBvcnQgY29uc3QgdGV4dCA9IGJhc2VGaWVsZC5rZXlzKHtcbiAgbmFtZTogam9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gIHR5cGU6IGpvaS5zdHJpbmcoKS52YWxpZCgndGV4dCcpLnJlcXVpcmVkKCksXG4gIGFkbWluOiBiYXNlQWRtaW5GaWVsZHMua2V5cyh7XG4gICAgYXV0b0NvbXBsZXRlOiBqb2kuc3RyaW5nKCksXG4gICAgY29tcG9uZW50czogYmFzZUFkbWluQ29tcG9uZW50RmllbGRzLmtleXMoe1xuICAgICAgRXJyb3I6IGNvbXBvbmVudFNjaGVtYSxcbiAgICAgIExhYmVsOiBjb21wb25lbnRTY2hlbWEsXG4gICAgICBhZnRlcklucHV0OiBqb2kuYXJyYXkoKS5pdGVtcyhjb21wb25lbnRTY2hlbWEpLFxuICAgICAgYmVmb3JlSW5wdXQ6IGpvaS5hcnJheSgpLml0ZW1zKGNvbXBvbmVudFNjaGVtYSksXG4gICAgfSksXG4gICAgcGxhY2Vob2xkZXI6IGpvaVxuICAgICAgLmFsdGVybmF0aXZlcygpXG4gICAgICAudHJ5KGpvaS5vYmplY3QoKS5wYXR0ZXJuKGpvaS5zdHJpbmcoKSwgW2pvaS5zdHJpbmcoKV0pLCBqb2kuc3RyaW5nKCkpLFxuICAgIHJ0bDogam9pLmJvb2xlYW4oKSxcbiAgfSksXG4gIGRlZmF1bHRWYWx1ZTogam9pLmFsdGVybmF0aXZlcygpLnRyeShqb2kuc3RyaW5nKCksIGpvaS5mdW5jKCkpLFxuICBoYXNNYW55OiBqb2kuYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBtYXhMZW5ndGg6IGpvaS5udW1iZXIoKSxcbiAgbWF4Um93czogam9pLm51bWJlcigpLndoZW4oJ2hhc01hbnknLCB7IGlzOiBqb2kubm90KHRydWUpLCB0aGVuOiBqb2kuZm9yYmlkZGVuKCkgfSksXG4gIG1pbkxlbmd0aDogam9pLm51bWJlcigpLFxuICBtaW5Sb3dzOiBqb2kubnVtYmVyKCkud2hlbignaGFzTWFueScsIHsgaXM6IGpvaS5ub3QodHJ1ZSksIHRoZW46IGpvaS5mb3JiaWRkZW4oKSB9KSxcbn0pXG5cbmV4cG9ydCBjb25zdCBudW1iZXIgPSBiYXNlRmllbGQua2V5cyh7XG4gIG5hbWU6IGpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICB0eXBlOiBqb2kuc3RyaW5nKCkudmFsaWQoJ251bWJlcicpLnJlcXVpcmVkKCksXG4gIGFkbWluOiBiYXNlQWRtaW5GaWVsZHMua2V5cyh7XG4gICAgYXV0b0NvbXBsZXRlOiBqb2kuc3RyaW5nKCksXG4gICAgY29tcG9uZW50czogYmFzZUFkbWluQ29tcG9uZW50RmllbGRzLmtleXMoe1xuICAgICAgRXJyb3I6IGNvbXBvbmVudFNjaGVtYSxcbiAgICAgIExhYmVsOiBjb21wb25lbnRTY2hlbWEsXG4gICAgICBhZnRlcklucHV0OiBqb2lcbiAgICAgICAgLmFycmF5KClcbiAgICAgICAgLml0ZW1zKGNvbXBvbmVudFNjaGVtYSlcbiAgICAgICAgLndoZW4oJ2hhc01hbnknLCB7IG5vdDogdHJ1ZSwgb3RoZXJ3aXNlOiBqb2kuZm9yYmlkZGVuKCkgfSksXG4gICAgICBiZWZvcmVJbnB1dDogam9pXG4gICAgICAgIC5hcnJheSgpXG4gICAgICAgIC5pdGVtcyhjb21wb25lbnRTY2hlbWEpXG4gICAgICAgIC53aGVuKCdoYXNNYW55JywgeyBub3Q6IHRydWUsIG90aGVyd2lzZTogam9pLmZvcmJpZGRlbigpIH0pLFxuICAgIH0pLFxuICAgIHBsYWNlaG9sZGVyOiBqb2kuc3RyaW5nKCksXG4gICAgc3RlcDogam9pLm51bWJlcigpLFxuICB9KSxcbiAgZGVmYXVsdFZhbHVlOiBqb2kuYWx0ZXJuYXRpdmVzKCkudHJ5KGpvaS5udW1iZXIoKSwgam9pLmZ1bmMoKSksXG4gIGhhc01hbnk6IGpvaS5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIG1heDogam9pLm51bWJlcigpLFxuICBtYXhSb3dzOiBqb2kubnVtYmVyKCkud2hlbignaGFzTWFueScsIHsgaXM6IGpvaS5ub3QodHJ1ZSksIHRoZW46IGpvaS5mb3JiaWRkZW4oKSB9KSxcbiAgbWluOiBqb2kubnVtYmVyKCksXG4gIG1pblJvd3M6IGpvaS5udW1iZXIoKS53aGVuKCdoYXNNYW55JywgeyBpczogam9pLm5vdCh0cnVlKSwgdGhlbjogam9pLmZvcmJpZGRlbigpIH0pLFxufSlcblxuZXhwb3J0IGNvbnN0IHRleHRhcmVhID0gYmFzZUZpZWxkLmtleXMoe1xuICBuYW1lOiBqb2kuc3RyaW5nKCkucmVxdWlyZWQoKSxcbiAgdHlwZTogam9pLnN0cmluZygpLnZhbGlkKCd0ZXh0YXJlYScpLnJlcXVpcmVkKCksXG4gIGFkbWluOiBiYXNlQWRtaW5GaWVsZHMua2V5cyh7XG4gICAgY29tcG9uZW50czogYmFzZUFkbWluQ29tcG9uZW50RmllbGRzLmtleXMoe1xuICAgICAgRXJyb3I6IGNvbXBvbmVudFNjaGVtYSxcbiAgICAgIExhYmVsOiBjb21wb25lbnRTY2hlbWEsXG4gICAgICBhZnRlcklucHV0OiBqb2kuYXJyYXkoKS5pdGVtcyhjb21wb25lbnRTY2hlbWEpLFxuICAgICAgYmVmb3JlSW5wdXQ6IGpvaS5hcnJheSgpLml0ZW1zKGNvbXBvbmVudFNjaGVtYSksXG4gICAgfSksXG4gICAgcGxhY2Vob2xkZXI6IGpvaS5zdHJpbmcoKSxcbiAgICByb3dzOiBqb2kubnVtYmVyKCksXG4gICAgcnRsOiBqb2kuYm9vbGVhbigpLFxuICB9KSxcbiAgZGVmYXVsdFZhbHVlOiBqb2kuYWx0ZXJuYXRpdmVzKCkudHJ5KGpvaS5zdHJpbmcoKSwgam9pLmZ1bmMoKSksXG4gIG1heExlbmd0aDogam9pLm51bWJlcigpLFxuICBtaW5MZW5ndGg6IGpvaS5udW1iZXIoKSxcbn0pXG5cbmV4cG9ydCBjb25zdCBlbWFpbCA9IGJhc2VGaWVsZC5rZXlzKHtcbiAgbmFtZTogam9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gIHR5cGU6IGpvaS5zdHJpbmcoKS52YWxpZCgnZW1haWwnKS5yZXF1aXJlZCgpLFxuICBhZG1pbjogYmFzZUFkbWluRmllbGRzLmtleXMoe1xuICAgIGF1dG9Db21wbGV0ZTogam9pLnN0cmluZygpLFxuICAgIGNvbXBvbmVudHM6IGJhc2VBZG1pbkNvbXBvbmVudEZpZWxkcy5rZXlzKHtcbiAgICAgIEVycm9yOiBjb21wb25lbnRTY2hlbWEsXG4gICAgICBMYWJlbDogY29tcG9uZW50U2NoZW1hLFxuICAgICAgYWZ0ZXJJbnB1dDogam9pLmFycmF5KCkuaXRlbXMoY29tcG9uZW50U2NoZW1hKSxcbiAgICAgIGJlZm9yZUlucHV0OiBqb2kuYXJyYXkoKS5pdGVtcyhjb21wb25lbnRTY2hlbWEpLFxuICAgIH0pLFxuICAgIHBsYWNlaG9sZGVyOiBqb2kuc3RyaW5nKCksXG4gIH0pLFxuICBkZWZhdWx0VmFsdWU6IGpvaS5hbHRlcm5hdGl2ZXMoKS50cnkoam9pLnN0cmluZygpLCBqb2kuZnVuYygpKSxcbiAgbWF4TGVuZ3RoOiBqb2kubnVtYmVyKCksXG4gIG1pbkxlbmd0aDogam9pLm51bWJlcigpLFxufSlcblxuZXhwb3J0IGNvbnN0IGNvZGUgPSBiYXNlRmllbGQua2V5cyh7XG4gIG5hbWU6IGpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICB0eXBlOiBqb2kuc3RyaW5nKCkudmFsaWQoJ2NvZGUnKS5yZXF1aXJlZCgpLFxuICBhZG1pbjogYmFzZUFkbWluRmllbGRzLmtleXMoe1xuICAgIGNvbXBvbmVudHM6IGJhc2VBZG1pbkNvbXBvbmVudEZpZWxkcy5rZXlzKHtcbiAgICAgIEVycm9yOiBjb21wb25lbnRTY2hlbWEsXG4gICAgICBMYWJlbDogY29tcG9uZW50U2NoZW1hLFxuICAgIH0pLFxuICAgIGVkaXRvck9wdGlvbnM6IGpvaS5vYmplY3QoKS51bmtub3duKCksIC8vIEVkaXRvclsnb3B0aW9ucyddIEBtb25hY28tZWRpdG9yL3JlYWN0XG4gICAgbGFuZ3VhZ2U6IGpvaS5zdHJpbmcoKSxcbiAgfSksXG4gIGRlZmF1bHRWYWx1ZTogam9pLmFsdGVybmF0aXZlcygpLnRyeShqb2kuc3RyaW5nKCksIGpvaS5mdW5jKCkpLFxufSlcblxuZXhwb3J0IGNvbnN0IGpzb24gPSBiYXNlRmllbGQua2V5cyh7XG4gIG5hbWU6IGpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICB0eXBlOiBqb2kuc3RyaW5nKCkudmFsaWQoJ2pzb24nKS5yZXF1aXJlZCgpLFxuICBhZG1pbjogYmFzZUFkbWluRmllbGRzLmtleXMoe1xuICAgIGNvbXBvbmVudHM6IGJhc2VBZG1pbkNvbXBvbmVudEZpZWxkcy5rZXlzKHtcbiAgICAgIEVycm9yOiBjb21wb25lbnRTY2hlbWEsXG4gICAgICBMYWJlbDogY29tcG9uZW50U2NoZW1hLFxuICAgIH0pLFxuICAgIGVkaXRvck9wdGlvbnM6IGpvaS5vYmplY3QoKS51bmtub3duKCksIC8vIEVkaXRvclsnb3B0aW9ucyddIEBtb25hY28tZWRpdG9yL3JlYWN0XG4gIH0pLFxuICBkZWZhdWx0VmFsdWU6IGpvaS5hbHRlcm5hdGl2ZXMoKS50cnkoam9pLmFycmF5KCksIGpvaS5vYmplY3QoKSksXG59KVxuXG5leHBvcnQgY29uc3Qgc2VsZWN0ID0gYmFzZUZpZWxkLmtleXMoe1xuICBuYW1lOiBqb2kuc3RyaW5nKCkucmVxdWlyZWQoKSxcbiAgdHlwZTogam9pLnN0cmluZygpLnZhbGlkKCdzZWxlY3QnKS5yZXF1aXJlZCgpLFxuICBhZG1pbjogYmFzZUFkbWluRmllbGRzLmtleXMoe1xuICAgIGNvbXBvbmVudHM6IGJhc2VBZG1pbkNvbXBvbmVudEZpZWxkcy5rZXlzKHtcbiAgICAgIEVycm9yOiBjb21wb25lbnRTY2hlbWEsXG4gICAgICBMYWJlbDogY29tcG9uZW50U2NoZW1hLFxuICAgIH0pLFxuICAgIGlzQ2xlYXJhYmxlOiBqb2kuYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICAgIGlzU29ydGFibGU6IGpvaS5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIH0pLFxuICBkZWZhdWx0VmFsdWU6IGpvaVxuICAgIC5hbHRlcm5hdGl2ZXMoKVxuICAgIC50cnkoam9pLnN0cmluZygpLmFsbG93KCcnKSwgam9pLmFycmF5KCkuaXRlbXMoam9pLnN0cmluZygpLmFsbG93KCcnKSksIGpvaS5mdW5jKCkpLFxuICBoYXNNYW55OiBqb2kuYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBvcHRpb25zOiBqb2lcbiAgICAuYXJyYXkoKVxuICAgIC5taW4oMSlcbiAgICAuaXRlbXMoXG4gICAgICBqb2kuYWx0ZXJuYXRpdmVzKCkudHJ5KFxuICAgICAgICBqb2kuc3RyaW5nKCksXG4gICAgICAgIGpvaS5vYmplY3Qoe1xuICAgICAgICAgIGxhYmVsOiBqb2lcbiAgICAgICAgICAgIC5hbHRlcm5hdGl2ZXMoKVxuICAgICAgICAgICAgLnRyeShqb2kuc3RyaW5nKCksIGpvaS5vYmplY3QoKS5wYXR0ZXJuKGpvaS5zdHJpbmcoKSwgW2pvaS5zdHJpbmcoKV0pKSxcbiAgICAgICAgICB2YWx1ZTogam9pLnN0cmluZygpLnJlcXVpcmVkKCkuYWxsb3coJycpLFxuICAgICAgICB9KSxcbiAgICAgICksXG4gICAgKVxuICAgIC5yZXF1aXJlZCgpLFxufSlcblxuZXhwb3J0IGNvbnN0IHJhZGlvID0gYmFzZUZpZWxkLmtleXMoe1xuICBuYW1lOiBqb2kuc3RyaW5nKCkucmVxdWlyZWQoKSxcbiAgdHlwZTogam9pLnN0cmluZygpLnZhbGlkKCdyYWRpbycpLnJlcXVpcmVkKCksXG4gIGFkbWluOiBiYXNlQWRtaW5GaWVsZHMua2V5cyh7XG4gICAgY29tcG9uZW50czogYmFzZUFkbWluQ29tcG9uZW50RmllbGRzLmtleXMoe1xuICAgICAgRXJyb3I6IGNvbXBvbmVudFNjaGVtYSxcbiAgICAgIExhYmVsOiBjb21wb25lbnRTY2hlbWEsXG4gICAgfSksXG4gICAgbGF5b3V0OiBqb2kuc3RyaW5nKCkudmFsaWQoJ3ZlcnRpY2FsJywgJ2hvcml6b250YWwnKSxcbiAgfSksXG4gIGRlZmF1bHRWYWx1ZTogam9pLmFsdGVybmF0aXZlcygpLnRyeShqb2kuc3RyaW5nKCkuYWxsb3coJycpLCBqb2kuZnVuYygpKSxcbiAgb3B0aW9uczogam9pXG4gICAgLmFycmF5KClcbiAgICAubWluKDEpXG4gICAgLml0ZW1zKFxuICAgICAgam9pLmFsdGVybmF0aXZlcygpLnRyeShcbiAgICAgICAgam9pLnN0cmluZygpLFxuICAgICAgICBqb2kub2JqZWN0KHtcbiAgICAgICAgICBsYWJlbDogam9pXG4gICAgICAgICAgICAuYWx0ZXJuYXRpdmVzKClcbiAgICAgICAgICAgIC50cnkoam9pLnN0cmluZygpLCBqb2kub2JqZWN0KCkucGF0dGVybihqb2kuc3RyaW5nKCksIFtqb2kuc3RyaW5nKCldKSlcbiAgICAgICAgICAgIC5yZXF1aXJlZCgpLFxuICAgICAgICAgIHZhbHVlOiBqb2kuc3RyaW5nKCkucmVxdWlyZWQoKS5hbGxvdygnJyksXG4gICAgICAgIH0pLFxuICAgICAgKSxcbiAgICApXG4gICAgLnJlcXVpcmVkKCksXG59KVxuXG5leHBvcnQgY29uc3Qgcm93ID0gYmFzZUZpZWxkLmtleXMoe1xuICB0eXBlOiBqb2kuc3RyaW5nKCkudmFsaWQoJ3JvdycpLnJlcXVpcmVkKCksXG4gIGFkbWluOiBiYXNlQWRtaW5GaWVsZHMuZGVmYXVsdCgpLFxuICBmaWVsZHM6IGpvaS5hcnJheSgpLml0ZW1zKGpvaS5saW5rKCcjZmllbGQnKSksXG59KVxuXG5leHBvcnQgY29uc3QgY29sbGFwc2libGUgPSBiYXNlRmllbGQua2V5cyh7XG4gIHR5cGU6IGpvaS5zdHJpbmcoKS52YWxpZCgnY29sbGFwc2libGUnKS5yZXF1aXJlZCgpLFxuICBhZG1pbjogYmFzZUFkbWluRmllbGRzLmRlZmF1bHQoKSxcbiAgZmllbGRzOiBqb2kuYXJyYXkoKS5pdGVtcyhqb2kubGluaygnI2ZpZWxkJykpLFxuICBsYWJlbDogam9pLmFsdGVybmF0aXZlcygpLnRyeShqb2kuc3RyaW5nKCksIGNvbXBvbmVudFNjaGVtYSksXG59KVxuXG5jb25zdCB0YWIgPSBiYXNlRmllbGQua2V5cyh7XG4gIG5hbWU6IGpvaS5zdHJpbmcoKS53aGVuKCdsb2NhbGl6ZWQnLCB7IGlzOiBqb2kuZXhpc3QoKSwgdGhlbjogam9pLnJlcXVpcmVkKCkgfSksXG4gIGRlc2NyaXB0aW9uOiBqb2kuYWx0ZXJuYXRpdmVzKCkudHJ5KGpvaS5zdHJpbmcoKSwgY29tcG9uZW50U2NoZW1hKSxcbiAgZmllbGRzOiBqb2kuYXJyYXkoKS5pdGVtcyhqb2kubGluaygnI2ZpZWxkJykpLnJlcXVpcmVkKCksXG4gIGludGVyZmFjZU5hbWU6IGpvaS5zdHJpbmcoKS53aGVuKCduYW1lJywgeyBub3Q6IGpvaS5leGlzdCgpLCB0aGVuOiBqb2kuZm9yYmlkZGVuKCkgfSksXG4gIGxhYmVsOiBqb2lcbiAgICAuYWx0ZXJuYXRpdmVzKClcbiAgICAudHJ5KGpvaS5zdHJpbmcoKSwgam9pLm9iamVjdCgpLnBhdHRlcm4oam9pLnN0cmluZygpLCBbam9pLnN0cmluZygpXSkpXG4gICAgLndoZW4oJ25hbWUnLCB7IGlzOiBqb2kubm90KCksIHRoZW46IGpvaS5yZXF1aXJlZCgpIH0pLFxuICBsb2NhbGl6ZWQ6IGpvaS5ib29sZWFuKCksXG4gIHNhdmVUb0pXVDogam9pLmFsdGVybmF0aXZlcygpLnRyeShqb2kuYm9vbGVhbigpLCBqb2kuc3RyaW5nKCkpLFxufSlcblxuZXhwb3J0IGNvbnN0IHRhYnMgPSBiYXNlRmllbGQua2V5cyh7XG4gIHR5cGU6IGpvaS5zdHJpbmcoKS52YWxpZCgndGFicycpLnJlcXVpcmVkKCksXG4gIGFkbWluOiBiYXNlQWRtaW5GaWVsZHMua2V5cyh7XG4gICAgZGVzY3JpcHRpb246IGpvaS5mb3JiaWRkZW4oKSxcbiAgfSksXG4gIGZpZWxkczogam9pLmZvcmJpZGRlbigpLFxuICBsb2NhbGl6ZWQ6IGpvaS5mb3JiaWRkZW4oKSxcbiAgdGFiczogam9pLmFycmF5KCkuaXRlbXModGFiKS5yZXF1aXJlZCgpLFxufSlcblxuZXhwb3J0IGNvbnN0IGdyb3VwID0gYmFzZUZpZWxkLmtleXMoe1xuICBuYW1lOiBqb2kuc3RyaW5nKCkucmVxdWlyZWQoKSxcbiAgdHlwZTogam9pLnN0cmluZygpLnZhbGlkKCdncm91cCcpLnJlcXVpcmVkKCksXG4gIGFkbWluOiBiYXNlQWRtaW5GaWVsZHMua2V5cyh7XG4gICAgaGlkZUd1dHRlcjogam9pLmJvb2xlYW4oKS5kZWZhdWx0KHRydWUpLFxuICB9KSxcbiAgZGVmYXVsdFZhbHVlOiBqb2kuYWx0ZXJuYXRpdmVzKCkudHJ5KGpvaS5vYmplY3QoKSwgam9pLmZ1bmMoKSksXG4gIGZpZWxkczogam9pLmFycmF5KCkuaXRlbXMoam9pLmxpbmsoJyNmaWVsZCcpKSxcbiAgaW50ZXJmYWNlTmFtZTogam9pLnN0cmluZygpLFxufSlcblxuZXhwb3J0IGNvbnN0IGFycmF5ID0gYmFzZUZpZWxkLmtleXMoe1xuICBuYW1lOiBqb2kuc3RyaW5nKCkucmVxdWlyZWQoKSxcbiAgdHlwZTogam9pLnN0cmluZygpLnZhbGlkKCdhcnJheScpLnJlcXVpcmVkKCksXG4gIGFkbWluOiBiYXNlQWRtaW5GaWVsZHNcbiAgICAua2V5cyh7XG4gICAgICBjb21wb25lbnRzOiBiYXNlQWRtaW5Db21wb25lbnRGaWVsZHNcbiAgICAgICAgLmtleXMoe1xuICAgICAgICAgIFJvd0xhYmVsOiBjb21wb25lbnRTY2hlbWEsXG4gICAgICAgIH0pXG4gICAgICAgIC5kZWZhdWx0KHt9KSxcbiAgICB9KVxuICAgIC5kZWZhdWx0KHt9KSxcbiAgZGVmYXVsdFZhbHVlOiBqb2kuYWx0ZXJuYXRpdmVzKCkudHJ5KGpvaS5hcnJheSgpLml0ZW1zKGpvaS5vYmplY3QoKSksIGpvaS5mdW5jKCkpLFxuICBmaWVsZHM6IGpvaS5hcnJheSgpLml0ZW1zKGpvaS5saW5rKCcjZmllbGQnKSkucmVxdWlyZWQoKSxcbiAgaW50ZXJmYWNlTmFtZTogam9pLnN0cmluZygpLFxuICBsYWJlbHM6IGpvaS5vYmplY3Qoe1xuICAgIHBsdXJhbDogam9pXG4gICAgICAuYWx0ZXJuYXRpdmVzKClcbiAgICAgIC50cnkoam9pLnN0cmluZygpLCBqb2kub2JqZWN0KCkucGF0dGVybihqb2kuc3RyaW5nKCksIFtqb2kuc3RyaW5nKCldKSksXG4gICAgc2luZ3VsYXI6IGpvaVxuICAgICAgLmFsdGVybmF0aXZlcygpXG4gICAgICAudHJ5KGpvaS5zdHJpbmcoKSwgam9pLm9iamVjdCgpLnBhdHRlcm4oam9pLnN0cmluZygpLCBbam9pLnN0cmluZygpXSkpLFxuICB9KSxcbiAgbWF4Um93czogam9pLm51bWJlcigpLFxuICBtaW5Sb3dzOiBqb2kubnVtYmVyKCksXG59KVxuXG5leHBvcnQgY29uc3QgdXBsb2FkID0gYmFzZUZpZWxkLmtleXMoe1xuICBuYW1lOiBqb2kuc3RyaW5nKCkucmVxdWlyZWQoKSxcbiAgdHlwZTogam9pLnN0cmluZygpLnZhbGlkKCd1cGxvYWQnKS5yZXF1aXJlZCgpLFxuICBhZG1pbjogYmFzZUFkbWluRmllbGRzLmtleXMoe1xuICAgIGNvbXBvbmVudHM6IGJhc2VBZG1pbkNvbXBvbmVudEZpZWxkcy5rZXlzKHtcbiAgICAgIEVycm9yOiBjb21wb25lbnRTY2hlbWEsXG4gICAgICBMYWJlbDogY29tcG9uZW50U2NoZW1hLFxuICAgIH0pLFxuICB9KSxcbiAgZGVmYXVsdFZhbHVlOiBqb2kuYWx0ZXJuYXRpdmVzKCkudHJ5KGpvaS5vYmplY3QoKSwgam9pLmZ1bmMoKSksXG4gIGZpbHRlck9wdGlvbnM6IGpvaS5hbHRlcm5hdGl2ZXMoKS50cnkoam9pLm9iamVjdCgpLCBqb2kuZnVuYygpKSxcbiAgbWF4RGVwdGg6IGpvaS5udW1iZXIoKSxcbiAgcmVsYXRpb25Ubzogam9pLnN0cmluZygpLnJlcXVpcmVkKCksXG59KVxuXG5leHBvcnQgY29uc3QgY2hlY2tib3ggPSBiYXNlRmllbGQua2V5cyh7XG4gIG5hbWU6IGpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICB0eXBlOiBqb2kuc3RyaW5nKCkudmFsaWQoJ2NoZWNrYm94JykucmVxdWlyZWQoKSxcbiAgYWRtaW46IGJhc2VBZG1pbkZpZWxkcy5rZXlzKHtcbiAgICBjb21wb25lbnRzOiBiYXNlQWRtaW5Db21wb25lbnRGaWVsZHMua2V5cyh7XG4gICAgICBFcnJvcjogY29tcG9uZW50U2NoZW1hLFxuICAgICAgTGFiZWw6IGNvbXBvbmVudFNjaGVtYSxcbiAgICAgIGFmdGVySW5wdXQ6IGpvaS5hcnJheSgpLml0ZW1zKGNvbXBvbmVudFNjaGVtYSksXG4gICAgICBiZWZvcmVJbnB1dDogam9pLmFycmF5KCkuaXRlbXMoY29tcG9uZW50U2NoZW1hKSxcbiAgICB9KSxcbiAgfSksXG4gIGRlZmF1bHRWYWx1ZTogam9pLmFsdGVybmF0aXZlcygpLnRyeShqb2kuYm9vbGVhbigpLCBqb2kuZnVuYygpKSxcbn0pXG5cbmV4cG9ydCBjb25zdCBwb2ludCA9IGJhc2VGaWVsZC5rZXlzKHtcbiAgbmFtZTogam9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gIHR5cGU6IGpvaS5zdHJpbmcoKS52YWxpZCgncG9pbnQnKS5yZXF1aXJlZCgpLFxuICBhZG1pbjogYmFzZUFkbWluRmllbGRzLmtleXMoe1xuICAgIGNvbXBvbmVudHM6IGJhc2VBZG1pbkNvbXBvbmVudEZpZWxkcy5rZXlzKHtcbiAgICAgIEVycm9yOiBjb21wb25lbnRTY2hlbWEsXG4gICAgICBMYWJlbDogY29tcG9uZW50U2NoZW1hLFxuICAgICAgYWZ0ZXJJbnB1dDogam9pLmFycmF5KCkuaXRlbXMoY29tcG9uZW50U2NoZW1hKSxcbiAgICAgIGJlZm9yZUlucHV0OiBqb2kuYXJyYXkoKS5pdGVtcyhjb21wb25lbnRTY2hlbWEpLFxuICAgIH0pLFxuICB9KSxcbiAgZGVmYXVsdFZhbHVlOiBqb2kuYWx0ZXJuYXRpdmVzKCkudHJ5KGpvaS5hcnJheSgpLml0ZW1zKGpvaS5udW1iZXIoKSkubWF4KDIpLm1pbigyKSwgam9pLmZ1bmMoKSksXG59KVxuXG5leHBvcnQgY29uc3QgcmVsYXRpb25zaGlwID0gYmFzZUZpZWxkLmtleXMoe1xuICBuYW1lOiBqb2kuc3RyaW5nKCkucmVxdWlyZWQoKSxcbiAgdHlwZTogam9pLnN0cmluZygpLnZhbGlkKCdyZWxhdGlvbnNoaXAnKS5yZXF1aXJlZCgpLFxuICBhZG1pbjogYmFzZUFkbWluRmllbGRzLmtleXMoe1xuICAgIGFsbG93Q3JlYXRlOiBqb2kuYm9vbGVhbigpLmRlZmF1bHQodHJ1ZSksXG4gICAgY29tcG9uZW50czogYmFzZUFkbWluQ29tcG9uZW50RmllbGRzLmtleXMoe1xuICAgICAgRXJyb3I6IGNvbXBvbmVudFNjaGVtYSxcbiAgICAgIExhYmVsOiBjb21wb25lbnRTY2hlbWEsXG4gICAgfSksXG4gICAgaXNTb3J0YWJsZTogam9pLmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgICBzb3J0T3B0aW9uczogam9pLmFsdGVybmF0aXZlcygpLmNvbmRpdGlvbmFsKGpvaS5yZWYoJy4uLnJlbGF0aW9uVG8nKSwge1xuICAgICAgaXM6IGpvaS5zdHJpbmcoKSxcbiAgICAgIG90aGVyd2lzZTogam9pLm9iamVjdCgpLnBhdHRlcm4oam9pLnN0cmluZygpLCBqb2kuc3RyaW5nKCkpLFxuICAgICAgdGhlbjogam9pLnN0cmluZygpLFxuICAgIH0pLFxuICB9KSxcbiAgZGVmYXVsdFZhbHVlOiBqb2kuYWx0ZXJuYXRpdmVzKCkudHJ5KGpvaS5mdW5jKCkpLFxuICBmaWx0ZXJPcHRpb25zOiBqb2kuYWx0ZXJuYXRpdmVzKCkudHJ5KGpvaS5vYmplY3QoKSwgam9pLmZ1bmMoKSksXG4gIGhhc01hbnk6IGpvaS5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIG1heDogam9pXG4gICAgLm51bWJlcigpXG4gICAgLndoZW4oJ2hhc01hbnknLCB7IGlzOiBqb2kubm90KHRydWUpLCB0aGVuOiBqb2kuZm9yYmlkZGVuKCkgfSlcbiAgICAud2FybmluZygnZGVwcmVjYXRlZCcsIHsgbWVzc2FnZTogJ1VzZSBtYXhSb3dzIGluc3RlYWQuJyB9KSxcbiAgbWF4RGVwdGg6IGpvaS5udW1iZXIoKSxcbiAgbWF4Um93czogam9pLm51bWJlcigpLndoZW4oJ2hhc01hbnknLCB7IGlzOiBqb2kubm90KHRydWUpLCB0aGVuOiBqb2kuZm9yYmlkZGVuKCkgfSksXG4gIG1pbjogam9pXG4gICAgLm51bWJlcigpXG4gICAgLndoZW4oJ2hhc01hbnknLCB7IGlzOiBqb2kubm90KHRydWUpLCB0aGVuOiBqb2kuZm9yYmlkZGVuKCkgfSlcbiAgICAud2FybmluZygnZGVwcmVjYXRlZCcsIHsgbWVzc2FnZTogJ1VzZSBtaW5Sb3dzIGluc3RlYWQuJyB9KSxcbiAgbWluUm93czogam9pLm51bWJlcigpLndoZW4oJ2hhc01hbnknLCB7IGlzOiBqb2kubm90KHRydWUpLCB0aGVuOiBqb2kuZm9yYmlkZGVuKCkgfSksXG4gIHJlbGF0aW9uVG86IGpvaS5hbHRlcm5hdGl2ZXMoKS50cnkoam9pLnN0cmluZygpLnJlcXVpcmVkKCksIGpvaS5hcnJheSgpLml0ZW1zKGpvaS5zdHJpbmcoKSkpLFxufSlcblxuZXhwb3J0IGNvbnN0IGJsb2NrcyA9IGJhc2VGaWVsZC5rZXlzKHtcbiAgbmFtZTogam9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gIHR5cGU6IGpvaS5zdHJpbmcoKS52YWxpZCgnYmxvY2tzJykucmVxdWlyZWQoKSxcbiAgYmxvY2tzOiBqb2lcbiAgICAuYXJyYXkoKVxuICAgIC5pdGVtcyhcbiAgICAgIGpvaS5vYmplY3Qoe1xuICAgICAgICBzbHVnOiBqb2kuc3RyaW5nKCkucmVxdWlyZWQoKSxcbiAgICAgICAgY3VzdG9tOiBqb2kub2JqZWN0KCkucGF0dGVybihqb2kuc3RyaW5nKCksIGpvaS5hbnkoKSksXG4gICAgICAgIGZpZWxkczogam9pLmFycmF5KCkuaXRlbXMoam9pLmxpbmsoJyNmaWVsZCcpKSxcbiAgICAgICAgZ3JhcGhRTDogam9pLm9iamVjdCgpLmtleXMoe1xuICAgICAgICAgIHNpbmd1bGFyTmFtZTogam9pLnN0cmluZygpLFxuICAgICAgICB9KSxcbiAgICAgICAgaW1hZ2VBbHRUZXh0OiBqb2kuc3RyaW5nKCksXG4gICAgICAgIGltYWdlVVJMOiBqb2kuc3RyaW5nKCksXG4gICAgICAgIGludGVyZmFjZU5hbWU6IGpvaS5zdHJpbmcoKSxcbiAgICAgICAgbGFiZWxzOiBqb2kub2JqZWN0KHtcbiAgICAgICAgICBwbHVyYWw6IGpvaVxuICAgICAgICAgICAgLmFsdGVybmF0aXZlcygpXG4gICAgICAgICAgICAudHJ5KGpvaS5zdHJpbmcoKSwgam9pLm9iamVjdCgpLnBhdHRlcm4oam9pLnN0cmluZygpLCBbam9pLnN0cmluZygpXSkpLFxuICAgICAgICAgIHNpbmd1bGFyOiBqb2lcbiAgICAgICAgICAgIC5hbHRlcm5hdGl2ZXMoKVxuICAgICAgICAgICAgLnRyeShqb2kuc3RyaW5nKCksIGpvaS5vYmplY3QoKS5wYXR0ZXJuKGpvaS5zdHJpbmcoKSwgW2pvaS5zdHJpbmcoKV0pKSxcbiAgICAgICAgfSksXG4gICAgICB9KSxcbiAgICApXG4gICAgLnJlcXVpcmVkKCksXG4gIGRlZmF1bHRWYWx1ZTogam9pLmFsdGVybmF0aXZlcygpLnRyeShqb2kuYXJyYXkoKS5pdGVtcyhqb2kub2JqZWN0KCkpLCBqb2kuZnVuYygpKSxcbiAgbGFiZWxzOiBqb2kub2JqZWN0KHtcbiAgICBwbHVyYWw6IGpvaVxuICAgICAgLmFsdGVybmF0aXZlcygpXG4gICAgICAudHJ5KGpvaS5zdHJpbmcoKSwgam9pLm9iamVjdCgpLnBhdHRlcm4oam9pLnN0cmluZygpLCBbam9pLnN0cmluZygpXSkpLFxuICAgIHNpbmd1bGFyOiBqb2lcbiAgICAgIC5hbHRlcm5hdGl2ZXMoKVxuICAgICAgLnRyeShqb2kuc3RyaW5nKCksIGpvaS5vYmplY3QoKS5wYXR0ZXJuKGpvaS5zdHJpbmcoKSwgW2pvaS5zdHJpbmcoKV0pKSxcbiAgfSksXG4gIG1heFJvd3M6IGpvaS5udW1iZXIoKSxcbiAgbWluUm93czogam9pLm51bWJlcigpLFxufSlcblxuZXhwb3J0IGNvbnN0IHJpY2hUZXh0ID0gYmFzZUZpZWxkLmtleXMoe1xuICBuYW1lOiBqb2kuc3RyaW5nKCkucmVxdWlyZWQoKSxcbiAgdHlwZTogam9pLnN0cmluZygpLnZhbGlkKCdyaWNoVGV4dCcpLnJlcXVpcmVkKCksXG4gIGFkbWluOiBiYXNlQWRtaW5GaWVsZHMuZGVmYXVsdCgpLFxuICBkZWZhdWx0VmFsdWU6IGpvaS5hbHRlcm5hdGl2ZXMoKS50cnkoam9pLmFycmF5KCkuaXRlbXMoam9pLm9iamVjdCgpKSwgam9pLmZ1bmMoKSwgam9pLm9iamVjdCgpKSxcbiAgZWRpdG9yOiBqb2lcbiAgICAub2JqZWN0KClcbiAgICAua2V5cyh7XG4gICAgICBDZWxsQ29tcG9uZW50OiBjb21wb25lbnRTY2hlbWEub3B0aW9uYWwoKSxcbiAgICAgIEZpZWxkQ29tcG9uZW50OiBjb21wb25lbnRTY2hlbWEub3B0aW9uYWwoKSxcbiAgICAgIExhenlDZWxsQ29tcG9uZW50OiBqb2kuZnVuYygpLm9wdGlvbmFsKCksXG4gICAgICBMYXp5RmllbGRDb21wb25lbnQ6IGpvaS5mdW5jKCkub3B0aW9uYWwoKSxcbiAgICAgIGFmdGVyUmVhZFByb21pc2U6IGpvaS5mdW5jKCkub3B0aW9uYWwoKSxcbiAgICAgIG91dHB1dFNjaGVtYTogam9pLmZ1bmMoKS5vcHRpb25hbCgpLFxuICAgICAgcG9wdWxhdGlvblByb21pc2U6IGpvaS5mdW5jKCkub3B0aW9uYWwoKSxcbiAgICAgIHZhbGlkYXRlOiBqb2kuZnVuYygpLnJlcXVpcmVkKCksXG4gICAgfSlcbiAgICAudW5rbm93bigpLFxufSlcblxuZXhwb3J0IGNvbnN0IGRhdGUgPSBiYXNlRmllbGQua2V5cyh7XG4gIG5hbWU6IGpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICB0eXBlOiBqb2kuc3RyaW5nKCkudmFsaWQoJ2RhdGUnKS5yZXF1aXJlZCgpLFxuICBhZG1pbjogYmFzZUFkbWluRmllbGRzLmtleXMoe1xuICAgIGNvbXBvbmVudHM6IGJhc2VBZG1pbkNvbXBvbmVudEZpZWxkcy5rZXlzKHtcbiAgICAgIEVycm9yOiBjb21wb25lbnRTY2hlbWEsXG4gICAgICBMYWJlbDogY29tcG9uZW50U2NoZW1hLFxuICAgICAgYWZ0ZXJJbnB1dDogam9pLmFycmF5KCkuaXRlbXMoY29tcG9uZW50U2NoZW1hKSxcbiAgICAgIGJlZm9yZUlucHV0OiBqb2kuYXJyYXkoKS5pdGVtcyhjb21wb25lbnRTY2hlbWEpLFxuICAgIH0pLFxuICAgIGRhdGU6IGpvaS5vYmplY3Qoe1xuICAgICAgZGlzcGxheUZvcm1hdDogam9pLnN0cmluZygpLFxuICAgICAgbWF4RGF0ZTogam9pLmRhdGUoKSxcbiAgICAgIG1heFRpbWU6IGpvaS5kYXRlKCksXG4gICAgICBtaW5EYXRlOiBqb2kuZGF0ZSgpLFxuICAgICAgbWluVGltZTogam9pLmRhdGUoKSxcbiAgICAgIG1vbnRoc1RvU2hvdzogam9pLm51bWJlcigpLFxuICAgICAgb3ZlcnJpZGVzOiBqb2kub2JqZWN0KCkudW5rbm93bigpLFxuICAgICAgcGlja2VyQXBwZWFyYW5jZTogam9pLnN0cmluZygpLFxuICAgICAgdGltZUZvcm1hdDogam9pLnN0cmluZygpLFxuICAgICAgdGltZUludGVydmFsczogam9pLm51bWJlcigpLFxuICAgIH0pLFxuICAgIHBsYWNlaG9sZGVyOiBqb2kuc3RyaW5nKCksXG4gIH0pLFxuICBkZWZhdWx0VmFsdWU6IGpvaS5hbHRlcm5hdGl2ZXMoKS50cnkoam9pLnN0cmluZygpLCBqb2kuZnVuYygpKSxcbn0pXG5cbmV4cG9ydCBjb25zdCB1aSA9IGpvaS5vYmplY3QoKS5rZXlzKHtcbiAgbmFtZTogam9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gIHR5cGU6IGpvaS5zdHJpbmcoKS52YWxpZCgndWknKS5yZXF1aXJlZCgpLFxuICBhZG1pbjogam9pXG4gICAgLm9iamVjdCgpXG4gICAgLmtleXMoe1xuICAgICAgY29tcG9uZW50czogam9pXG4gICAgICAgIC5vYmplY3QoKVxuICAgICAgICAua2V5cyh7XG4gICAgICAgICAgQ2VsbDogY29tcG9uZW50U2NoZW1hLFxuICAgICAgICAgIEZpZWxkOiBjb21wb25lbnRTY2hlbWEsXG4gICAgICAgIH0pXG4gICAgICAgIC5kZWZhdWx0KHt9KSxcbiAgICAgIGNvbmRpdGlvbjogam9pLmZ1bmMoKSxcbiAgICAgIHBvc2l0aW9uOiBqb2kuc3RyaW5nKCkudmFsaWQoJ3NpZGViYXInKSxcbiAgICAgIHdpZHRoOiBqb2kuc3RyaW5nKCksXG4gICAgfSlcbiAgICAuZGVmYXVsdCgpLFxuICBjdXN0b206IGpvaS5vYmplY3QoKS5wYXR0ZXJuKGpvaS5zdHJpbmcoKSwgam9pLmFueSgpKSxcbiAgbGFiZWw6IGpvaS5hbHRlcm5hdGl2ZXMoKS50cnkoam9pLnN0cmluZygpLCBqb2kub2JqZWN0KCkucGF0dGVybihqb2kuc3RyaW5nKCksIFtqb2kuc3RyaW5nKCldKSksXG59KVxuXG5jb25zdCBmaWVsZFNjaGVtYSA9IGpvaVxuICAuYWx0ZXJuYXRpdmVzKClcbiAgLnRyeShcbiAgICB0ZXh0LFxuICAgIG51bWJlcixcbiAgICB0ZXh0YXJlYSxcbiAgICBlbWFpbCxcbiAgICBjb2RlLFxuICAgIGpzb24sXG4gICAgc2VsZWN0LFxuICAgIGdyb3VwLFxuICAgIGFycmF5LFxuICAgIHJvdyxcbiAgICBjb2xsYXBzaWJsZSxcbiAgICB0YWJzLFxuICAgIHJhZGlvLFxuICAgIHJlbGF0aW9uc2hpcCxcbiAgICBjaGVja2JveCxcbiAgICB1cGxvYWQsXG4gICAgcmljaFRleHQsXG4gICAgYmxvY2tzLFxuICAgIGRhdGUsXG4gICAgcG9pbnQsXG4gICAgdWksXG4gIClcbiAgLmlkKCdmaWVsZCcpXG5cbmV4cG9ydCBkZWZhdWx0IGZpZWxkU2NoZW1hXG4iXSwibmFtZXMiOlsiam9pIiwiY29tcG9uZW50U2NoZW1hIiwiYmFzZUFkbWluQ29tcG9uZW50RmllbGRzIiwib2JqZWN0Iiwia2V5cyIsIkNlbGwiLCJGaWVsZCIsIkZpbHRlciIsImRlZmF1bHQiLCJiYXNlQWRtaW5GaWVsZHMiLCJjbGFzc05hbWUiLCJzdHJpbmciLCJjb21wb25lbnRzIiwiY29uZGl0aW9uIiwiZnVuYyIsImRlc2NyaXB0aW9uIiwiYWx0ZXJuYXRpdmVzIiwidHJ5IiwicGF0dGVybiIsImRpc2FibGVCdWxrRWRpdCIsImJvb2xlYW4iLCJkaXNhYmxlZCIsImhpZGRlbiIsImluaXRDb2xsYXBzZWQiLCJwb3NpdGlvbiIsInZhbGlkIiwicmVhZE9ubHkiLCJzdHlsZSIsInVua25vd24iLCJ3aWR0aCIsImJhc2VGaWVsZCIsImFjY2VzcyIsImNyZWF0ZSIsInJlYWQiLCJ1cGRhdGUiLCJhZG1pbiIsImN1c3RvbSIsImFueSIsImhvb2tzIiwiYWZ0ZXJDaGFuZ2UiLCJhcnJheSIsIml0ZW1zIiwiYWZ0ZXJSZWFkIiwiYmVmb3JlQ2hhbmdlIiwiYmVmb3JlVmFsaWRhdGUiLCJpbmRleCIsImxhYmVsIiwibG9jYWxpemVkIiwicmVxdWlyZWQiLCJzYXZlVG9KV1QiLCJ1bmlxdWUiLCJ2YWxpZGF0ZSIsImlkRmllbGQiLCJuYW1lIiwidHlwZSIsImludmFsaWQiLCJub3QiLCJ0ZXh0IiwiYXV0b0NvbXBsZXRlIiwiRXJyb3IiLCJMYWJlbCIsImFmdGVySW5wdXQiLCJiZWZvcmVJbnB1dCIsInBsYWNlaG9sZGVyIiwicnRsIiwiZGVmYXVsdFZhbHVlIiwiaGFzTWFueSIsIm1heExlbmd0aCIsIm51bWJlciIsIm1heFJvd3MiLCJ3aGVuIiwiaXMiLCJ0aGVuIiwiZm9yYmlkZGVuIiwibWluTGVuZ3RoIiwibWluUm93cyIsIm90aGVyd2lzZSIsInN0ZXAiLCJtYXgiLCJtaW4iLCJ0ZXh0YXJlYSIsInJvd3MiLCJlbWFpbCIsImNvZGUiLCJlZGl0b3JPcHRpb25zIiwibGFuZ3VhZ2UiLCJqc29uIiwic2VsZWN0IiwiaXNDbGVhcmFibGUiLCJpc1NvcnRhYmxlIiwiYWxsb3ciLCJvcHRpb25zIiwidmFsdWUiLCJyYWRpbyIsImxheW91dCIsInJvdyIsImZpZWxkcyIsImxpbmsiLCJjb2xsYXBzaWJsZSIsInRhYiIsImV4aXN0IiwiaW50ZXJmYWNlTmFtZSIsInRhYnMiLCJncm91cCIsImhpZGVHdXR0ZXIiLCJSb3dMYWJlbCIsImxhYmVscyIsInBsdXJhbCIsInNpbmd1bGFyIiwidXBsb2FkIiwiZmlsdGVyT3B0aW9ucyIsIm1heERlcHRoIiwicmVsYXRpb25UbyIsImNoZWNrYm94IiwicG9pbnQiLCJyZWxhdGlvbnNoaXAiLCJhbGxvd0NyZWF0ZSIsInNvcnRPcHRpb25zIiwiY29uZGl0aW9uYWwiLCJyZWYiLCJ3YXJuaW5nIiwibWVzc2FnZSIsImJsb2NrcyIsInNsdWciLCJncmFwaFFMIiwic2luZ3VsYXJOYW1lIiwiaW1hZ2VBbHRUZXh0IiwiaW1hZ2VVUkwiLCJyaWNoVGV4dCIsImVkaXRvciIsIkNlbGxDb21wb25lbnQiLCJvcHRpb25hbCIsIkZpZWxkQ29tcG9uZW50IiwiTGF6eUNlbGxDb21wb25lbnQiLCJMYXp5RmllbGRDb21wb25lbnQiLCJhZnRlclJlYWRQcm9taXNlIiwib3V0cHV0U2NoZW1hIiwicG9wdWxhdGlvblByb21pc2UiLCJkYXRlIiwiZGlzcGxheUZvcm1hdCIsIm1heERhdGUiLCJtYXhUaW1lIiwibWluRGF0ZSIsIm1pblRpbWUiLCJtb250aHNUb1Nob3ciLCJvdmVycmlkZXMiLCJwaWNrZXJBcHBlYXJh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