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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (348) hide show
  1. package/auth.js +5 -44
  2. package/bin.js +40 -1
  3. package/components.d.ts +14 -0
  4. package/components.js +71 -0
  5. package/config.js +10 -59
  6. package/database.js +21 -108
  7. package/dist/admin/RichText.js +2 -5
  8. package/dist/admin/elements/Cell.js +2 -5
  9. package/dist/admin/elements/DatePicker.js +2 -5
  10. package/dist/admin/elements/PreviewButton.js +2 -5
  11. package/dist/admin/elements/PublishButton.js +2 -5
  12. package/dist/admin/elements/SaveButton.js +2 -5
  13. package/dist/admin/elements/SaveDraftButton.js +2 -5
  14. package/dist/admin/elements/Tab.js +2 -5
  15. package/dist/admin/forms/Error.js +2 -5
  16. package/dist/admin/forms/FieldDescription.js +2 -5
  17. package/dist/admin/forms/FieldTypes.js +2 -5
  18. package/dist/admin/forms/Form.d.ts +22 -0
  19. package/dist/admin/forms/Form.d.ts.map +1 -1
  20. package/dist/admin/forms/Form.js +2 -5
  21. package/dist/admin/forms/Label.js +2 -5
  22. package/dist/admin/forms/RowLabel.js +2 -5
  23. package/dist/admin/types.d.ts +2 -1
  24. package/dist/admin/types.d.ts.map +1 -1
  25. package/dist/admin/types.js +2 -5
  26. package/dist/admin/views/types.d.ts +41 -0
  27. package/dist/admin/views/types.d.ts.map +1 -0
  28. package/dist/admin/views/types.js +3 -0
  29. package/dist/assets/assets.d.js +0 -1
  30. package/dist/auth/baseFields/accountLock.js +2 -12
  31. package/dist/auth/baseFields/apiKey.js +6 -21
  32. package/dist/auth/baseFields/auth.js +6 -16
  33. package/dist/auth/baseFields/verification.js +4 -14
  34. package/dist/auth/cookies.js +6 -33
  35. package/dist/auth/crypto.js +7 -30
  36. package/dist/auth/defaultAccess.js +2 -12
  37. package/dist/auth/defaultUser.js +4 -14
  38. package/dist/auth/executeAccess.js +5 -15
  39. package/dist/auth/extractJWT.js +4 -14
  40. package/dist/auth/getAccessResults.js +5 -15
  41. package/dist/auth/getAuthenticatedUser.js +2 -12
  42. package/dist/auth/getFieldsToSign.js +5 -15
  43. package/dist/auth/index.js +4 -27
  44. package/dist/auth/isLocked.js +2 -12
  45. package/dist/auth/operations/access.js +12 -22
  46. package/dist/auth/operations/forgotPassword.js +17 -32
  47. package/dist/auth/operations/init.js +2 -12
  48. package/dist/auth/operations/local/forgotPassword.js +8 -18
  49. package/dist/auth/operations/local/index.js +12 -27
  50. package/dist/auth/operations/local/login.js +8 -18
  51. package/dist/auth/operations/local/resetPassword.js +8 -18
  52. package/dist/auth/operations/local/unlock.js +8 -18
  53. package/dist/auth/operations/local/verifyEmail.js +8 -18
  54. package/dist/auth/operations/login.js +32 -47
  55. package/dist/auth/operations/logout.js +6 -21
  56. package/dist/auth/operations/me.js +4 -19
  57. package/dist/auth/operations/refresh.js +19 -34
  58. package/dist/auth/operations/registerFirstUser.js +10 -20
  59. package/dist/auth/operations/resetPassword.js +20 -43
  60. package/dist/auth/operations/unlock.js +16 -39
  61. package/dist/auth/operations/verifyEmail.js +14 -37
  62. package/dist/auth/sendVerificationEmail.js +4 -14
  63. package/dist/auth/strategies/apiKey.js +4 -19
  64. package/dist/auth/strategies/jwt.js +6 -21
  65. package/dist/auth/strategies/local/authenticate.js +6 -21
  66. package/dist/auth/strategies/local/generatePasswordSaltHash.js +7 -22
  67. package/dist/auth/strategies/local/incrementLoginAttempts.js +2 -12
  68. package/dist/auth/strategies/local/register.js +6 -16
  69. package/dist/auth/strategies/local/resetLoginAttempts.js +2 -12
  70. package/dist/auth/types.js +2 -12
  71. package/dist/bin/generateTypes.js +12 -27
  72. package/dist/bin/index.js +11 -53
  73. package/dist/bin/loadEnv.js +13 -26
  74. package/dist/bin/migrate.js +15 -30
  75. package/dist/bundlers/mocks/db-mongodb.js +0 -1
  76. package/dist/bundlers/mocks/db-postgres.js +2 -12
  77. package/dist/bundlers/mocks/dotENV.js +2 -12
  78. package/dist/bundlers/mocks/emptyModule.js +2 -12
  79. package/dist/bundlers/mocks/fileMock.js +2 -12
  80. package/dist/bundlers/types.js +2 -5
  81. package/dist/collections/config/build.js +2 -12
  82. package/dist/collections/config/defaults.js +9 -32
  83. package/dist/collections/config/sanitize.js +34 -49
  84. package/dist/collections/config/schema.js +157 -172
  85. package/dist/collections/config/types.d.ts +5 -5
  86. package/dist/collections/config/types.d.ts.map +1 -1
  87. package/dist/collections/config/types.js +2 -5
  88. package/dist/collections/dataloader.js +8 -23
  89. package/dist/collections/operations/create.js +38 -53
  90. package/dist/collections/operations/delete.js +27 -42
  91. package/dist/collections/operations/deleteByID.js +27 -42
  92. package/dist/collections/operations/docAccess.js +10 -20
  93. package/dist/collections/operations/find.js +25 -40
  94. package/dist/collections/operations/findByID.js +21 -36
  95. package/dist/collections/operations/findVersionByID.js +19 -34
  96. package/dist/collections/operations/findVersions.js +20 -35
  97. package/dist/collections/operations/local/create.js +10 -25
  98. package/dist/collections/operations/local/delete.js +10 -20
  99. package/dist/collections/operations/local/find.js +8 -18
  100. package/dist/collections/operations/local/findByID.js +8 -18
  101. package/dist/collections/operations/local/findVersionByID.js +8 -18
  102. package/dist/collections/operations/local/findVersions.js +8 -18
  103. package/dist/collections/operations/local/index.js +20 -35
  104. package/dist/collections/operations/local/restoreVersion.js +8 -18
  105. package/dist/collections/operations/local/update.js +12 -27
  106. package/dist/collections/operations/restoreVersion.js +26 -41
  107. package/dist/collections/operations/update.js +43 -58
  108. package/dist/collections/operations/updateByID.js +44 -59
  109. package/dist/collections/operations/utils.js +3 -12
  110. package/dist/config/build.js +9 -15
  111. package/dist/config/clientFiles.js +2 -12
  112. package/dist/config/createClientConfig.d.ts.map +1 -1
  113. package/dist/config/createClientConfig.js +12 -25
  114. package/dist/config/defaults.js +4 -19
  115. package/dist/config/find.js +18 -33
  116. package/dist/config/load.d.ts +1 -3
  117. package/dist/config/load.d.ts.map +1 -1
  118. package/dist/config/load.js +8 -37
  119. package/dist/config/sanitize.js +25 -40
  120. package/dist/config/schema.d.ts.map +1 -1
  121. package/dist/config/schema.js +116 -133
  122. package/dist/config/shared/adminViewSchema.js +9 -24
  123. package/dist/config/shared/componentSchema.js +21 -50
  124. package/dist/config/types.d.ts +12 -21
  125. package/dist/config/types.d.ts.map +1 -1
  126. package/dist/config/types.js +9 -21
  127. package/dist/config/validate.js +15 -71
  128. package/dist/database/combineQueries.js +4 -14
  129. package/dist/database/createDatabaseAdapter.js +14 -24
  130. package/dist/database/flattenWhereToOperators.js +2 -12
  131. package/dist/database/getLocalizedPaths.js +7 -22
  132. package/dist/database/migrations/createMigration.js +7 -22
  133. package/dist/database/migrations/getMigrations.js +4 -12
  134. package/dist/database/migrations/migrate.js +12 -22
  135. package/dist/database/migrations/migrateDown.js +12 -22
  136. package/dist/database/migrations/migrateRefresh.js +16 -24
  137. package/dist/database/migrations/migrateReset.js +12 -22
  138. package/dist/database/migrations/migrateStatus.js +8 -18
  139. package/dist/database/migrations/migrationTemplate.js +2 -12
  140. package/dist/database/migrations/migrationsCollection.js +2 -12
  141. package/dist/database/migrations/readMigrationFiles.d.ts.map +1 -1
  142. package/dist/database/migrations/readMigrationFiles.js +12 -24
  143. package/dist/database/queryValidation/types.js +2 -5
  144. package/dist/database/queryValidation/validateQueryPaths.js +13 -28
  145. package/dist/database/queryValidation/validateSearchParams.js +13 -21
  146. package/dist/database/types.d.ts +5 -2
  147. package/dist/database/types.d.ts.map +1 -1
  148. package/dist/database/types.js +2 -5
  149. package/dist/email/build.js +11 -26
  150. package/dist/email/defaults.js +2 -12
  151. package/dist/email/mockHandler.js +8 -23
  152. package/dist/email/sendEmail.js +2 -12
  153. package/dist/email/types.js +2 -5
  154. package/dist/errors/APIError.js +4 -19
  155. package/dist/errors/AuthenticationError.js +7 -22
  156. package/dist/errors/DuplicateCollection.js +4 -19
  157. package/dist/errors/DuplicateFieldName.js +4 -19
  158. package/dist/errors/DuplicateGlobal.js +4 -19
  159. package/dist/errors/ErrorDeletingFile.js +7 -22
  160. package/dist/errors/FileUploadError.js +7 -22
  161. package/dist/errors/Forbidden.js +7 -22
  162. package/dist/errors/InvalidConfiguration.js +6 -21
  163. package/dist/errors/InvalidFieldName.js +4 -19
  164. package/dist/errors/InvalidFieldRelationship.js +4 -19
  165. package/dist/errors/InvalidSchema.js +6 -21
  166. package/dist/errors/LockedAuth.js +7 -22
  167. package/dist/errors/MissingCollectionLabel.js +4 -19
  168. package/dist/errors/MissingFieldInputOptions.js +4 -19
  169. package/dist/errors/MissingFieldType.js +6 -21
  170. package/dist/errors/MissingFile.js +7 -22
  171. package/dist/errors/NotFound.js +7 -22
  172. package/dist/errors/QueryError.js +6 -21
  173. package/dist/errors/TimestampsRequired.js +4 -19
  174. package/dist/errors/UnathorizedError.js +7 -22
  175. package/dist/errors/ValidationError.js +8 -23
  176. package/dist/errors/index.js +20 -94
  177. package/dist/errors/types.js +2 -19
  178. package/dist/exports/auth.js +5 -44
  179. package/dist/exports/components/utilities.d.ts +0 -1
  180. package/dist/exports/components/utilities.js +0 -1
  181. package/dist/exports/config.js +10 -59
  182. package/dist/exports/database.js +21 -108
  183. package/dist/exports/errors.js +2 -68
  184. package/dist/exports/fields/index.js +3 -26
  185. package/dist/exports/fields/validations.js +2 -19
  186. package/dist/exports/operations.js +29 -125
  187. package/dist/exports/types.js +4 -74
  188. package/dist/exports/utilities.js +28 -141
  189. package/dist/exports/versions.js +9 -45
  190. package/dist/express/middleware/errorHandler.d.ts +0 -1
  191. package/dist/express/middleware/errorHandler.js +0 -1
  192. package/dist/express/middleware/index.d.ts +0 -1
  193. package/dist/express/middleware/index.js +0 -1
  194. package/dist/fields/baseFields/baseBlockFields.js +4 -14
  195. package/dist/fields/baseFields/baseIDField.js +4 -19
  196. package/dist/fields/config/sanitize.js +24 -39
  197. package/dist/fields/config/sanitize.spec.js +25 -29
  198. package/dist/fields/config/schema.js +329 -424
  199. package/dist/fields/config/types.js +15 -69
  200. package/dist/fields/getDefaultValue.js +2 -12
  201. package/dist/fields/hooks/afterChange/index.js +6 -16
  202. package/dist/fields/hooks/afterChange/promise.js +14 -22
  203. package/dist/fields/hooks/afterChange/traverseFields.js +4 -14
  204. package/dist/fields/hooks/afterRead/index.js +6 -16
  205. package/dist/fields/hooks/afterRead/promise.js +28 -36
  206. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.js +5 -15
  207. package/dist/fields/hooks/afterRead/traverseFields.js +4 -14
  208. package/dist/fields/hooks/beforeChange/cloneDataFromOriginalDoc.js +2 -12
  209. package/dist/fields/hooks/beforeChange/getExistingRowDoc.js +2 -12
  210. package/dist/fields/hooks/beforeChange/index.js +8 -18
  211. package/dist/fields/hooks/beforeChange/promise.js +26 -35
  212. package/dist/fields/hooks/beforeChange/traverseFields.js +4 -14
  213. package/dist/fields/hooks/beforeValidate/index.js +6 -16
  214. package/dist/fields/hooks/beforeValidate/promise.js +30 -39
  215. package/dist/fields/hooks/beforeValidate/traverseFields.js +4 -14
  216. package/dist/fields/mergeBaseFields.js +8 -23
  217. package/dist/fields/sortableFieldTypes.js +2 -12
  218. package/dist/fields/validations.js +31 -97
  219. package/dist/fields/validations.spec.js +93 -87
  220. package/dist/globals/config/build.d.ts +0 -1
  221. package/dist/globals/config/build.js +0 -1
  222. package/dist/globals/config/sanitize.js +17 -32
  223. package/dist/globals/config/schema.js +55 -70
  224. package/dist/globals/config/types.d.ts +5 -5
  225. package/dist/globals/config/types.d.ts.map +1 -1
  226. package/dist/globals/config/types.js +2 -5
  227. package/dist/globals/graphql/resolvers/docAccess.d.ts +0 -1
  228. package/dist/globals/graphql/resolvers/docAccess.js +0 -1
  229. package/dist/globals/operations/docAccess.js +10 -20
  230. package/dist/globals/operations/findOne.js +14 -29
  231. package/dist/globals/operations/findVersionByID.js +18 -33
  232. package/dist/globals/operations/findVersions.js +20 -35
  233. package/dist/globals/operations/local/findOne.js +8 -18
  234. package/dist/globals/operations/local/findVersionByID.js +8 -18
  235. package/dist/globals/operations/local/findVersions.js +8 -18
  236. package/dist/globals/operations/local/index.js +12 -27
  237. package/dist/globals/operations/local/restoreVersion.js +8 -18
  238. package/dist/globals/operations/local/update.js +8 -18
  239. package/dist/globals/operations/restoreVersion.js +16 -31
  240. package/dist/globals/operations/update.js +23 -38
  241. package/dist/index.d.ts.map +1 -1
  242. package/dist/index.js +50 -70
  243. package/dist/localization/middleware.js +2 -12
  244. package/dist/localization/sanitizeFallbackLocale.js +2 -12
  245. package/dist/preferences/deleteUserPreferences.js +2 -12
  246. package/dist/preferences/operations/delete.js +10 -25
  247. package/dist/preferences/operations/findOne.js +2 -12
  248. package/dist/preferences/operations/update.js +8 -23
  249. package/dist/preferences/preferencesCollection.js +8 -18
  250. package/dist/preferences/requestHandlers/delete.js +6 -21
  251. package/dist/preferences/requestHandlers/findOne.js +6 -21
  252. package/dist/preferences/requestHandlers/update.js +6 -21
  253. package/dist/preferences/types.js +2 -5
  254. package/dist/translations/extractTranslations.js +4 -14
  255. package/dist/translations/getLocalI18n.js +5 -15
  256. package/dist/types/constants.js +2 -12
  257. package/dist/types/index.js +2 -12
  258. package/dist/uploads/canResizeImage.js +2 -12
  259. package/dist/uploads/cropImage.d.ts +3 -7
  260. package/dist/uploads/cropImage.d.ts.map +1 -1
  261. package/dist/uploads/cropImage.js +4 -28
  262. package/dist/uploads/deleteAssociatedFiles.js +11 -26
  263. package/dist/uploads/docWithFilenameExists.js +2 -12
  264. package/dist/uploads/fileExists.js +4 -19
  265. package/dist/uploads/formatFilesize.js +2 -12
  266. package/dist/uploads/generateFileData.d.ts.map +1 -1
  267. package/dist/uploads/generateFileData.js +40 -53
  268. package/dist/uploads/getBaseFields.js +6 -16
  269. package/dist/uploads/getExternalFile.js +5 -15
  270. package/dist/uploads/getFileByPath.js +10 -25
  271. package/dist/uploads/getImageSize.js +7 -22
  272. package/dist/uploads/getSafeFilename.js +8 -23
  273. package/dist/uploads/imageResizer.d.ts +3 -1
  274. package/dist/uploads/imageResizer.d.ts.map +1 -1
  275. package/dist/uploads/imageResizer.js +28 -44
  276. package/dist/uploads/isImage.js +2 -12
  277. package/dist/uploads/mimeTypeValidator.js +2 -12
  278. package/dist/uploads/mimeTypeValidator.spec.js +11 -15
  279. package/dist/uploads/saveBufferToFile.js +6 -21
  280. package/dist/uploads/types.d.ts +7 -1
  281. package/dist/uploads/types.d.ts.map +1 -1
  282. package/dist/uploads/types.js +2 -5
  283. package/dist/uploads/unlinkTempFiles.js +9 -22
  284. package/dist/uploads/uploadFiles.js +6 -21
  285. package/dist/utilities/checkDuplicateCollections.js +4 -14
  286. package/dist/utilities/combineMerge.js +4 -19
  287. package/dist/utilities/commitTransaction.js +4 -12
  288. package/dist/utilities/configToJSONSchema.js +22 -41
  289. package/dist/utilities/configToJSONSchema.spec.js +5 -9
  290. package/dist/utilities/convertData.js +3 -23
  291. package/dist/utilities/createArrayFromCommaDelineated.js +2 -12
  292. package/dist/utilities/createLocalReq.js +6 -16
  293. package/dist/utilities/deepCopyObject.js +2 -12
  294. package/dist/utilities/deepMerge.js +2 -12
  295. package/dist/utilities/fieldSchemaToJSON.js +2 -12
  296. package/dist/utilities/flattenTopLevelFields.js +6 -16
  297. package/dist/utilities/formatLabels.js +9 -70
  298. package/dist/utilities/formatLabels.spec.js +8 -12
  299. package/dist/utilities/getCSSVariable.js +2 -12
  300. package/dist/utilities/getEntityPolicies.js +4 -14
  301. package/dist/utilities/getIDType.js +2 -12
  302. package/dist/utilities/getObjectDotNotation.js +2 -12
  303. package/dist/utilities/getUniqueListBy.js +2 -12
  304. package/dist/utilities/initTransaction.js +5 -12
  305. package/dist/utilities/isEntityHidden.js +2 -12
  306. package/dist/utilities/isNumber.js +2 -12
  307. package/dist/utilities/isValidID.js +5 -20
  308. package/dist/utilities/isolateObjectProperty.js +2 -12
  309. package/dist/utilities/killTransaction.js +4 -12
  310. package/dist/utilities/logger.d.ts.map +1 -1
  311. package/dist/utilities/logger.js +16 -37
  312. package/dist/utilities/mapAsync.js +2 -12
  313. package/dist/utilities/overwriteMerge.js +2 -12
  314. package/dist/utilities/parseCookies.js +4 -14
  315. package/dist/utilities/pinoPretty.d.ts +1 -0
  316. package/dist/utilities/pinoPretty.d.ts.map +1 -0
  317. package/dist/utilities/pinoPretty.js +2 -0
  318. package/dist/utilities/sanitizeInternalFields.js +2 -12
  319. package/dist/utilities/setsAreEqual.js +2 -12
  320. package/dist/utilities/telemetry/events/adminInit.js +7 -17
  321. package/dist/utilities/telemetry/events/serverInit.js +4 -14
  322. package/dist/utilities/telemetry/index.js +17 -40
  323. package/dist/utilities/telemetry/oneWayHash.js +4 -14
  324. package/dist/utilities/timestamp.js +2 -12
  325. package/dist/utilities/toKebabCase.js +2 -12
  326. package/dist/utilities/wait.js +2 -12
  327. package/dist/utilities/wordBoundariesRegex.js +3 -13
  328. package/dist/versions/baseFields.js +5 -23
  329. package/dist/versions/buildCollectionFields.js +2 -12
  330. package/dist/versions/buildGlobalFields.js +2 -12
  331. package/dist/versions/deleteCollectionVersions.js +2 -12
  332. package/dist/versions/drafts/appendVersionToQueryKey.js +2 -12
  333. package/dist/versions/drafts/getQueryDraftsSort.js +2 -12
  334. package/dist/versions/drafts/replaceWithDraftIfAvailable.js +12 -27
  335. package/dist/versions/enforceMaxVersions.js +2 -12
  336. package/dist/versions/getLatestCollectionVersion.js +4 -14
  337. package/dist/versions/getLatestGlobalVersion.js +4 -14
  338. package/dist/versions/getVersionsModelName.js +2 -12
  339. package/dist/versions/saveVersion.js +8 -23
  340. package/dist/versions/types.js +2 -5
  341. package/errors.js +2 -68
  342. package/graphql.d.ts +3 -0
  343. package/graphql.js +27 -0
  344. package/operations.js +29 -125
  345. package/package.json +17 -5
  346. package/types.js +4 -74
  347. package/utilities.js +28 -141
  348. package/versions.js +9 -45
@@ -1,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';
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
+ localized: joi.invalid(true),
52
+ required: joi.not(false, 0).default(true),
53
+ type: joi.string().valid('text', 'number')
149
54
  });
150
- const text = baseField.keys({
151
- name: _joi.default.string().required(),
55
+ export const text = baseField.keys({
56
+ name: joi.string().required(),
152
57
  admin: baseAdminFields.keys({
153
- autoComplete: _joi.default.string(),
58
+ autoComplete: joi.string(),
154
59
  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)
60
+ Error: componentSchema,
61
+ Label: componentSchema,
62
+ afterInput: joi.array().items(componentSchema),
63
+ beforeInput: joi.array().items(componentSchema)
159
64
  }),
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()
65
+ placeholder: joi.alternatives().try(joi.object().pattern(joi.string(), [
66
+ joi.string()
67
+ ]), joi.string()),
68
+ rtl: joi.boolean()
164
69
  }),
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()
70
+ defaultValue: joi.alternatives().try(joi.string(), joi.func()),
71
+ hasMany: joi.boolean().default(false),
72
+ maxLength: joi.number(),
73
+ maxRows: joi.number().when('hasMany', {
74
+ is: joi.not(true),
75
+ then: joi.forbidden()
171
76
  }),
172
- minLength: _joi.default.number(),
173
- minRows: _joi.default.number().when('hasMany', {
174
- is: _joi.default.not(true),
175
- then: _joi.default.forbidden()
77
+ minLength: joi.number(),
78
+ minRows: joi.number().when('hasMany', {
79
+ is: joi.not(true),
80
+ then: joi.forbidden()
176
81
  }),
177
- type: _joi.default.string().valid('text').required()
82
+ type: joi.string().valid('text').required()
178
83
  });
179
- const number = baseField.keys({
180
- name: _joi.default.string().required(),
84
+ export const number = baseField.keys({
85
+ name: joi.string().required(),
181
86
  admin: baseAdminFields.keys({
182
- autoComplete: _joi.default.string(),
87
+ autoComplete: joi.string(),
183
88
  components: baseAdminComponentFields.keys({
184
- Error: _componentSchema.componentSchema,
185
- Label: _componentSchema.componentSchema,
186
- afterInput: _joi.default.array().items(_componentSchema.componentSchema).when('hasMany', {
89
+ Error: componentSchema,
90
+ Label: componentSchema,
91
+ afterInput: joi.array().items(componentSchema).when('hasMany', {
187
92
  not: true,
188
- otherwise: _joi.default.forbidden()
93
+ otherwise: joi.forbidden()
189
94
  }),
190
- beforeInput: _joi.default.array().items(_componentSchema.componentSchema).when('hasMany', {
95
+ beforeInput: joi.array().items(componentSchema).when('hasMany', {
191
96
  not: true,
192
- otherwise: _joi.default.forbidden()
97
+ otherwise: joi.forbidden()
193
98
  })
194
99
  }),
195
- placeholder: _joi.default.string(),
196
- step: _joi.default.number()
100
+ placeholder: joi.string(),
101
+ step: joi.number()
197
102
  }),
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()
103
+ defaultValue: joi.alternatives().try(joi.number(), joi.func()),
104
+ hasMany: joi.boolean().default(false),
105
+ max: joi.number(),
106
+ maxRows: joi.number().when('hasMany', {
107
+ is: joi.not(true),
108
+ then: joi.forbidden()
204
109
  }),
205
- min: _joi.default.number(),
206
- minRows: _joi.default.number().when('hasMany', {
207
- is: _joi.default.not(true),
208
- then: _joi.default.forbidden()
110
+ min: joi.number(),
111
+ minRows: joi.number().when('hasMany', {
112
+ is: joi.not(true),
113
+ then: joi.forbidden()
209
114
  }),
210
- type: _joi.default.string().valid('number').required()
115
+ type: joi.string().valid('number').required()
211
116
  });
212
- const textarea = baseField.keys({
213
- name: _joi.default.string().required(),
117
+ export const textarea = baseField.keys({
118
+ name: joi.string().required(),
214
119
  admin: baseAdminFields.keys({
215
120
  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)
121
+ Error: componentSchema,
122
+ Label: componentSchema,
123
+ afterInput: joi.array().items(componentSchema),
124
+ beforeInput: joi.array().items(componentSchema)
220
125
  }),
221
- placeholder: _joi.default.string(),
222
- rows: _joi.default.number(),
223
- rtl: _joi.default.boolean()
126
+ placeholder: joi.string(),
127
+ rows: joi.number(),
128
+ rtl: joi.boolean()
224
129
  }),
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()
130
+ defaultValue: joi.alternatives().try(joi.string(), joi.func()),
131
+ maxLength: joi.number(),
132
+ minLength: joi.number(),
133
+ type: joi.string().valid('textarea').required()
229
134
  });
230
- const email = baseField.keys({
231
- name: _joi.default.string().required(),
135
+ export const email = baseField.keys({
136
+ name: joi.string().required(),
232
137
  admin: baseAdminFields.keys({
233
- autoComplete: _joi.default.string(),
138
+ autoComplete: joi.string(),
234
139
  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)
140
+ Error: componentSchema,
141
+ Label: componentSchema,
142
+ afterInput: joi.array().items(componentSchema),
143
+ beforeInput: joi.array().items(componentSchema)
239
144
  }),
240
- placeholder: _joi.default.string()
145
+ placeholder: joi.string()
241
146
  }),
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()
147
+ defaultValue: joi.alternatives().try(joi.string(), joi.func()),
148
+ maxLength: joi.number(),
149
+ minLength: joi.number(),
150
+ type: joi.string().valid('email').required()
246
151
  });
247
- const code = baseField.keys({
248
- name: _joi.default.string().required(),
152
+ export const code = baseField.keys({
153
+ name: joi.string().required(),
249
154
  admin: baseAdminFields.keys({
250
155
  components: baseAdminComponentFields.keys({
251
- Error: _componentSchema.componentSchema,
252
- Label: _componentSchema.componentSchema
156
+ Error: componentSchema,
157
+ Label: componentSchema
253
158
  }),
254
- editorOptions: _joi.default.object().unknown(),
255
- language: _joi.default.string()
159
+ editorOptions: joi.object().unknown(),
160
+ language: joi.string()
256
161
  }),
257
- defaultValue: _joi.default.alternatives().try(_joi.default.string(), _joi.default.func()),
258
- type: _joi.default.string().valid('code').required()
162
+ defaultValue: joi.alternatives().try(joi.string(), joi.func()),
163
+ type: joi.string().valid('code').required()
259
164
  });
260
- const json = baseField.keys({
261
- name: _joi.default.string().required(),
165
+ export const json = baseField.keys({
166
+ name: joi.string().required(),
262
167
  admin: baseAdminFields.keys({
263
168
  components: baseAdminComponentFields.keys({
264
- Error: _componentSchema.componentSchema,
265
- Label: _componentSchema.componentSchema
169
+ Error: componentSchema,
170
+ Label: componentSchema
266
171
  }),
267
- editorOptions: _joi.default.object().unknown()
172
+ editorOptions: joi.object().unknown()
268
173
  }),
269
- defaultValue: _joi.default.alternatives().try(_joi.default.array(), _joi.default.object()),
270
- type: _joi.default.string().valid('json').required()
174
+ defaultValue: joi.alternatives().try(joi.array(), joi.object()),
175
+ type: joi.string().valid('json').required()
271
176
  });
272
- const select = baseField.keys({
273
- name: _joi.default.string().required(),
177
+ export const select = baseField.keys({
178
+ name: joi.string().required(),
274
179
  admin: baseAdminFields.keys({
275
180
  components: baseAdminComponentFields.keys({
276
- Error: _componentSchema.componentSchema,
277
- Label: _componentSchema.componentSchema
181
+ Error: componentSchema,
182
+ Label: componentSchema
278
183
  }),
279
- isClearable: _joi.default.boolean().default(false),
280
- isSortable: _joi.default.boolean().default(false)
184
+ isClearable: joi.boolean().default(false),
185
+ isSortable: joi.boolean().default(false)
281
186
  }),
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()
187
+ defaultValue: joi.alternatives().try(joi.string().allow(''), joi.array().items(joi.string().allow('')), joi.func()),
188
+ hasMany: joi.boolean().default(false),
189
+ options: joi.array().min(1).items(joi.alternatives().try(joi.string(), joi.object({
190
+ label: joi.alternatives().try(joi.string(), joi.object().pattern(joi.string(), [
191
+ joi.string()
287
192
  ])),
288
- value: _joi.default.string().required().allow('')
193
+ value: joi.string().required().allow('')
289
194
  }))).required(),
290
- type: _joi.default.string().valid('select').required()
195
+ type: joi.string().valid('select').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(),
294
199
  admin: baseAdminFields.keys({
295
200
  components: baseAdminComponentFields.keys({
296
- Error: _componentSchema.componentSchema,
297
- Label: _componentSchema.componentSchema
201
+ Error: componentSchema,
202
+ Label: componentSchema
298
203
  }),
299
- layout: _joi.default.string().valid('vertical', 'horizontal')
204
+ layout: joi.string().valid('vertical', 'horizontal')
300
205
  }),
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()
206
+ defaultValue: joi.alternatives().try(joi.string().allow(''), joi.func()),
207
+ options: joi.array().min(1).items(joi.alternatives().try(joi.string(), joi.object({
208
+ label: joi.alternatives().try(joi.string(), joi.object().pattern(joi.string(), [
209
+ joi.string()
305
210
  ])).required(),
306
- value: _joi.default.string().required().allow('')
211
+ value: joi.string().required().allow('')
307
212
  }))).required(),
308
- type: _joi.default.string().valid('radio').required()
213
+ type: joi.string().valid('radio').required()
309
214
  });
310
- const row = baseField.keys({
215
+ export const row = baseField.keys({
311
216
  admin: baseAdminFields.default(),
312
- fields: _joi.default.array().items(_joi.default.link('#field')),
313
- type: _joi.default.string().valid('row').required()
217
+ fields: joi.array().items(joi.link('#field')),
218
+ type: joi.string().valid('row').required()
314
219
  });
315
- const collapsible = baseField.keys({
220
+ export const collapsible = baseField.keys({
316
221
  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()
222
+ fields: joi.array().items(joi.link('#field')),
223
+ label: joi.alternatives().try(joi.string(), componentSchema),
224
+ type: joi.string().valid('collapsible').required()
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({
342
247
  admin: baseAdminFields.keys({
343
- description: _joi.default.forbidden()
248
+ description: joi.forbidden()
344
249
  }),
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()
250
+ fields: joi.forbidden(),
251
+ localized: joi.forbidden(),
252
+ tabs: joi.array().items(tab).required(),
253
+ type: joi.string().valid('tabs').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(),
352
257
  admin: baseAdminFields.keys({
353
- hideGutter: _joi.default.boolean().default(true)
258
+ hideGutter: joi.boolean().default(true)
354
259
  }),
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()
260
+ defaultValue: joi.alternatives().try(joi.object(), joi.func()),
261
+ fields: joi.array().items(joi.link('#field')),
262
+ interfaceName: joi.string(),
263
+ type: joi.string().valid('group').required()
359
264
  });
360
- const array = baseField.keys({
361
- name: _joi.default.string().required(),
265
+ export const array = baseField.keys({
266
+ name: joi.string().required(),
362
267
  admin: baseAdminFields.keys({
363
268
  components: baseAdminComponentFields.keys({
364
- RowLabel: _componentSchema.componentSchema
269
+ RowLabel: componentSchema
365
270
  }).default({})
366
271
  }).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()
272
+ defaultValue: joi.alternatives().try(joi.array().items(joi.object()), joi.func()),
273
+ fields: joi.array().items(joi.link('#field')).required(),
274
+ interfaceName: joi.string(),
275
+ labels: joi.object({
276
+ plural: joi.alternatives().try(joi.string(), joi.object().pattern(joi.string(), [
277
+ joi.string()
373
278
  ])),
374
- singular: _joi.default.alternatives().try(_joi.default.string(), _joi.default.object().pattern(_joi.default.string(), [
375
- _joi.default.string()
279
+ singular: joi.alternatives().try(joi.string(), joi.object().pattern(joi.string(), [
280
+ joi.string()
376
281
  ]))
377
282
  }),
378
- maxRows: _joi.default.number(),
379
- minRows: _joi.default.number(),
380
- type: _joi.default.string().valid('array').required()
283
+ maxRows: joi.number(),
284
+ minRows: joi.number(),
285
+ type: joi.string().valid('array').required()
381
286
  });
382
- const upload = baseField.keys({
383
- name: _joi.default.string().required(),
287
+ export const upload = baseField.keys({
288
+ name: joi.string().required(),
384
289
  admin: baseAdminFields.keys({
385
290
  components: baseAdminComponentFields.keys({
386
- Error: _componentSchema.componentSchema,
387
- Label: _componentSchema.componentSchema
291
+ Error: componentSchema,
292
+ Label: componentSchema
388
293
  })
389
294
  }),
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()
295
+ defaultValue: joi.alternatives().try(joi.object(), joi.func()),
296
+ filterOptions: joi.alternatives().try(joi.object(), joi.func()),
297
+ maxDepth: joi.number(),
298
+ relationTo: joi.string().required(),
299
+ type: joi.string().valid('upload').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(),
398
303
  admin: baseAdminFields.keys({
399
304
  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)
305
+ Error: componentSchema,
306
+ Label: componentSchema,
307
+ afterInput: joi.array().items(componentSchema),
308
+ beforeInput: joi.array().items(componentSchema)
404
309
  })
405
310
  }),
406
- defaultValue: _joi.default.alternatives().try(_joi.default.boolean(), _joi.default.func()),
407
- type: _joi.default.string().valid('checkbox').required()
311
+ defaultValue: joi.alternatives().try(joi.boolean(), joi.func()),
312
+ type: joi.string().valid('checkbox').required()
408
313
  });
409
- const point = baseField.keys({
410
- name: _joi.default.string().required(),
314
+ export const point = baseField.keys({
315
+ name: joi.string().required(),
411
316
  admin: baseAdminFields.keys({
412
317
  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)
318
+ Error: componentSchema,
319
+ Label: componentSchema,
320
+ afterInput: joi.array().items(componentSchema),
321
+ beforeInput: joi.array().items(componentSchema)
417
322
  })
418
323
  }),
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()
324
+ defaultValue: joi.alternatives().try(joi.array().items(joi.number()).max(2).min(2), joi.func()),
325
+ type: joi.string().valid('point').required()
421
326
  });
422
- const relationship = baseField.keys({
423
- name: _joi.default.string().required(),
327
+ export const relationship = baseField.keys({
328
+ name: joi.string().required(),
424
329
  admin: baseAdminFields.keys({
425
- allowCreate: _joi.default.boolean().default(true),
330
+ allowCreate: joi.boolean().default(true),
426
331
  components: baseAdminComponentFields.keys({
427
- Error: _componentSchema.componentSchema,
428
- Label: _componentSchema.componentSchema
332
+ Error: componentSchema,
333
+ Label: componentSchema
429
334
  }),
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()
335
+ isSortable: joi.boolean().default(false),
336
+ sortOptions: joi.alternatives().conditional(joi.ref('...relationTo'), {
337
+ is: joi.string(),
338
+ otherwise: joi.object().pattern(joi.string(), joi.string()),
339
+ then: joi.string()
435
340
  })
436
341
  }),
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()
342
+ defaultValue: joi.alternatives().try(joi.func()),
343
+ filterOptions: joi.alternatives().try(joi.object(), joi.func()),
344
+ hasMany: joi.boolean().default(false),
345
+ max: joi.number().when('hasMany', {
346
+ is: joi.not(true),
347
+ then: joi.forbidden()
443
348
  }).warning('deprecated', {
444
349
  message: 'Use maxRows instead.'
445
350
  }),
446
- maxDepth: _joi.default.number(),
447
- maxRows: _joi.default.number().when('hasMany', {
448
- is: _joi.default.not(true),
449
- then: _joi.default.forbidden()
351
+ maxDepth: joi.number(),
352
+ maxRows: joi.number().when('hasMany', {
353
+ is: joi.not(true),
354
+ then: joi.forbidden()
450
355
  }),
451
- min: _joi.default.number().when('hasMany', {
452
- is: _joi.default.not(true),
453
- then: _joi.default.forbidden()
356
+ min: joi.number().when('hasMany', {
357
+ is: joi.not(true),
358
+ then: joi.forbidden()
454
359
  }).warning('deprecated', {
455
360
  message: 'Use minRows instead.'
456
361
  }),
457
- minRows: _joi.default.number().when('hasMany', {
458
- is: _joi.default.not(true),
459
- then: _joi.default.forbidden()
362
+ minRows: joi.number().when('hasMany', {
363
+ is: joi.not(true),
364
+ then: joi.forbidden()
460
365
  }),
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()
366
+ relationTo: joi.alternatives().try(joi.string().required(), joi.array().items(joi.string())),
367
+ type: joi.string().valid('relationship').required()
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
+ blocks: joi.array().items(joi.object({
372
+ fields: joi.array().items(joi.link('#field')),
373
+ graphQL: joi.object().keys({
374
+ singularName: joi.string()
470
375
  }),
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()
376
+ imageAltText: joi.string(),
377
+ imageURL: joi.string(),
378
+ interfaceName: joi.string(),
379
+ labels: joi.object({
380
+ plural: joi.alternatives().try(joi.string(), joi.object().pattern(joi.string(), [
381
+ joi.string()
477
382
  ])),
478
- singular: _joi.default.alternatives().try(_joi.default.string(), _joi.default.object().pattern(_joi.default.string(), [
479
- _joi.default.string()
383
+ singular: joi.alternatives().try(joi.string(), joi.object().pattern(joi.string(), [
384
+ joi.string()
480
385
  ]))
481
386
  }),
482
- slug: _joi.default.string().required(),
483
- custom: _joi.default.object().pattern(_joi.default.string(), _joi.default.any())
387
+ slug: joi.string().required(),
388
+ custom: joi.object().pattern(joi.string(), joi.any())
484
389
  })).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()
390
+ defaultValue: joi.alternatives().try(joi.array().items(joi.object()), joi.func()),
391
+ labels: joi.object({
392
+ plural: joi.alternatives().try(joi.string(), joi.object().pattern(joi.string(), [
393
+ joi.string()
489
394
  ])),
490
- singular: _joi.default.alternatives().try(_joi.default.string(), _joi.default.object().pattern(_joi.default.string(), [
491
- _joi.default.string()
395
+ singular: joi.alternatives().try(joi.string(), joi.object().pattern(joi.string(), [
396
+ joi.string()
492
397
  ]))
493
398
  }),
494
- maxRows: _joi.default.number(),
495
- minRows: _joi.default.number(),
496
- type: _joi.default.string().valid('blocks').required()
399
+ maxRows: joi.number(),
400
+ minRows: joi.number(),
401
+ type: joi.string().valid('blocks').required()
497
402
  });
498
- const richText = baseField.keys({
499
- name: _joi.default.string().required(),
403
+ export const richText = baseField.keys({
404
+ name: joi.string().required(),
500
405
  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()
406
+ defaultValue: joi.alternatives().try(joi.array().items(joi.object()), joi.func(), joi.object()),
407
+ editor: joi.object().keys({
408
+ CellComponent: componentSchema.optional(),
409
+ FieldComponent: componentSchema.optional(),
410
+ LazyCellComponent: joi.func().optional(),
411
+ LazyFieldComponent: joi.func().optional(),
412
+ afterReadPromise: joi.func().optional(),
413
+ outputSchema: joi.func().optional(),
414
+ populationPromise: joi.func().optional(),
415
+ validate: joi.func().required()
511
416
  }).unknown(),
512
- type: _joi.default.string().valid('richText').required()
417
+ type: joi.string().valid('richText').required()
513
418
  });
514
- const date = baseField.keys({
515
- name: _joi.default.string().required(),
419
+ export const date = baseField.keys({
420
+ name: joi.string().required(),
516
421
  admin: baseAdminFields.keys({
517
422
  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)
423
+ Error: componentSchema,
424
+ Label: componentSchema,
425
+ afterInput: joi.array().items(componentSchema),
426
+ beforeInput: joi.array().items(componentSchema)
522
427
  }),
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()
428
+ date: joi.object({
429
+ displayFormat: joi.string(),
430
+ maxDate: joi.date(),
431
+ maxTime: joi.date(),
432
+ minDate: joi.date(),
433
+ minTime: joi.date(),
434
+ monthsToShow: joi.number(),
435
+ overrides: joi.object().unknown(),
436
+ pickerAppearance: joi.string(),
437
+ timeFormat: joi.string(),
438
+ timeIntervals: joi.number()
534
439
  }),
535
- placeholder: _joi.default.string()
440
+ placeholder: joi.string()
536
441
  }),
537
- defaultValue: _joi.default.alternatives().try(_joi.default.string(), _joi.default.func()),
538
- type: _joi.default.string().valid('date').required()
442
+ defaultValue: joi.alternatives().try(joi.string(), joi.func()),
443
+ type: joi.string().valid('date').required()
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
+ admin: joi.object().keys({
448
+ components: joi.object().keys({
449
+ Cell: componentSchema,
450
+ Field: componentSchema
546
451
  }).default({}),
547
- condition: _joi.default.func(),
548
- position: _joi.default.string().valid('sidebar'),
549
- width: _joi.default.string()
452
+ condition: joi.func(),
453
+ position: joi.string().valid('sidebar'),
454
+ width: joi.string()
550
455
  }).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()
456
+ custom: joi.object().pattern(joi.string(), joi.any()),
457
+ label: joi.alternatives().try(joi.string(), joi.object().pattern(joi.string(), [
458
+ joi.string()
554
459
  ])),
555
- type: _joi.default.string().valid('ui').required()
460
+ type: joi.string().valid('ui').required()
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9maWVsZHMvY29uZmlnL3NjaGVtYS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgam9pIGZyb20gJ2pvaSdcblxuaW1wb3J0IHsgY29tcG9uZW50U2NoZW1hIH0gZnJvbSAnLi4vLi4vY29uZmlnL3NoYXJlZC9jb21wb25lbnRTY2hlbWEnXG5cbmV4cG9ydCBjb25zdCBiYXNlQWRtaW5Db21wb25lbnRGaWVsZHMgPSBqb2lcbiAgLm9iamVjdCgpXG4gIC5rZXlzKHtcbiAgICBDZWxsOiBjb21wb25lbnRTY2hlbWEsXG4gICAgRmllbGQ6IGNvbXBvbmVudFNjaGVtYSxcbiAgICBGaWx0ZXI6IGNvbXBvbmVudFNjaGVtYSxcbiAgfSlcbiAgLmRlZmF1bHQoe30pXG5cbmV4cG9ydCBjb25zdCBiYXNlQWRtaW5GaWVsZHMgPSBqb2kub2JqZWN0KCkua2V5cyh7XG4gIGNsYXNzTmFtZTogam9pLnN0cmluZygpLFxuICBjb21wb25lbnRzOiBiYXNlQWRtaW5Db21wb25lbnRGaWVsZHMsXG4gIGNvbmRpdGlvbjogam9pLmZ1bmMoKSxcbiAgZGVzY3JpcHRpb246IGpvaVxuICAgIC5hbHRlcm5hdGl2ZXMoKVxuICAgIC50cnkoam9pLnN0cmluZygpLCBqb2kub2JqZWN0KCkucGF0dGVybihqb2kuc3RyaW5nKCksIFtqb2kuc3RyaW5nKCldKSwgY29tcG9uZW50U2NoZW1hKSxcbiAgZGlzYWJsZUJ1bGtFZGl0OiBqb2kuYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBkaXNhYmxlZDogam9pLmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgaGlkZGVuOiBqb2kuYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBpbml0Q29sbGFwc2VkOiBqb2kuYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBwb3NpdGlvbjogam9pLnN0cmluZygpLnZhbGlkKCdzaWRlYmFyJyksXG4gIHJlYWRPbmx5OiBqb2kuYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBzdHlsZTogam9pLm9iamVjdCgpLnVua25vd24oKSxcbiAgd2lkdGg6IGpvaS5zdHJpbmcoKSxcbn0pXG5cbmV4cG9ydCBjb25zdCBiYXNlRmllbGQgPSBqb2lcbiAgLm9iamVjdCgpXG4gIC5rZXlzKHtcbiAgICBhY2Nlc3M6IGpvaS5vYmplY3QoKS5rZXlzKHtcbiAgICAgIGNyZWF0ZTogam9pLmZ1bmMoKSxcbiAgICAgIHJlYWQ6IGpvaS5mdW5jKCksXG4gICAgICB1cGRhdGU6IGpvaS5mdW5jKCksXG4gICAgfSksXG4gICAgYWRtaW46IGJhc2VBZG1pbkZpZWxkcy5kZWZhdWx0KCksXG4gICAgY3VzdG9tOiBqb2kub2JqZWN0KCkucGF0dGVybihqb2kuc3RyaW5nKCksIGpvaS5hbnkoKSksXG4gICAgaGlkZGVuOiBqb2kuYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICAgIGhvb2tzOiBqb2lcbiAgICAgIC5vYmplY3QoKVxuICAgICAgLmtleXMoe1xuICAgICAgICBhZnRlckNoYW5nZTogam9pLmFycmF5KCkuaXRlbXMoam9pLmZ1bmMoKSkuZGVmYXVsdChbXSksXG4gICAgICAgIGFmdGVyUmVhZDogam9pLmFycmF5KCkuaXRlbXMoam9pLmZ1bmMoKSkuZGVmYXVsdChbXSksXG4gICAgICAgIGJlZm9yZUNoYW5nZTogam9pLmFycmF5KCkuaXRlbXMoam9pLmZ1bmMoKSkuZGVmYXVsdChbXSksXG4gICAgICAgIGJlZm9yZVZhbGlkYXRlOiBqb2kuYXJyYXkoKS5pdGVtcyhqb2kuZnVuYygpKS5kZWZhdWx0KFtdKSxcbiAgICAgIH0pXG4gICAgICAuZGVmYXVsdCgpLFxuICAgIGluZGV4OiBqb2kuYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICAgIGxhYmVsOiBqb2lcbiAgICAgIC5hbHRlcm5hdGl2ZXMoKVxuICAgICAgLnRyeShqb2kub2JqZWN0KCkucGF0dGVybihqb2kuc3RyaW5nKCksIFtqb2kuc3RyaW5nKCldKSwgam9pLnN0cmluZygpLCBqb2kudmFsaWQoZmFsc2UpKSxcbiAgICBsb2NhbGl6ZWQ6IGpvaS5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gICAgcmVxdWlyZWQ6IGpvaS5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gICAgc2F2ZVRvSldUOiBqb2kuYWx0ZXJuYXRpdmVzKCkudHJ5KGpvaS5ib29sZWFuKCksIGpvaS5zdHJpbmcoKSkuZGVmYXVsdChmYWxzZSksXG4gICAgdW5pcXVlOiBqb2kuYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICAgIHZhbGlkYXRlOiBqb2kuZnVuYygpLFxuICB9KVxuICAuZGVmYXVsdCgpXG5cbmV4cG9ydCBjb25zdCBpZEZpZWxkID0gYmFzZUZpZWxkLmtleXMoe1xuICBuYW1lOiBqb2kuc3RyaW5nKCkudmFsaWQoJ2lkJyksXG4gIGxvY2FsaXplZDogam9pLmludmFsaWQodHJ1ZSksXG4gIHJlcXVpcmVkOiBqb2kubm90KGZhbHNlLCAwKS5kZWZhdWx0KHRydWUpLFxuICB0eXBlOiBqb2kuc3RyaW5nKCkudmFsaWQoJ3RleHQnLCAnbnVtYmVyJyksXG59KVxuXG5leHBvcnQgY29uc3QgdGV4dCA9IGJhc2VGaWVsZC5rZXlzKHtcbiAgbmFtZTogam9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gIGFkbWluOiBiYXNlQWRtaW5GaWVsZHMua2V5cyh7XG4gICAgYXV0b0NvbXBsZXRlOiBqb2kuc3RyaW5nKCksXG4gICAgY29tcG9uZW50czogYmFzZUFkbWluQ29tcG9uZW50RmllbGRzLmtleXMoe1xuICAgICAgRXJyb3I6IGNvbXBvbmVudFNjaGVtYSxcbiAgICAgIExhYmVsOiBjb21wb25lbnRTY2hlbWEsXG4gICAgICBhZnRlcklucHV0OiBqb2kuYXJyYXkoKS5pdGVtcyhjb21wb25lbnRTY2hlbWEpLFxuICAgICAgYmVmb3JlSW5wdXQ6IGpvaS5hcnJheSgpLml0ZW1zKGNvbXBvbmVudFNjaGVtYSksXG4gICAgfSksXG4gICAgcGxhY2Vob2xkZXI6IGpvaVxuICAgICAgLmFsdGVybmF0aXZlcygpXG4gICAgICAudHJ5KGpvaS5vYmplY3QoKS5wYXR0ZXJuKGpvaS5zdHJpbmcoKSwgW2pvaS5zdHJpbmcoKV0pLCBqb2kuc3RyaW5nKCkpLFxuICAgIHJ0bDogam9pLmJvb2xlYW4oKSxcbiAgfSksXG4gIGRlZmF1bHRWYWx1ZTogam9pLmFsdGVybmF0aXZlcygpLnRyeShqb2kuc3RyaW5nKCksIGpvaS5mdW5jKCkpLFxuICBoYXNNYW55OiBqb2kuYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBtYXhMZW5ndGg6IGpvaS5udW1iZXIoKSxcbiAgbWF4Um93czogam9pLm51bWJlcigpLndoZW4oJ2hhc01hbnknLCB7IGlzOiBqb2kubm90KHRydWUpLCB0aGVuOiBqb2kuZm9yYmlkZGVuKCkgfSksXG4gIG1pbkxlbmd0aDogam9pLm51bWJlcigpLFxuICBtaW5Sb3dzOiBqb2kubnVtYmVyKCkud2hlbignaGFzTWFueScsIHsgaXM6IGpvaS5ub3QodHJ1ZSksIHRoZW46IGpvaS5mb3JiaWRkZW4oKSB9KSxcbiAgdHlwZTogam9pLnN0cmluZygpLnZhbGlkKCd0ZXh0JykucmVxdWlyZWQoKSxcbn0pXG5cbmV4cG9ydCBjb25zdCBudW1iZXIgPSBiYXNlRmllbGQua2V5cyh7XG4gIG5hbWU6IGpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICBhZG1pbjogYmFzZUFkbWluRmllbGRzLmtleXMoe1xuICAgIGF1dG9Db21wbGV0ZTogam9pLnN0cmluZygpLFxuICAgIGNvbXBvbmVudHM6IGJhc2VBZG1pbkNvbXBvbmVudEZpZWxkcy5rZXlzKHtcbiAgICAgIEVycm9yOiBjb21wb25lbnRTY2hlbWEsXG4gICAgICBMYWJlbDogY29tcG9uZW50U2NoZW1hLFxuICAgICAgYWZ0ZXJJbnB1dDogam9pXG4gICAgICAgIC5hcnJheSgpXG4gICAgICAgIC5pdGVtcyhjb21wb25lbnRTY2hlbWEpXG4gICAgICAgIC53aGVuKCdoYXNNYW55JywgeyBub3Q6IHRydWUsIG90aGVyd2lzZTogam9pLmZvcmJpZGRlbigpIH0pLFxuICAgICAgYmVmb3JlSW5wdXQ6IGpvaVxuICAgICAgICAuYXJyYXkoKVxuICAgICAgICAuaXRlbXMoY29tcG9uZW50U2NoZW1hKVxuICAgICAgICAud2hlbignaGFzTWFueScsIHsgbm90OiB0cnVlLCBvdGhlcndpc2U6IGpvaS5mb3JiaWRkZW4oKSB9KSxcbiAgICB9KSxcbiAgICBwbGFjZWhvbGRlcjogam9pLnN0cmluZygpLFxuICAgIHN0ZXA6IGpvaS5udW1iZXIoKSxcbiAgfSksXG4gIGRlZmF1bHRWYWx1ZTogam9pLmFsdGVybmF0aXZlcygpLnRyeShqb2kubnVtYmVyKCksIGpvaS5mdW5jKCkpLFxuICBoYXNNYW55OiBqb2kuYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBtYXg6IGpvaS5udW1iZXIoKSxcbiAgbWF4Um93czogam9pLm51bWJlcigpLndoZW4oJ2hhc01hbnknLCB7IGlzOiBqb2kubm90KHRydWUpLCB0aGVuOiBqb2kuZm9yYmlkZGVuKCkgfSksXG4gIG1pbjogam9pLm51bWJlcigpLFxuICBtaW5Sb3dzOiBqb2kubnVtYmVyKCkud2hlbignaGFzTWFueScsIHsgaXM6IGpvaS5ub3QodHJ1ZSksIHRoZW46IGpvaS5mb3JiaWRkZW4oKSB9KSxcbiAgdHlwZTogam9pLnN0cmluZygpLnZhbGlkKCdudW1iZXInKS5yZXF1aXJlZCgpLFxufSlcblxuZXhwb3J0IGNvbnN0IHRleHRhcmVhID0gYmFzZUZpZWxkLmtleXMoe1xuICBuYW1lOiBqb2kuc3RyaW5nKCkucmVxdWlyZWQoKSxcbiAgYWRtaW46IGJhc2VBZG1pbkZpZWxkcy5rZXlzKHtcbiAgICBjb21wb25lbnRzOiBiYXNlQWRtaW5Db21wb25lbnRGaWVsZHMua2V5cyh7XG4gICAgICBFcnJvcjogY29tcG9uZW50U2NoZW1hLFxuICAgICAgTGFiZWw6IGNvbXBvbmVudFNjaGVtYSxcbiAgICAgIGFmdGVySW5wdXQ6IGpvaS5hcnJheSgpLml0ZW1zKGNvbXBvbmVudFNjaGVtYSksXG4gICAgICBiZWZvcmVJbnB1dDogam9pLmFycmF5KCkuaXRlbXMoY29tcG9uZW50U2NoZW1hKSxcbiAgICB9KSxcbiAgICBwbGFjZWhvbGRlcjogam9pLnN0cmluZygpLFxuICAgIHJvd3M6IGpvaS5udW1iZXIoKSxcbiAgICBydGw6IGpvaS5ib29sZWFuKCksXG4gIH0pLFxuICBkZWZhdWx0VmFsdWU6IGpvaS5hbHRlcm5hdGl2ZXMoKS50cnkoam9pLnN0cmluZygpLCBqb2kuZnVuYygpKSxcbiAgbWF4TGVuZ3RoOiBqb2kubnVtYmVyKCksXG4gIG1pbkxlbmd0aDogam9pLm51bWJlcigpLFxuICB0eXBlOiBqb2kuc3RyaW5nKCkudmFsaWQoJ3RleHRhcmVhJykucmVxdWlyZWQoKSxcbn0pXG5cbmV4cG9ydCBjb25zdCBlbWFpbCA9IGJhc2VGaWVsZC5rZXlzKHtcbiAgbmFtZTogam9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gIGFkbWluOiBiYXNlQWRtaW5GaWVsZHMua2V5cyh7XG4gICAgYXV0b0NvbXBsZXRlOiBqb2kuc3RyaW5nKCksXG4gICAgY29tcG9uZW50czogYmFzZUFkbWluQ29tcG9uZW50RmllbGRzLmtleXMoe1xuICAgICAgRXJyb3I6IGNvbXBvbmVudFNjaGVtYSxcbiAgICAgIExhYmVsOiBjb21wb25lbnRTY2hlbWEsXG4gICAgICBhZnRlcklucHV0OiBqb2kuYXJyYXkoKS5pdGVtcyhjb21wb25lbnRTY2hlbWEpLFxuICAgICAgYmVmb3JlSW5wdXQ6IGpvaS5hcnJheSgpLml0ZW1zKGNvbXBvbmVudFNjaGVtYSksXG4gICAgfSksXG4gICAgcGxhY2Vob2xkZXI6IGpvaS5zdHJpbmcoKSxcbiAgfSksXG4gIGRlZmF1bHRWYWx1ZTogam9pLmFsdGVybmF0aXZlcygpLnRyeShqb2kuc3RyaW5nKCksIGpvaS5mdW5jKCkpLFxuICBtYXhMZW5ndGg6IGpvaS5udW1iZXIoKSxcbiAgbWluTGVuZ3RoOiBqb2kubnVtYmVyKCksXG4gIHR5cGU6IGpvaS5zdHJpbmcoKS52YWxpZCgnZW1haWwnKS5yZXF1aXJlZCgpLFxufSlcblxuZXhwb3J0IGNvbnN0IGNvZGUgPSBiYXNlRmllbGQua2V5cyh7XG4gIG5hbWU6IGpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICBhZG1pbjogYmFzZUFkbWluRmllbGRzLmtleXMoe1xuICAgIGNvbXBvbmVudHM6IGJhc2VBZG1pbkNvbXBvbmVudEZpZWxkcy5rZXlzKHtcbiAgICAgIEVycm9yOiBjb21wb25lbnRTY2hlbWEsXG4gICAgICBMYWJlbDogY29tcG9uZW50U2NoZW1hLFxuICAgIH0pLFxuICAgIGVkaXRvck9wdGlvbnM6IGpvaS5vYmplY3QoKS51bmtub3duKCksIC8vIEVkaXRvclsnb3B0aW9ucyddIEBtb25hY28tZWRpdG9yL3JlYWN0XG4gICAgbGFuZ3VhZ2U6IGpvaS5zdHJpbmcoKSxcbiAgfSksXG4gIGRlZmF1bHRWYWx1ZTogam9pLmFsdGVybmF0aXZlcygpLnRyeShqb2kuc3RyaW5nKCksIGpvaS5mdW5jKCkpLFxuICB0eXBlOiBqb2kuc3RyaW5nKCkudmFsaWQoJ2NvZGUnKS5yZXF1aXJlZCgpLFxufSlcblxuZXhwb3J0IGNvbnN0IGpzb24gPSBiYXNlRmllbGQua2V5cyh7XG4gIG5hbWU6IGpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICBhZG1pbjogYmFzZUFkbWluRmllbGRzLmtleXMoe1xuICAgIGNvbXBvbmVudHM6IGJhc2VBZG1pbkNvbXBvbmVudEZpZWxkcy5rZXlzKHtcbiAgICAgIEVycm9yOiBjb21wb25lbnRTY2hlbWEsXG4gICAgICBMYWJlbDogY29tcG9uZW50U2NoZW1hLFxuICAgIH0pLFxuICAgIGVkaXRvck9wdGlvbnM6IGpvaS5vYmplY3QoKS51bmtub3duKCksIC8vIEVkaXRvclsnb3B0aW9ucyddIEBtb25hY28tZWRpdG9yL3JlYWN0XG4gIH0pLFxuICBkZWZhdWx0VmFsdWU6IGpvaS5hbHRlcm5hdGl2ZXMoKS50cnkoam9pLmFycmF5KCksIGpvaS5vYmplY3QoKSksXG4gIHR5cGU6IGpvaS5zdHJpbmcoKS52YWxpZCgnanNvbicpLnJlcXVpcmVkKCksXG59KVxuXG5leHBvcnQgY29uc3Qgc2VsZWN0ID0gYmFzZUZpZWxkLmtleXMoe1xuICBuYW1lOiBqb2kuc3RyaW5nKCkucmVxdWlyZWQoKSxcbiAgYWRtaW46IGJhc2VBZG1pbkZpZWxkcy5rZXlzKHtcbiAgICBjb21wb25lbnRzOiBiYXNlQWRtaW5Db21wb25lbnRGaWVsZHMua2V5cyh7XG4gICAgICBFcnJvcjogY29tcG9uZW50U2NoZW1hLFxuICAgICAgTGFiZWw6IGNvbXBvbmVudFNjaGVtYSxcbiAgICB9KSxcbiAgICBpc0NsZWFyYWJsZTogam9pLmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgICBpc1NvcnRhYmxlOiBqb2kuYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICB9KSxcbiAgZGVmYXVsdFZhbHVlOiBqb2lcbiAgICAuYWx0ZXJuYXRpdmVzKClcbiAgICAudHJ5KGpvaS5zdHJpbmcoKS5hbGxvdygnJyksIGpvaS5hcnJheSgpLml0ZW1zKGpvaS5zdHJpbmcoKS5hbGxvdygnJykpLCBqb2kuZnVuYygpKSxcbiAgaGFzTWFueTogam9pLmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgb3B0aW9uczogam9pXG4gICAgLmFycmF5KClcbiAgICAubWluKDEpXG4gICAgLml0ZW1zKFxuICAgICAgam9pLmFsdGVybmF0aXZlcygpLnRyeShcbiAgICAgICAgam9pLnN0cmluZygpLFxuICAgICAgICBqb2kub2JqZWN0KHtcbiAgICAgICAgICBsYWJlbDogam9pXG4gICAgICAgICAgICAuYWx0ZXJuYXRpdmVzKClcbiAgICAgICAgICAgIC50cnkoam9pLnN0cmluZygpLCBqb2kub2JqZWN0KCkucGF0dGVybihqb2kuc3RyaW5nKCksIFtqb2kuc3RyaW5nKCldKSksXG4gICAgICAgICAgdmFsdWU6IGpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLmFsbG93KCcnKSxcbiAgICAgICAgfSksXG4gICAgICApLFxuICAgIClcbiAgICAucmVxdWlyZWQoKSxcbiAgdHlwZTogam9pLnN0cmluZygpLnZhbGlkKCdzZWxlY3QnKS5yZXF1aXJlZCgpLFxufSlcblxuZXhwb3J0IGNvbnN0IHJhZGlvID0gYmFzZUZpZWxkLmtleXMoe1xuICBuYW1lOiBqb2kuc3RyaW5nKCkucmVxdWlyZWQoKSxcbiAgYWRtaW46IGJhc2VBZG1pbkZpZWxkcy5rZXlzKHtcbiAgICBjb21wb25lbnRzOiBiYXNlQWRtaW5Db21wb25lbnRGaWVsZHMua2V5cyh7XG4gICAgICBFcnJvcjogY29tcG9uZW50U2NoZW1hLFxuICAgICAgTGFiZWw6IGNvbXBvbmVudFNjaGVtYSxcbiAgICB9KSxcbiAgICBsYXlvdXQ6IGpvaS5zdHJpbmcoKS52YWxpZCgndmVydGljYWwnLCAnaG9yaXpvbnRhbCcpLFxuICB9KSxcbiAgZGVmYXVsdFZhbHVlOiBqb2kuYWx0ZXJuYXRpdmVzKCkudHJ5KGpvaS5zdHJpbmcoKS5hbGxvdygnJyksIGpvaS5mdW5jKCkpLFxuICBvcHRpb25zOiBqb2lcbiAgICAuYXJyYXkoKVxuICAgIC5taW4oMSlcbiAgICAuaXRlbXMoXG4gICAgICBqb2kuYWx0ZXJuYXRpdmVzKCkudHJ5KFxuICAgICAgICBqb2kuc3RyaW5nKCksXG4gICAgICAgIGpvaS5vYmplY3Qoe1xuICAgICAgICAgIGxhYmVsOiBqb2lcbiAgICAgICAgICAgIC5hbHRlcm5hdGl2ZXMoKVxuICAgICAgICAgICAgLnRyeShqb2kuc3RyaW5nKCksIGpvaS5vYmplY3QoKS5wYXR0ZXJuKGpvaS5zdHJpbmcoKSwgW2pvaS5zdHJpbmcoKV0pKVxuICAgICAgICAgICAgLnJlcXVpcmVkKCksXG4gICAgICAgICAgdmFsdWU6IGpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLmFsbG93KCcnKSxcbiAgICAgICAgfSksXG4gICAgICApLFxuICAgIClcbiAgICAucmVxdWlyZWQoKSxcbiAgdHlwZTogam9pLnN0cmluZygpLnZhbGlkKCdyYWRpbycpLnJlcXVpcmVkKCksXG59KVxuXG5leHBvcnQgY29uc3Qgcm93ID0gYmFzZUZpZWxkLmtleXMoe1xuICBhZG1pbjogYmFzZUFkbWluRmllbGRzLmRlZmF1bHQoKSxcbiAgZmllbGRzOiBqb2kuYXJyYXkoKS5pdGVtcyhqb2kubGluaygnI2ZpZWxkJykpLFxuICB0eXBlOiBqb2kuc3RyaW5nKCkudmFsaWQoJ3JvdycpLnJlcXVpcmVkKCksXG59KVxuXG5leHBvcnQgY29uc3QgY29sbGFwc2libGUgPSBiYXNlRmllbGQua2V5cyh7XG4gIGFkbWluOiBiYXNlQWRtaW5GaWVsZHMuZGVmYXVsdCgpLFxuICBmaWVsZHM6IGpvaS5hcnJheSgpLml0ZW1zKGpvaS5saW5rKCcjZmllbGQnKSksXG4gIGxhYmVsOiBqb2kuYWx0ZXJuYXRpdmVzKCkudHJ5KGpvaS5zdHJpbmcoKSwgY29tcG9uZW50U2NoZW1hKSxcbiAgdHlwZTogam9pLnN0cmluZygpLnZhbGlkKCdjb2xsYXBzaWJsZScpLnJlcXVpcmVkKCksXG59KVxuXG5jb25zdCB0YWIgPSBiYXNlRmllbGQua2V5cyh7XG4gIG5hbWU6IGpvaS5zdHJpbmcoKS53aGVuKCdsb2NhbGl6ZWQnLCB7IGlzOiBqb2kuZXhpc3QoKSwgdGhlbjogam9pLnJlcXVpcmVkKCkgfSksXG4gIGRlc2NyaXB0aW9uOiBqb2kuYWx0ZXJuYXRpdmVzKCkudHJ5KGpvaS5zdHJpbmcoKSwgY29tcG9uZW50U2NoZW1hKSxcbiAgZmllbGRzOiBqb2kuYXJyYXkoKS5pdGVtcyhqb2kubGluaygnI2ZpZWxkJykpLnJlcXVpcmVkKCksXG4gIGludGVyZmFjZU5hbWU6IGpvaS5zdHJpbmcoKS53aGVuKCduYW1lJywgeyBub3Q6IGpvaS5leGlzdCgpLCB0aGVuOiBqb2kuZm9yYmlkZGVuKCkgfSksXG4gIGxhYmVsOiBqb2lcbiAgICAuYWx0ZXJuYXRpdmVzKClcbiAgICAudHJ5KGpvaS5zdHJpbmcoKSwgam9pLm9iamVjdCgpLnBhdHRlcm4oam9pLnN0cmluZygpLCBbam9pLnN0cmluZygpXSkpXG4gICAgLndoZW4oJ25hbWUnLCB7IGlzOiBqb2kubm90KCksIHRoZW46IGpvaS5yZXF1aXJlZCgpIH0pLFxuICBsb2NhbGl6ZWQ6IGpvaS5ib29sZWFuKCksXG4gIHNhdmVUb0pXVDogam9pLmFsdGVybmF0aXZlcygpLnRyeShqb2kuYm9vbGVhbigpLCBqb2kuc3RyaW5nKCkpLFxufSlcblxuZXhwb3J0IGNvbnN0IHRhYnMgPSBiYXNlRmllbGQua2V5cyh7XG4gIGFkbWluOiBiYXNlQWRtaW5GaWVsZHMua2V5cyh7XG4gICAgZGVzY3JpcHRpb246IGpvaS5mb3JiaWRkZW4oKSxcbiAgfSksXG4gIGZpZWxkczogam9pLmZvcmJpZGRlbigpLFxuICBsb2NhbGl6ZWQ6IGpvaS5mb3JiaWRkZW4oKSxcbiAgdGFiczogam9pLmFycmF5KCkuaXRlbXModGFiKS5yZXF1aXJlZCgpLFxuICB0eXBlOiBqb2kuc3RyaW5nKCkudmFsaWQoJ3RhYnMnKS5yZXF1aXJlZCgpLFxufSlcblxuZXhwb3J0IGNvbnN0IGdyb3VwID0gYmFzZUZpZWxkLmtleXMoe1xuICBuYW1lOiBqb2kuc3RyaW5nKCkucmVxdWlyZWQoKSxcbiAgYWRtaW46IGJhc2VBZG1pbkZpZWxkcy5rZXlzKHtcbiAgICBoaWRlR3V0dGVyOiBqb2kuYm9vbGVhbigpLmRlZmF1bHQodHJ1ZSksXG4gIH0pLFxuICBkZWZhdWx0VmFsdWU6IGpvaS5hbHRlcm5hdGl2ZXMoKS50cnkoam9pLm9iamVjdCgpLCBqb2kuZnVuYygpKSxcbiAgZmllbGRzOiBqb2kuYXJyYXkoKS5pdGVtcyhqb2kubGluaygnI2ZpZWxkJykpLFxuICBpbnRlcmZhY2VOYW1lOiBqb2kuc3RyaW5nKCksXG4gIHR5cGU6IGpvaS5zdHJpbmcoKS52YWxpZCgnZ3JvdXAnKS5yZXF1aXJlZCgpLFxufSlcblxuZXhwb3J0IGNvbnN0IGFycmF5ID0gYmFzZUZpZWxkLmtleXMoe1xuICBuYW1lOiBqb2kuc3RyaW5nKCkucmVxdWlyZWQoKSxcbiAgYWRtaW46IGJhc2VBZG1pbkZpZWxkc1xuICAgIC5rZXlzKHtcbiAgICAgIGNvbXBvbmVudHM6IGJhc2VBZG1pbkNvbXBvbmVudEZpZWxkc1xuICAgICAgICAua2V5cyh7XG4gICAgICAgICAgUm93TGFiZWw6IGNvbXBvbmVudFNjaGVtYSxcbiAgICAgICAgfSlcbiAgICAgICAgLmRlZmF1bHQoe30pLFxuICAgIH0pXG4gICAgLmRlZmF1bHQoe30pLFxuICBkZWZhdWx0VmFsdWU6IGpvaS5hbHRlcm5hdGl2ZXMoKS50cnkoam9pLmFycmF5KCkuaXRlbXMoam9pLm9iamVjdCgpKSwgam9pLmZ1bmMoKSksXG4gIGZpZWxkczogam9pLmFycmF5KCkuaXRlbXMoam9pLmxpbmsoJyNmaWVsZCcpKS5yZXF1aXJlZCgpLFxuICBpbnRlcmZhY2VOYW1lOiBqb2kuc3RyaW5nKCksXG4gIGxhYmVsczogam9pLm9iamVjdCh7XG4gICAgcGx1cmFsOiBqb2lcbiAgICAgIC5hbHRlcm5hdGl2ZXMoKVxuICAgICAgLnRyeShqb2kuc3RyaW5nKCksIGpvaS5vYmplY3QoKS5wYXR0ZXJuKGpvaS5zdHJpbmcoKSwgW2pvaS5zdHJpbmcoKV0pKSxcbiAgICBzaW5ndWxhcjogam9pXG4gICAgICAuYWx0ZXJuYXRpdmVzKClcbiAgICAgIC50cnkoam9pLnN0cmluZygpLCBqb2kub2JqZWN0KCkucGF0dGVybihqb2kuc3RyaW5nKCksIFtqb2kuc3RyaW5nKCldKSksXG4gIH0pLFxuICBtYXhSb3dzOiBqb2kubnVtYmVyKCksXG4gIG1pblJvd3M6IGpvaS5udW1iZXIoKSxcbiAgdHlwZTogam9pLnN0cmluZygpLnZhbGlkKCdhcnJheScpLnJlcXVpcmVkKCksXG59KVxuXG5leHBvcnQgY29uc3QgdXBsb2FkID0gYmFzZUZpZWxkLmtleXMoe1xuICBuYW1lOiBqb2kuc3RyaW5nKCkucmVxdWlyZWQoKSxcbiAgYWRtaW46IGJhc2VBZG1pbkZpZWxkcy5rZXlzKHtcbiAgICBjb21wb25lbnRzOiBiYXNlQWRtaW5Db21wb25lbnRGaWVsZHMua2V5cyh7XG4gICAgICBFcnJvcjogY29tcG9uZW50U2NoZW1hLFxuICAgICAgTGFiZWw6IGNvbXBvbmVudFNjaGVtYSxcbiAgICB9KSxcbiAgfSksXG4gIGRlZmF1bHRWYWx1ZTogam9pLmFsdGVybmF0aXZlcygpLnRyeShqb2kub2JqZWN0KCksIGpvaS5mdW5jKCkpLFxuICBmaWx0ZXJPcHRpb25zOiBqb2kuYWx0ZXJuYXRpdmVzKCkudHJ5KGpvaS5vYmplY3QoKSwgam9pLmZ1bmMoKSksXG4gIG1heERlcHRoOiBqb2kubnVtYmVyKCksXG4gIHJlbGF0aW9uVG86IGpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICB0eXBlOiBqb2kuc3RyaW5nKCkudmFsaWQoJ3VwbG9hZCcpLnJlcXVpcmVkKCksXG59KVxuXG5leHBvcnQgY29uc3QgY2hlY2tib3ggPSBiYXNlRmllbGQua2V5cyh7XG4gIG5hbWU6IGpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICBhZG1pbjogYmFzZUFkbWluRmllbGRzLmtleXMoe1xuICAgIGNvbXBvbmVudHM6IGJhc2VBZG1pbkNvbXBvbmVudEZpZWxkcy5rZXlzKHtcbiAgICAgIEVycm9yOiBjb21wb25lbnRTY2hlbWEsXG4gICAgICBMYWJlbDogY29tcG9uZW50U2NoZW1hLFxuICAgICAgYWZ0ZXJJbnB1dDogam9pLmFycmF5KCkuaXRlbXMoY29tcG9uZW50U2NoZW1hKSxcbiAgICAgIGJlZm9yZUlucHV0OiBqb2kuYXJyYXkoKS5pdGVtcyhjb21wb25lbnRTY2hlbWEpLFxuICAgIH0pLFxuICB9KSxcbiAgZGVmYXVsdFZhbHVlOiBqb2kuYWx0ZXJuYXRpdmVzKCkudHJ5KGpvaS5ib29sZWFuKCksIGpvaS5mdW5jKCkpLFxuICB0eXBlOiBqb2kuc3RyaW5nKCkudmFsaWQoJ2NoZWNrYm94JykucmVxdWlyZWQoKSxcbn0pXG5cbmV4cG9ydCBjb25zdCBwb2ludCA9IGJhc2VGaWVsZC5rZXlzKHtcbiAgbmFtZTogam9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gIGFkbWluOiBiYXNlQWRtaW5GaWVsZHMua2V5cyh7XG4gICAgY29tcG9uZW50czogYmFzZUFkbWluQ29tcG9uZW50RmllbGRzLmtleXMoe1xuICAgICAgRXJyb3I6IGNvbXBvbmVudFNjaGVtYSxcbiAgICAgIExhYmVsOiBjb21wb25lbnRTY2hlbWEsXG4gICAgICBhZnRlcklucHV0OiBqb2kuYXJyYXkoKS5pdGVtcyhjb21wb25lbnRTY2hlbWEpLFxuICAgICAgYmVmb3JlSW5wdXQ6IGpvaS5hcnJheSgpLml0ZW1zKGNvbXBvbmVudFNjaGVtYSksXG4gICAgfSksXG4gIH0pLFxuICBkZWZhdWx0VmFsdWU6IGpvaS5hbHRlcm5hdGl2ZXMoKS50cnkoam9pLmFycmF5KCkuaXRlbXMoam9pLm51bWJlcigpKS5tYXgoMikubWluKDIpLCBqb2kuZnVuYygpKSxcbiAgdHlwZTogam9pLnN0cmluZygpLnZhbGlkKCdwb2ludCcpLnJlcXVpcmVkKCksXG59KVxuXG5leHBvcnQgY29uc3QgcmVsYXRpb25zaGlwID0gYmFzZUZpZWxkLmtleXMoe1xuICBuYW1lOiBqb2kuc3RyaW5nKCkucmVxdWlyZWQoKSxcbiAgYWRtaW46IGJhc2VBZG1pbkZpZWxkcy5rZXlzKHtcbiAgICBhbGxvd0NyZWF0ZTogam9pLmJvb2xlYW4oKS5kZWZhdWx0KHRydWUpLFxuICAgIGNvbXBvbmVudHM6IGJhc2VBZG1pbkNvbXBvbmVudEZpZWxkcy5rZXlzKHtcbiAgICAgIEVycm9yOiBjb21wb25lbnRTY2hlbWEsXG4gICAgICBMYWJlbDogY29tcG9uZW50U2NoZW1hLFxuICAgIH0pLFxuICAgIGlzU29ydGFibGU6IGpvaS5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gICAgc29ydE9wdGlvbnM6IGpvaS5hbHRlcm5hdGl2ZXMoKS5jb25kaXRpb25hbChqb2kucmVmKCcuLi5yZWxhdGlvblRvJyksIHtcbiAgICAgIGlzOiBqb2kuc3RyaW5nKCksXG4gICAgICBvdGhlcndpc2U6IGpvaS5vYmplY3QoKS5wYXR0ZXJuKGpvaS5zdHJpbmcoKSwgam9pLnN0cmluZygpKSxcbiAgICAgIHRoZW46IGpvaS5zdHJpbmcoKSxcbiAgICB9KSxcbiAgfSksXG4gIGRlZmF1bHRWYWx1ZTogam9pLmFsdGVybmF0aXZlcygpLnRyeShqb2kuZnVuYygpKSxcbiAgZmlsdGVyT3B0aW9uczogam9pLmFsdGVybmF0aXZlcygpLnRyeShqb2kub2JqZWN0KCksIGpvaS5mdW5jKCkpLFxuICBoYXNNYW55OiBqb2kuYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICBtYXg6IGpvaVxuICAgIC5udW1iZXIoKVxuICAgIC53aGVuKCdoYXNNYW55JywgeyBpczogam9pLm5vdCh0cnVlKSwgdGhlbjogam9pLmZvcmJpZGRlbigpIH0pXG4gICAgLndhcm5pbmcoJ2RlcHJlY2F0ZWQnLCB7IG1lc3NhZ2U6ICdVc2UgbWF4Um93cyBpbnN0ZWFkLicgfSksXG4gIG1heERlcHRoOiBqb2kubnVtYmVyKCksXG4gIG1heFJvd3M6IGpvaS5udW1iZXIoKS53aGVuKCdoYXNNYW55JywgeyBpczogam9pLm5vdCh0cnVlKSwgdGhlbjogam9pLmZvcmJpZGRlbigpIH0pLFxuICBtaW46IGpvaVxuICAgIC5udW1iZXIoKVxuICAgIC53aGVuKCdoYXNNYW55JywgeyBpczogam9pLm5vdCh0cnVlKSwgdGhlbjogam9pLmZvcmJpZGRlbigpIH0pXG4gICAgLndhcm5pbmcoJ2RlcHJlY2F0ZWQnLCB7IG1lc3NhZ2U6ICdVc2UgbWluUm93cyBpbnN0ZWFkLicgfSksXG4gIG1pblJvd3M6IGpvaS5udW1iZXIoKS53aGVuKCdoYXNNYW55JywgeyBpczogam9pLm5vdCh0cnVlKSwgdGhlbjogam9pLmZvcmJpZGRlbigpIH0pLFxuICByZWxhdGlvblRvOiBqb2kuYWx0ZXJuYXRpdmVzKCkudHJ5KGpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLCBqb2kuYXJyYXkoKS5pdGVtcyhqb2kuc3RyaW5nKCkpKSxcbiAgdHlwZTogam9pLnN0cmluZygpLnZhbGlkKCdyZWxhdGlvbnNoaXAnKS5yZXF1aXJlZCgpLFxufSlcblxuZXhwb3J0IGNvbnN0IGJsb2NrcyA9IGJhc2VGaWVsZC5rZXlzKHtcbiAgbmFtZTogam9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gIGJsb2Nrczogam9pXG4gICAgLmFycmF5KClcbiAgICAuaXRlbXMoXG4gICAgICBqb2kub2JqZWN0KHtcbiAgICAgICAgZmllbGRzOiBqb2kuYXJyYXkoKS5pdGVtcyhqb2kubGluaygnI2ZpZWxkJykpLFxuICAgICAgICBncmFwaFFMOiBqb2kub2JqZWN0KCkua2V5cyh7XG4gICAgICAgICAgc2luZ3VsYXJOYW1lOiBqb2kuc3RyaW5nKCksXG4gICAgICAgIH0pLFxuICAgICAgICBpbWFnZUFsdFRleHQ6IGpvaS5zdHJpbmcoKSxcbiAgICAgICAgaW1hZ2VVUkw6IGpvaS5zdHJpbmcoKSxcbiAgICAgICAgaW50ZXJmYWNlTmFtZTogam9pLnN0cmluZygpLFxuICAgICAgICBsYWJlbHM6IGpvaS5vYmplY3Qoe1xuICAgICAgICAgIHBsdXJhbDogam9pXG4gICAgICAgICAgICAuYWx0ZXJuYXRpdmVzKClcbiAgICAgICAgICAgIC50cnkoam9pLnN0cmluZygpLCBqb2kub2JqZWN0KCkucGF0dGVybihqb2kuc3RyaW5nKCksIFtqb2kuc3RyaW5nKCldKSksXG4gICAgICAgICAgc2luZ3VsYXI6IGpvaVxuICAgICAgICAgICAgLmFsdGVybmF0aXZlcygpXG4gICAgICAgICAgICAudHJ5KGpvaS5zdHJpbmcoKSwgam9pLm9iamVjdCgpLnBhdHRlcm4oam9pLnN0cmluZygpLCBbam9pLnN0cmluZygpXSkpLFxuICAgICAgICB9KSxcbiAgICAgICAgc2x1Zzogam9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gICAgICAgIGN1c3RvbTogam9pLm9iamVjdCgpLnBhdHRlcm4oam9pLnN0cmluZygpLCBqb2kuYW55KCkpLFxuICAgICAgfSksXG4gICAgKVxuICAgIC5yZXF1aXJlZCgpLFxuICBkZWZhdWx0VmFsdWU6IGpvaS5hbHRlcm5hdGl2ZXMoKS50cnkoam9pLmFycmF5KCkuaXRlbXMoam9pLm9iamVjdCgpKSwgam9pLmZ1bmMoKSksXG4gIGxhYmVsczogam9pLm9iamVjdCh7XG4gICAgcGx1cmFsOiBqb2lcbiAgICAgIC5hbHRlcm5hdGl2ZXMoKVxuICAgICAgLnRyeShqb2kuc3RyaW5nKCksIGpvaS5vYmplY3QoKS5wYXR0ZXJuKGpvaS5zdHJpbmcoKSwgW2pvaS5zdHJpbmcoKV0pKSxcbiAgICBzaW5ndWxhcjogam9pXG4gICAgICAuYWx0ZXJuYXRpdmVzKClcbiAgICAgIC50cnkoam9pLnN0cmluZygpLCBqb2kub2JqZWN0KCkucGF0dGVybihqb2kuc3RyaW5nKCksIFtqb2kuc3RyaW5nKCldKSksXG4gIH0pLFxuICBtYXhSb3dzOiBqb2kubnVtYmVyKCksXG4gIG1pblJvd3M6IGpvaS5udW1iZXIoKSxcbiAgdHlwZTogam9pLnN0cmluZygpLnZhbGlkKCdibG9ja3MnKS5yZXF1aXJlZCgpLFxufSlcblxuZXhwb3J0IGNvbnN0IHJpY2hUZXh0ID0gYmFzZUZpZWxkLmtleXMoe1xuICBuYW1lOiBqb2kuc3RyaW5nKCkucmVxdWlyZWQoKSxcbiAgYWRtaW46IGJhc2VBZG1pbkZpZWxkcy5kZWZhdWx0KCksXG4gIGRlZmF1bHRWYWx1ZTogam9pLmFsdGVybmF0aXZlcygpLnRyeShqb2kuYXJyYXkoKS5pdGVtcyhqb2kub2JqZWN0KCkpLCBqb2kuZnVuYygpLCBqb2kub2JqZWN0KCkpLFxuICBlZGl0b3I6IGpvaVxuICAgIC5vYmplY3QoKVxuICAgIC5rZXlzKHtcbiAgICAgIENlbGxDb21wb25lbnQ6IGNvbXBvbmVudFNjaGVtYS5vcHRpb25hbCgpLFxuICAgICAgRmllbGRDb21wb25lbnQ6IGNvbXBvbmVudFNjaGVtYS5vcHRpb25hbCgpLFxuICAgICAgTGF6eUNlbGxDb21wb25lbnQ6IGpvaS5mdW5jKCkub3B0aW9uYWwoKSxcbiAgICAgIExhenlGaWVsZENvbXBvbmVudDogam9pLmZ1bmMoKS5vcHRpb25hbCgpLFxuICAgICAgYWZ0ZXJSZWFkUHJvbWlzZTogam9pLmZ1bmMoKS5vcHRpb25hbCgpLFxuICAgICAgb3V0cHV0U2NoZW1hOiBqb2kuZnVuYygpLm9wdGlvbmFsKCksXG4gICAgICBwb3B1bGF0aW9uUHJvbWlzZTogam9pLmZ1bmMoKS5vcHRpb25hbCgpLFxuICAgICAgdmFsaWRhdGU6IGpvaS5mdW5jKCkucmVxdWlyZWQoKSxcbiAgICB9KVxuICAgIC51bmtub3duKCksXG4gIHR5cGU6IGpvaS5zdHJpbmcoKS52YWxpZCgncmljaFRleHQnKS5yZXF1aXJlZCgpLFxufSlcblxuZXhwb3J0IGNvbnN0IGRhdGUgPSBiYXNlRmllbGQua2V5cyh7XG4gIG5hbWU6IGpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICBhZG1pbjogYmFzZUFkbWluRmllbGRzLmtleXMoe1xuICAgIGNvbXBvbmVudHM6IGJhc2VBZG1pbkNvbXBvbmVudEZpZWxkcy5rZXlzKHtcbiAgICAgIEVycm9yOiBjb21wb25lbnRTY2hlbWEsXG4gICAgICBMYWJlbDogY29tcG9uZW50U2NoZW1hLFxuICAgICAgYWZ0ZXJJbnB1dDogam9pLmFycmF5KCkuaXRlbXMoY29tcG9uZW50U2NoZW1hKSxcbiAgICAgIGJlZm9yZUlucHV0OiBqb2kuYXJyYXkoKS5pdGVtcyhjb21wb25lbnRTY2hlbWEpLFxuICAgIH0pLFxuICAgIGRhdGU6IGpvaS5vYmplY3Qoe1xuICAgICAgZGlzcGxheUZvcm1hdDogam9pLnN0cmluZygpLFxuICAgICAgbWF4RGF0ZTogam9pLmRhdGUoKSxcbiAgICAgIG1heFRpbWU6IGpvaS5kYXRlKCksXG4gICAgICBtaW5EYXRlOiBqb2kuZGF0ZSgpLFxuICAgICAgbWluVGltZTogam9pLmRhdGUoKSxcbiAgICAgIG1vbnRoc1RvU2hvdzogam9pLm51bWJlcigpLFxuICAgICAgb3ZlcnJpZGVzOiBqb2kub2JqZWN0KCkudW5rbm93bigpLFxuICAgICAgcGlja2VyQXBwZWFyYW5jZTogam9pLnN0cmluZygpLFxuICAgICAgdGltZUZvcm1hdDogam9pLnN0cmluZygpLFxuICAgICAgdGltZUludGVydmFsczogam9pLm51bWJlcigpLFxuICAgIH0pLFxuICAgIHBsYWNlaG9sZGVyOiBqb2kuc3RyaW5nKCksXG4gIH0pLFxuICBkZWZhdWx0VmFsdWU6IGpvaS5hbHRlcm5hdGl2ZXMoKS50cnkoam9pLnN0cmluZygpLCBqb2kuZnVuYygpKSxcbiAgdHlwZTogam9pLnN0cmluZygpLnZhbGlkKCdkYXRlJykucmVxdWlyZWQoKSxcbn0pXG5cbmV4cG9ydCBjb25zdCB1aSA9IGpvaS5vYmplY3QoKS5rZXlzKHtcbiAgbmFtZTogam9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gIGFkbWluOiBqb2lcbiAgICAub2JqZWN0KClcbiAgICAua2V5cyh7XG4gICAgICBjb21wb25lbnRzOiBqb2lcbiAgICAgICAgLm9iamVjdCgpXG4gICAgICAgIC5rZXlzKHtcbiAgICAgICAgICBDZWxsOiBjb21wb25lbnRTY2hlbWEsXG4gICAgICAgICAgRmllbGQ6IGNvbXBvbmVudFNjaGVtYSxcbiAgICAgICAgfSlcbiAgICAgICAgLmRlZmF1bHQoe30pLFxuICAgICAgY29uZGl0aW9uOiBqb2kuZnVuYygpLFxuICAgICAgcG9zaXRpb246IGpvaS5zdHJpbmcoKS52YWxpZCgnc2lkZWJhcicpLFxuICAgICAgd2lkdGg6IGpvaS5zdHJpbmcoKSxcbiAgICB9KVxuICAgIC5kZWZhdWx0KCksXG4gIGN1c3RvbTogam9pLm9iamVjdCgpLnBhdHRlcm4oam9pLnN0cmluZygpLCBqb2kuYW55KCkpLFxuICBsYWJlbDogam9pLmFsdGVybmF0aXZlcygpLnRyeShqb2kuc3RyaW5nKCksIGpvaS5vYmplY3QoKS5wYXR0ZXJuKGpvaS5zdHJpbmcoKSwgW2pvaS5zdHJpbmcoKV0pKSxcbiAgdHlwZTogam9pLnN0cmluZygpLnZhbGlkKCd1aScpLnJlcXVpcmVkKCksXG59KVxuXG5jb25zdCBmaWVsZFNjaGVtYSA9IGpvaVxuICAuYWx0ZXJuYXRpdmVzKClcbiAgLnRyeShcbiAgICB0ZXh0LFxuICAgIG51bWJlcixcbiAgICB0ZXh0YXJlYSxcbiAgICBlbWFpbCxcbiAgICBjb2RlLFxuICAgIGpzb24sXG4gICAgc2VsZWN0LFxuICAgIGdyb3VwLFxuICAgIGFycmF5LFxuICAgIHJvdyxcbiAgICBjb2xsYXBzaWJsZSxcbiAgICB0YWJzLFxuICAgIHJhZGlvLFxuICAgIHJlbGF0aW9uc2hpcCxcbiAgICBjaGVja2JveCxcbiAgICB1cGxvYWQsXG4gICAgcmljaFRleHQsXG4gICAgYmxvY2tzLFxuICAgIGRhdGUsXG4gICAgcG9pbnQsXG4gICAgdWksXG4gIClcbiAgLmlkKCdmaWVsZCcpXG5cbmV4cG9ydCBkZWZhdWx0IGZpZWxkU2NoZW1hXG4iXSwibmFtZXMiOlsiam9pIiwiY29tcG9uZW50U2NoZW1hIiwiYmFzZUFkbWluQ29tcG9uZW50RmllbGRzIiwib2JqZWN0Iiwia2V5cyIsIkNlbGwiLCJGaWVsZCIsIkZpbHRlciIsImRlZmF1bHQiLCJiYXNlQWRtaW5GaWVsZHMiLCJjbGFzc05hbWUiLCJzdHJpbmciLCJjb21wb25lbnRzIiwiY29uZGl0aW9uIiwiZnVuYyIsImRlc2NyaXB0aW9uIiwiYWx0ZXJuYXRpdmVzIiwidHJ5IiwicGF0dGVybiIsImRpc2FibGVCdWxrRWRpdCIsImJvb2xlYW4iLCJkaXNhYmxlZCIsImhpZGRlbiIsImluaXRDb2xsYXBzZWQiLCJwb3NpdGlvbiIsInZhbGlkIiwicmVhZE9ubHkiLCJzdHlsZSIsInVua25vd24iLCJ3aWR0aCIsImJhc2VGaWVsZCIsImFjY2VzcyIsImNyZWF0ZSIsInJlYWQiLCJ1cGRhdGUiLCJhZG1pbiIsImN1c3RvbSIsImFueSIsImhvb2tzIiwiYWZ0ZXJDaGFuZ2UiLCJhcnJheSIsIml0ZW1zIiwiYWZ0ZXJSZWFkIiwiYmVmb3JlQ2hhbmdlIiwiYmVmb3JlVmFsaWRhdGUiLCJpbmRleCIsImxhYmVsIiwibG9jYWxpemVkIiwicmVxdWlyZWQiLCJzYXZlVG9KV1QiLCJ1bmlxdWUiLCJ2YWxpZGF0ZSIsImlkRmllbGQiLCJuYW1lIiwiaW52YWxpZCIsIm5vdCIsInR5cGUiLCJ0ZXh0IiwiYXV0b0NvbXBsZXRlIiwiRXJyb3IiLCJMYWJlbCIsImFmdGVySW5wdXQiLCJiZWZvcmVJbnB1dCIsInBsYWNlaG9sZGVyIiwicnRsIiwiZGVmYXVsdFZhbHVlIiwiaGFzTWFueSIsIm1heExlbmd0aCIsIm51bWJlciIsIm1heFJvd3MiLCJ3aGVuIiwiaXMiLCJ0aGVuIiwiZm9yYmlkZGVuIiwibWluTGVuZ3RoIiwibWluUm93cyIsIm90aGVyd2lzZSIsInN0ZXAiLCJtYXgiLCJtaW4iLCJ0ZXh0YXJlYSIsInJvd3MiLCJlbWFpbCIsImNvZGUiLCJlZGl0b3JPcHRpb25zIiwibGFuZ3VhZ2UiLCJqc29uIiwic2VsZWN0IiwiaXNDbGVhcmFibGUiLCJpc1NvcnRhYmxlIiwiYWxsb3ciLCJvcHRpb25zIiwidmFsdWUiLCJyYWRpbyIsImxheW91dCIsInJvdyIsImZpZWxkcyIsImxpbmsiLCJjb2xsYXBzaWJsZSIsInRhYiIsImV4aXN0IiwiaW50ZXJmYWNlTmFtZSIsInRhYnMiLCJncm91cCIsImhpZGVHdXR0ZXIiLCJSb3dMYWJlbCIsImxhYmVscyIsInBsdXJhbCIsInNpbmd1bGFyIiwidXBsb2FkIiwiZmlsdGVyT3B0aW9ucyIsIm1heERlcHRoIiwicmVsYXRpb25UbyIsImNoZWNrYm94IiwicG9pbnQiLCJyZWxhdGlvbnNoaXAiLCJhbGxvd0NyZWF0ZSIsInNvcnRPcHRpb25zIiwiY29uZGl0aW9uYWwiLCJyZWYiLCJ3YXJuaW5nIiwibWVzc2FnZSIsImJsb2NrcyIsImdyYXBoUUwiLCJzaW5ndWxhck5hbWUiLCJpbWFnZUFsdFRleHQiLCJpbWFnZVVSTCIsInNsdWciLCJyaWNoVGV4dCIsImVkaXRvciIsIkNlbGxDb21wb25lbnQiLCJvcHRpb25hbCIsIkZpZWxkQ29tcG9uZW50IiwiTGF6eUNlbGxDb21wb25lbnQiLCJMYXp5RmllbGRDb21wb25lbnQiLCJhZnRlclJlYWRQcm9taXNlIiwib3V0cHV0U2NoZW1hIiwicG9wdWxhdGlvblByb21pc2UiLCJkYXRlIiwiZGlzcGxheUZvcm1hdCIsIm1heERhdGUiLCJtYXhUaW1lIiwibWluRGF0ZSIsIm1pblRpbWUiLCJtb250aHNUb1Nob3ciLCJvdmVycmlkZXMiLCJwaWNrZXJBcHBlYXJhbmNl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