payload-auth 1.1.2 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (410) hide show
  1. package/dist/authjs/index.d.ts.map +1 -1
  2. package/dist/authjs/index.js +2 -2
  3. package/dist/better-auth/adapter/generate-schema/generate-schema-builder.d.ts +1 -1
  4. package/dist/better-auth/adapter/generate-schema/generate-schema-builder.d.ts.map +1 -1
  5. package/dist/better-auth/adapter/generate-schema/generate-schema-builder.js +3 -3
  6. package/dist/better-auth/adapter/generate-schema/get-payload-schema.d.ts.map +1 -1
  7. package/dist/better-auth/adapter/generate-schema/get-payload-schema.js +4 -4
  8. package/dist/better-auth/adapter/generate-schema/index.js +5 -5
  9. package/dist/better-auth/adapter/generate-schema/utils.js +1 -1
  10. package/dist/better-auth/adapter/index.d.ts +2 -2
  11. package/dist/better-auth/adapter/index.d.ts.map +1 -1
  12. package/dist/better-auth/adapter/index.js +53 -53
  13. package/dist/better-auth/adapter/transform/index.d.ts +5 -5
  14. package/dist/better-auth/adapter/transform/index.d.ts.map +1 -1
  15. package/dist/better-auth/adapter/transform/index.js +69 -69
  16. package/dist/better-auth/adapter/types.d.ts +3 -3
  17. package/dist/better-auth/adapter/types.d.ts.map +1 -1
  18. package/dist/better-auth/adapter/types.js +1 -1
  19. package/dist/better-auth/index.js +4 -4
  20. package/dist/better-auth/plugin/{lib/constants.d.ts → constants.d.ts} +12 -6
  21. package/dist/better-auth/plugin/constants.d.ts.map +1 -0
  22. package/dist/better-auth/plugin/constants.js +62 -0
  23. package/dist/better-auth/plugin/helpers/check-passkey-plugin.d.ts +1 -1
  24. package/dist/better-auth/plugin/helpers/check-passkey-plugin.d.ts.map +1 -1
  25. package/dist/better-auth/plugin/helpers/check-passkey-plugin.js +2 -2
  26. package/dist/better-auth/plugin/helpers/check-username-plugin.d.ts +1 -1
  27. package/dist/better-auth/plugin/helpers/check-username-plugin.d.ts.map +1 -1
  28. package/dist/better-auth/plugin/helpers/check-username-plugin.js +2 -2
  29. package/dist/better-auth/plugin/helpers/generate-verify-email-url.d.ts +1 -1
  30. package/dist/better-auth/plugin/helpers/generate-verify-email-url.d.ts.map +1 -1
  31. package/dist/better-auth/plugin/helpers/generate-verify-email-url.js +7 -7
  32. package/dist/better-auth/plugin/helpers/get-admin-access.d.ts +1 -1
  33. package/dist/better-auth/plugin/helpers/get-admin-access.d.ts.map +1 -1
  34. package/dist/better-auth/plugin/helpers/get-admin-access.js +2 -2
  35. package/dist/better-auth/plugin/helpers/get-all-roles.d.ts +1 -1
  36. package/dist/better-auth/plugin/helpers/get-all-roles.d.ts.map +1 -1
  37. package/dist/better-auth/plugin/helpers/get-all-roles.js +4 -4
  38. package/dist/better-auth/plugin/helpers/get-ip.d.ts +1 -1
  39. package/dist/better-auth/plugin/helpers/get-ip.d.ts.map +1 -1
  40. package/dist/better-auth/plugin/helpers/get-ip.js +14 -14
  41. package/dist/better-auth/plugin/helpers/get-requst-collection.d.ts +1 -1
  42. package/dist/better-auth/plugin/helpers/get-requst-collection.d.ts.map +1 -1
  43. package/dist/better-auth/plugin/helpers/get-requst-collection.js +2 -2
  44. package/dist/better-auth/plugin/helpers/index.d.ts +1 -1
  45. package/dist/better-auth/plugin/helpers/index.d.ts.map +1 -1
  46. package/dist/better-auth/plugin/helpers/index.js +1 -1
  47. package/dist/better-auth/plugin/helpers/prepare-session-data.d.ts +3 -3
  48. package/dist/better-auth/plugin/helpers/prepare-session-data.d.ts.map +1 -1
  49. package/dist/better-auth/plugin/helpers/prepare-session-data.js +1 -1
  50. package/dist/better-auth/plugin/helpers/serialize-cookie.d.ts +2 -2
  51. package/dist/better-auth/plugin/helpers/serialize-cookie.d.ts.map +1 -1
  52. package/dist/better-auth/plugin/helpers/serialize-cookie.js +33 -33
  53. package/dist/better-auth/plugin/index.d.ts +6 -6
  54. package/dist/better-auth/plugin/index.d.ts.map +1 -1
  55. package/dist/better-auth/plugin/index.js +19 -53
  56. package/dist/better-auth/plugin/lib/build-collections/accounts/hooks/sync-password-to-user.d.ts +1 -1
  57. package/dist/better-auth/plugin/lib/build-collections/accounts/hooks/sync-password-to-user.d.ts.map +1 -1
  58. package/dist/better-auth/plugin/lib/build-collections/accounts/hooks/sync-password-to-user.js +6 -6
  59. package/dist/better-auth/plugin/lib/build-collections/accounts/index.d.ts +3 -3
  60. package/dist/better-auth/plugin/lib/build-collections/accounts/index.d.ts.map +1 -1
  61. package/dist/better-auth/plugin/lib/build-collections/accounts/index.js +47 -47
  62. package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-after-read.d.ts +3 -3
  63. package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-after-read.d.ts.map +1 -1
  64. package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-after-read.js +1 -1
  65. package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-before-change.d.ts +1 -1
  66. package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-before-change.d.ts.map +1 -1
  67. package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-before-change.js +2 -2
  68. package/dist/better-auth/plugin/lib/build-collections/admin-invitations/index.d.ts +3 -3
  69. package/dist/better-auth/plugin/lib/build-collections/admin-invitations/index.d.ts.map +1 -1
  70. package/dist/better-auth/plugin/lib/build-collections/admin-invitations/index.js +33 -24
  71. package/dist/better-auth/plugin/lib/build-collections/api-keys.d.ts +3 -3
  72. package/dist/better-auth/plugin/lib/build-collections/api-keys.d.ts.map +1 -1
  73. package/dist/better-auth/plugin/lib/build-collections/api-keys.js +77 -80
  74. package/dist/better-auth/plugin/lib/build-collections/index.d.ts +3 -3
  75. package/dist/better-auth/plugin/lib/build-collections/index.d.ts.map +1 -1
  76. package/dist/better-auth/plugin/lib/build-collections/index.js +2 -2
  77. package/dist/better-auth/plugin/lib/build-collections/invitations.d.ts +3 -3
  78. package/dist/better-auth/plugin/lib/build-collections/invitations.d.ts.map +1 -1
  79. package/dist/better-auth/plugin/lib/build-collections/invitations.js +30 -30
  80. package/dist/better-auth/plugin/lib/build-collections/jwks.d.ts +3 -3
  81. package/dist/better-auth/plugin/lib/build-collections/jwks.d.ts.map +1 -1
  82. package/dist/better-auth/plugin/lib/build-collections/jwks.js +13 -13
  83. package/dist/better-auth/plugin/lib/build-collections/members.d.ts +3 -3
  84. package/dist/better-auth/plugin/lib/build-collections/members.d.ts.map +1 -1
  85. package/dist/better-auth/plugin/lib/build-collections/members.js +22 -22
  86. package/dist/better-auth/plugin/lib/build-collections/oauth-access-tokens.d.ts +3 -3
  87. package/dist/better-auth/plugin/lib/build-collections/oauth-access-tokens.d.ts.map +1 -1
  88. package/dist/better-auth/plugin/lib/build-collections/oauth-access-tokens.js +33 -33
  89. package/dist/better-auth/plugin/lib/build-collections/oauth-applications.d.ts +3 -3
  90. package/dist/better-auth/plugin/lib/build-collections/oauth-applications.d.ts.map +1 -1
  91. package/dist/better-auth/plugin/lib/build-collections/oauth-applications.js +40 -40
  92. package/dist/better-auth/plugin/lib/build-collections/oauth-consents.d.ts +3 -3
  93. package/dist/better-auth/plugin/lib/build-collections/oauth-consents.d.ts.map +1 -1
  94. package/dist/better-auth/plugin/lib/build-collections/oauth-consents.js +20 -20
  95. package/dist/better-auth/plugin/lib/build-collections/organizations.d.ts +3 -3
  96. package/dist/better-auth/plugin/lib/build-collections/organizations.d.ts.map +1 -1
  97. package/dist/better-auth/plugin/lib/build-collections/organizations.js +21 -21
  98. package/dist/better-auth/plugin/lib/build-collections/passkeys.d.ts +3 -3
  99. package/dist/better-auth/plugin/lib/build-collections/passkeys.d.ts.map +1 -1
  100. package/dist/better-auth/plugin/lib/build-collections/passkeys.js +37 -37
  101. package/dist/better-auth/plugin/lib/build-collections/sessions.d.ts +3 -3
  102. package/dist/better-auth/plugin/lib/build-collections/sessions.d.ts.map +1 -1
  103. package/dist/better-auth/plugin/lib/build-collections/sessions.js +33 -33
  104. package/dist/better-auth/plugin/lib/build-collections/sso-providers.d.ts +3 -3
  105. package/dist/better-auth/plugin/lib/build-collections/sso-providers.d.ts.map +1 -1
  106. package/dist/better-auth/plugin/lib/build-collections/sso-providers.js +29 -29
  107. package/dist/better-auth/plugin/lib/build-collections/teams.d.ts +3 -3
  108. package/dist/better-auth/plugin/lib/build-collections/teams.d.ts.map +1 -1
  109. package/dist/better-auth/plugin/lib/build-collections/teams.js +13 -13
  110. package/dist/better-auth/plugin/lib/build-collections/two-factors.d.ts +3 -3
  111. package/dist/better-auth/plugin/lib/build-collections/two-factors.d.ts.map +1 -1
  112. package/dist/better-auth/plugin/lib/build-collections/two-factors.js +17 -17
  113. package/dist/better-auth/plugin/lib/build-collections/users/better-auth-strategy.d.ts +1 -1
  114. package/dist/better-auth/plugin/lib/build-collections/users/better-auth-strategy.d.ts.map +1 -1
  115. package/dist/better-auth/plugin/lib/build-collections/users/better-auth-strategy.js +8 -8
  116. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/generate-invite-url.d.ts +3 -4
  117. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/generate-invite-url.d.ts.map +1 -1
  118. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/generate-invite-url.js +12 -11
  119. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/refresh-token.d.ts +1 -1
  120. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/refresh-token.d.ts.map +1 -1
  121. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/refresh-token.js +19 -18
  122. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/send-invite-url.d.ts +3 -2
  123. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/send-invite-url.d.ts.map +1 -1
  124. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/send-invite-url.js +28 -6
  125. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/set-admin-role.d.ts +2 -2
  126. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/set-admin-role.d.ts.map +1 -1
  127. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/set-admin-role.js +9 -8
  128. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/signup.d.ts +2 -2
  129. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/signup.d.ts.map +1 -1
  130. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/signup.js +34 -30
  131. package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-login.d.ts +1 -1
  132. package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-login.d.ts.map +1 -1
  133. package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-login.js +7 -6
  134. package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-logout.d.ts +1 -1
  135. package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-logout.d.ts.map +1 -1
  136. package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-logout.js +11 -11
  137. package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-delete.d.ts +2 -2
  138. package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-delete.d.ts.map +1 -1
  139. package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-delete.js +2 -2
  140. package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-login.d.ts +1 -1
  141. package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-login.d.ts.map +1 -1
  142. package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-login.js +3 -3
  143. package/dist/better-auth/plugin/lib/build-collections/users/hooks/on-verified-change.d.ts +1 -1
  144. package/dist/better-auth/plugin/lib/build-collections/users/hooks/on-verified-change.d.ts.map +1 -1
  145. package/dist/better-auth/plugin/lib/build-collections/users/hooks/on-verified-change.js +1 -1
  146. package/dist/better-auth/plugin/lib/build-collections/users/hooks/sync-account.d.ts +1 -1
  147. package/dist/better-auth/plugin/lib/build-collections/users/hooks/sync-account.d.ts.map +1 -1
  148. package/dist/better-auth/plugin/lib/build-collections/users/hooks/sync-account.js +9 -9
  149. package/dist/better-auth/plugin/lib/build-collections/users/index.d.ts +3 -3
  150. package/dist/better-auth/plugin/lib/build-collections/users/index.d.ts.map +1 -1
  151. package/dist/better-auth/plugin/lib/build-collections/users/index.js +84 -94
  152. package/dist/better-auth/plugin/lib/build-collections/utils/get-timestamp-fields.d.ts +1 -1
  153. package/dist/better-auth/plugin/lib/build-collections/utils/get-timestamp-fields.d.ts.map +1 -1
  154. package/dist/better-auth/plugin/lib/build-collections/utils/get-timestamp-fields.js +7 -7
  155. package/dist/better-auth/plugin/lib/build-collections/utils/payload-access.d.ts +1 -1
  156. package/dist/better-auth/plugin/lib/build-collections/utils/payload-access.d.ts.map +1 -1
  157. package/dist/better-auth/plugin/lib/build-collections/utils/payload-access.js +9 -9
  158. package/dist/better-auth/plugin/lib/build-collections/verifications.d.ts +3 -3
  159. package/dist/better-auth/plugin/lib/build-collections/verifications.d.ts.map +1 -1
  160. package/dist/better-auth/plugin/lib/build-collections/verifications.js +17 -17
  161. package/dist/better-auth/plugin/lib/get-payload-auth.d.ts +2 -2
  162. package/dist/better-auth/plugin/lib/get-payload-auth.d.ts.map +1 -1
  163. package/dist/better-auth/plugin/lib/get-payload-auth.js +1 -1
  164. package/dist/better-auth/plugin/lib/get-required-collection-slugs.d.ts +2 -2
  165. package/dist/better-auth/plugin/lib/get-required-collection-slugs.d.ts.map +1 -1
  166. package/dist/better-auth/plugin/lib/get-required-collection-slugs.js +7 -7
  167. package/dist/better-auth/plugin/lib/init-better-auth.d.ts +4 -4
  168. package/dist/better-auth/plugin/lib/init-better-auth.d.ts.map +1 -1
  169. package/dist/better-auth/plugin/lib/init-better-auth.js +1 -1
  170. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/admin-plugin.d.ts +1 -1
  171. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/admin-plugin.d.ts.map +1 -1
  172. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/admin-plugin.js +3 -3
  173. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/api-key-plugin.js +3 -3
  174. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/index.d.ts +4 -4
  175. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/index.d.ts.map +1 -1
  176. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/index.js +12 -12
  177. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/oidc-plugin.js +10 -11
  178. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/organizations-plugin.js +15 -16
  179. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/passkey-plugin.js +3 -3
  180. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/sso-plugin.js +3 -3
  181. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/ensure-password-set-before-create.d.ts +1 -1
  182. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/ensure-password-set-before-create.d.ts.map +1 -1
  183. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/ensure-password-set-before-create.js +7 -6
  184. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/password.d.ts +1 -1
  185. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/password.d.ts.map +1 -1
  186. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/password.js +7 -6
  187. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/save-to-jwt-middleware.d.ts +4 -4
  188. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/save-to-jwt-middleware.d.ts.map +1 -1
  189. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/save-to-jwt-middleware.js +4 -4
  190. package/dist/better-auth/plugin/payload/components/admin-buttons/index.d.ts +2 -2
  191. package/dist/better-auth/plugin/payload/components/admin-buttons/index.d.ts.map +1 -1
  192. package/dist/better-auth/plugin/payload/components/admin-buttons/index.js +18 -18
  193. package/dist/better-auth/plugin/payload/components/admin-invite-button/index.d.ts +2 -2
  194. package/dist/better-auth/plugin/payload/components/admin-invite-button/index.d.ts.map +1 -1
  195. package/dist/better-auth/plugin/payload/components/admin-invite-button/index.js +58 -40
  196. package/dist/better-auth/plugin/payload/components/admin-invite-button/index.scss +2 -3
  197. package/dist/better-auth/plugin/payload/components/admin-social-provider-buttons/index.d.ts +3 -3
  198. package/dist/better-auth/plugin/payload/components/admin-social-provider-buttons/index.d.ts.map +1 -1
  199. package/dist/better-auth/plugin/payload/components/admin-social-provider-buttons/index.js +7 -9
  200. package/dist/better-auth/plugin/payload/components/admin-social-provider-buttons/index.scss +4 -1
  201. package/dist/better-auth/plugin/payload/components/logout-button.d.ts +1 -1
  202. package/dist/better-auth/plugin/payload/components/logout-button.d.ts.map +1 -1
  203. package/dist/better-auth/plugin/payload/components/logout-button.js +7 -9
  204. package/dist/better-auth/plugin/payload/components/rsc-redirect.d.ts +1 -1
  205. package/dist/better-auth/plugin/payload/components/rsc-redirect.d.ts.map +1 -1
  206. package/dist/better-auth/plugin/payload/components/rsc-redirect.js +1 -1
  207. package/dist/better-auth/plugin/payload/components/token-field.d.ts +2 -2
  208. package/dist/better-auth/plugin/payload/components/token-field.d.ts.map +1 -1
  209. package/dist/better-auth/plugin/payload/components/token-field.js +3 -3
  210. package/dist/better-auth/plugin/payload/exports/client.d.ts +5 -6
  211. package/dist/better-auth/plugin/payload/exports/client.d.ts.map +1 -1
  212. package/dist/better-auth/plugin/payload/exports/client.js +2 -3
  213. package/dist/better-auth/plugin/payload/exports/rsc.d.ts +6 -9
  214. package/dist/better-auth/plugin/payload/exports/rsc.d.ts.map +1 -1
  215. package/dist/better-auth/plugin/payload/exports/rsc.js +5 -8
  216. package/dist/better-auth/plugin/payload/utils/generate-admin-invite-url.d.ts +1 -1
  217. package/dist/better-auth/plugin/payload/utils/generate-admin-invite-url.d.ts.map +1 -1
  218. package/dist/better-auth/plugin/payload/utils/generate-admin-invite-url.js +6 -5
  219. package/dist/better-auth/plugin/payload/utils/generate-metadata.d.ts +3 -3
  220. package/dist/better-auth/plugin/payload/utils/generate-metadata.d.ts.map +1 -1
  221. package/dist/better-auth/plugin/payload/utils/generate-metadata.js +18 -18
  222. package/dist/better-auth/plugin/payload/utils/get-safe-redirect.d.ts.map +1 -1
  223. package/dist/better-auth/plugin/payload/utils/get-safe-redirect.js +1 -1
  224. package/dist/better-auth/plugin/payload/views/admin-login/client.d.ts +18 -0
  225. package/dist/better-auth/plugin/payload/views/admin-login/client.d.ts.map +1 -0
  226. package/dist/better-auth/plugin/payload/views/admin-login/client.js +192 -0
  227. package/dist/better-auth/plugin/payload/views/admin-login/index.d.ts +11 -0
  228. package/dist/better-auth/plugin/payload/views/admin-login/index.d.ts.map +1 -0
  229. package/dist/better-auth/plugin/payload/views/admin-login/index.js +126 -0
  230. package/dist/better-auth/plugin/payload/views/admin-signup/client.d.ts +16 -0
  231. package/dist/better-auth/plugin/payload/views/admin-signup/client.d.ts.map +1 -0
  232. package/dist/better-auth/plugin/payload/views/admin-signup/client.js +190 -0
  233. package/dist/better-auth/plugin/payload/views/admin-signup/index.d.ts +12 -0
  234. package/dist/better-auth/plugin/payload/views/admin-signup/index.d.ts.map +1 -0
  235. package/dist/better-auth/plugin/payload/views/admin-signup/index.js +114 -0
  236. package/dist/better-auth/plugin/payload/views/{create-first-admin → admin-signup}/index.scss +1 -1
  237. package/dist/better-auth/plugin/payload/views/forgot-password/client.d.ts +4 -7
  238. package/dist/better-auth/plugin/payload/views/forgot-password/client.d.ts.map +1 -1
  239. package/dist/better-auth/plugin/payload/views/forgot-password/client.js +72 -100
  240. package/dist/better-auth/plugin/payload/views/forgot-password/index.d.ts +6 -6
  241. package/dist/better-auth/plugin/payload/views/forgot-password/index.d.ts.map +1 -1
  242. package/dist/better-auth/plugin/payload/views/forgot-password/index.js +23 -34
  243. package/dist/better-auth/plugin/payload/views/reset-password/client.d.ts +4 -2
  244. package/dist/better-auth/plugin/payload/views/reset-password/client.d.ts.map +1 -1
  245. package/dist/better-auth/plugin/payload/views/reset-password/client.js +88 -53
  246. package/dist/better-auth/plugin/payload/views/reset-password/index.d.ts +2 -2
  247. package/dist/better-auth/plugin/payload/views/reset-password/index.d.ts.map +1 -1
  248. package/dist/better-auth/plugin/payload/views/reset-password/index.js +51 -56
  249. package/dist/better-auth/plugin/types.d.ts +37 -19
  250. package/dist/better-auth/plugin/types.d.ts.map +1 -1
  251. package/dist/better-auth/plugin/types.js +1 -1
  252. package/dist/better-auth/types.js +2 -2
  253. package/dist/clerk/admin-ui.js +4 -4
  254. package/dist/clerk/index.js +5 -5
  255. package/dist/clerk/plugin/auth-strategy.js +4 -4
  256. package/dist/clerk/plugin/collections/users/access.js +1 -1
  257. package/dist/clerk/plugin/collections/users/endpoints/sync-from-clerk.d.ts +2 -2
  258. package/dist/clerk/plugin/collections/users/endpoints/sync-from-clerk.d.ts.map +1 -1
  259. package/dist/clerk/plugin/collections/users/endpoints/sync-from-clerk.js +9 -9
  260. package/dist/clerk/plugin/collections/users/endpoints/webhook/handlers/index.js +4 -4
  261. package/dist/clerk/plugin/collections/users/endpoints/webhook/handlers/userCreated.d.ts.map +1 -1
  262. package/dist/clerk/plugin/collections/users/endpoints/webhook/handlers/userCreated.js +2 -2
  263. package/dist/clerk/plugin/collections/users/endpoints/webhook/handlers/userDeleted.d.ts.map +1 -1
  264. package/dist/clerk/plugin/collections/users/endpoints/webhook/handlers/userDeleted.js +2 -2
  265. package/dist/clerk/plugin/collections/users/endpoints/webhook/handlers/userUpdated.d.ts.map +1 -1
  266. package/dist/clerk/plugin/collections/users/endpoints/webhook/handlers/userUpdated.js +2 -2
  267. package/dist/clerk/plugin/collections/users/endpoints/webhook/index.d.ts.map +1 -1
  268. package/dist/clerk/plugin/collections/users/endpoints/webhook/index.js +5 -4
  269. package/dist/clerk/plugin/collections/users/fields.js +1 -1
  270. package/dist/clerk/plugin/collections/users/index.d.ts +1 -1
  271. package/dist/clerk/plugin/collections/users/index.d.ts.map +1 -1
  272. package/dist/clerk/plugin/collections/users/index.js +7 -7
  273. package/dist/clerk/plugin/components/after-login-form.js +4 -4
  274. package/dist/clerk/plugin/components/logout-button.d.ts.map +1 -1
  275. package/dist/clerk/plugin/components/logout-button.js +17 -17
  276. package/dist/clerk/plugin/components/sync-clerk-users-button.d.ts +1 -1
  277. package/dist/clerk/plugin/components/sync-clerk-users-button.d.ts.map +1 -1
  278. package/dist/clerk/plugin/components/sync-clerk-users-button.js +8 -8
  279. package/dist/clerk/plugin.d.ts +4 -4
  280. package/dist/clerk/plugin.d.ts.map +1 -1
  281. package/dist/clerk/plugin.js +4 -4
  282. package/dist/clerk/types.js +1 -1
  283. package/dist/clerk/utils/clerk-user.d.ts.map +1 -1
  284. package/dist/clerk/utils/clerk-user.js +1 -1
  285. package/dist/clerk/utils/index.js +4 -4
  286. package/dist/clerk/utils/load-clerk-instance.d.ts.map +1 -1
  287. package/dist/clerk/utils/load-clerk-instance.js +2 -2
  288. package/dist/clerk/utils/svix.d.ts +1 -1
  289. package/dist/clerk/utils/svix.d.ts.map +1 -1
  290. package/dist/clerk/utils/svix.js +2 -2
  291. package/dist/clerk/utils/user.d.ts.map +1 -1
  292. package/dist/clerk/utils/user.js +1 -1
  293. package/dist/index.d.ts +4 -4
  294. package/dist/index.d.ts.map +1 -1
  295. package/dist/index.js +1 -1
  296. package/dist/kinde/index.d.ts.map +1 -1
  297. package/dist/kinde/index.js +2 -2
  298. package/dist/{better-auth/plugin/payload → shared}/components/icons.d.ts +3 -3
  299. package/dist/shared/components/icons.d.ts.map +1 -0
  300. package/dist/shared/components/icons.js +437 -0
  301. package/dist/shared/components/logo.d.ts +4 -0
  302. package/dist/shared/components/logo.d.ts.map +1 -0
  303. package/dist/shared/components/logo.js +24 -0
  304. package/dist/shared/form/components/submit.d.ts +8 -0
  305. package/dist/shared/form/components/submit.d.ts.map +1 -0
  306. package/dist/shared/form/components/submit.js +21 -0
  307. package/dist/shared/form/fields/text-field.d.ts +8 -0
  308. package/dist/shared/form/fields/text-field.d.ts.map +1 -0
  309. package/dist/shared/form/fields/text-field.js +41 -0
  310. package/dist/shared/form/index.d.ts +34 -0
  311. package/dist/shared/form/index.d.ts.map +1 -0
  312. package/dist/shared/form/index.js +17 -0
  313. package/dist/shared/form/ui/header/index.d.ts +9 -0
  314. package/dist/shared/form/ui/header/index.d.ts.map +1 -0
  315. package/dist/shared/form/ui/header/index.js +24 -0
  316. package/dist/shared/form/ui/index.d.ts +31 -0
  317. package/dist/shared/form/ui/index.d.ts.map +1 -0
  318. package/dist/shared/form/ui/index.js +60 -0
  319. package/dist/shared/form/ui/index.scss +12 -0
  320. package/dist/shared/index.d.ts +3 -0
  321. package/dist/shared/index.d.ts.map +1 -0
  322. package/dist/shared/index.js +4 -0
  323. package/dist/shared/payload/fields/field-copy-button/index.css +47 -0
  324. package/dist/shared/payload/fields/field-copy-button/index.d.ts +4 -0
  325. package/dist/shared/payload/fields/field-copy-button/index.d.ts.map +1 -0
  326. package/dist/shared/payload/fields/field-copy-button/index.js +38 -0
  327. package/dist/shared/payload/fields/generate-uuid-button/index.css +14 -0
  328. package/dist/shared/payload/fields/generate-uuid-button/index.d.ts +4 -0
  329. package/dist/shared/payload/fields/generate-uuid-button/index.d.ts.map +1 -0
  330. package/dist/shared/payload/fields/generate-uuid-button/index.js +26 -0
  331. package/dist/shared/payload/fields/index.d.ts +3 -0
  332. package/dist/shared/payload/fields/index.d.ts.map +1 -0
  333. package/dist/shared/payload/fields/index.js +4 -0
  334. package/dist/shared/utils/regex.d.ts +3 -0
  335. package/dist/shared/utils/regex.d.ts.map +1 -0
  336. package/dist/shared/utils/regex.js +4 -0
  337. package/dist/shared/utils/try-catch.d.ts +12 -0
  338. package/dist/shared/utils/try-catch.d.ts.map +1 -0
  339. package/dist/shared/utils/try-catch.js +17 -0
  340. package/package.json +7 -5
  341. package/dist/better-auth/plugin/helpers/get-admin-routes.d.ts +0 -14
  342. package/dist/better-auth/plugin/helpers/get-admin-routes.d.ts.map +0 -1
  343. package/dist/better-auth/plugin/helpers/get-admin-routes.js +0 -6
  344. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/forgot-password.d.ts +0 -3
  345. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/forgot-password.d.ts.map +0 -1
  346. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/forgot-password.js +0 -96
  347. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/login.d.ts +0 -4
  348. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/login.d.ts.map +0 -1
  349. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/login.js +0 -115
  350. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/reset-password.d.ts +0 -3
  351. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/reset-password.d.ts.map +0 -1
  352. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/reset-password.js +0 -62
  353. package/dist/better-auth/plugin/lib/constants.d.ts.map +0 -1
  354. package/dist/better-auth/plugin/lib/constants.js +0 -56
  355. package/dist/better-auth/plugin/payload/components/form-header/index.d.ts +0 -9
  356. package/dist/better-auth/plugin/payload/components/form-header/index.d.ts.map +0 -1
  357. package/dist/better-auth/plugin/payload/components/form-header/index.js +0 -23
  358. package/dist/better-auth/plugin/payload/components/icons.d.ts.map +0 -1
  359. package/dist/better-auth/plugin/payload/components/icons.js +0 -437
  360. package/dist/better-auth/plugin/payload/components/logo.d.ts +0 -4
  361. package/dist/better-auth/plugin/payload/components/logo.d.ts.map +0 -1
  362. package/dist/better-auth/plugin/payload/components/logo.js +0 -24
  363. package/dist/better-auth/plugin/payload/components/styles.css +0 -73
  364. package/dist/better-auth/plugin/payload/views/admin-invite/client.d.ts +0 -12
  365. package/dist/better-auth/plugin/payload/views/admin-invite/client.d.ts.map +0 -1
  366. package/dist/better-auth/plugin/payload/views/admin-invite/client.js +0 -92
  367. package/dist/better-auth/plugin/payload/views/admin-invite/index.d.ts +0 -11
  368. package/dist/better-auth/plugin/payload/views/admin-invite/index.d.ts.map +0 -1
  369. package/dist/better-auth/plugin/payload/views/admin-invite/index.js +0 -84
  370. package/dist/better-auth/plugin/payload/views/admin-invite/index.scss +0 -25
  371. package/dist/better-auth/plugin/payload/views/create-first-admin/client.d.ts +0 -14
  372. package/dist/better-auth/plugin/payload/views/create-first-admin/client.d.ts.map +0 -1
  373. package/dist/better-auth/plugin/payload/views/create-first-admin/client.js +0 -95
  374. package/dist/better-auth/plugin/payload/views/create-first-admin/index.d.ts +0 -12
  375. package/dist/better-auth/plugin/payload/views/create-first-admin/index.d.ts.map +0 -1
  376. package/dist/better-auth/plugin/payload/views/create-first-admin/index.js +0 -144
  377. package/dist/better-auth/plugin/payload/views/forgot-password/index.scss +0 -0
  378. package/dist/better-auth/plugin/payload/views/inactivity/index.d.ts +0 -5
  379. package/dist/better-auth/plugin/payload/views/inactivity/index.d.ts.map +0 -1
  380. package/dist/better-auth/plugin/payload/views/inactivity/index.js +0 -12
  381. package/dist/better-auth/plugin/payload/views/login/form/fields/login-field.d.ts +0 -9
  382. package/dist/better-auth/plugin/payload/views/login/form/fields/login-field.d.ts.map +0 -1
  383. package/dist/better-auth/plugin/payload/views/login/form/fields/login-field.js +0 -54
  384. package/dist/better-auth/plugin/payload/views/login/form/fields/password/index.d.ts +0 -1
  385. package/dist/better-auth/plugin/payload/views/login/form/fields/password/index.d.ts.map +0 -1
  386. package/dist/better-auth/plugin/payload/views/login/form/fields/password/index.js +0 -121
  387. package/dist/better-auth/plugin/payload/views/login/form/fields/password/index.scss +0 -31
  388. package/dist/better-auth/plugin/payload/views/login/form/fields/password/types.d.ts +0 -56
  389. package/dist/better-auth/plugin/payload/views/login/form/fields/password/types.d.ts.map +0 -1
  390. package/dist/better-auth/plugin/payload/views/login/form/fields/password/types.js +0 -3
  391. package/dist/better-auth/plugin/payload/views/login/form/index.d.ts +0 -17
  392. package/dist/better-auth/plugin/payload/views/login/form/index.d.ts.map +0 -1
  393. package/dist/better-auth/plugin/payload/views/login/form/index.js +0 -137
  394. package/dist/better-auth/plugin/payload/views/login/form/index.scss +0 -23
  395. package/dist/better-auth/plugin/payload/views/login/index.d.ts +0 -11
  396. package/dist/better-auth/plugin/payload/views/login/index.d.ts.map +0 -1
  397. package/dist/better-auth/plugin/payload/views/login/index.js +0 -98
  398. package/dist/better-auth/plugin/payload/views/login/index.scss +0 -10
  399. package/dist/better-auth/plugin/payload/views/logout/client.d.ts +0 -8
  400. package/dist/better-auth/plugin/payload/views/logout/client.d.ts.map +0 -1
  401. package/dist/better-auth/plugin/payload/views/logout/client.js +0 -76
  402. package/dist/better-auth/plugin/payload/views/logout/index.d.ts +0 -8
  403. package/dist/better-auth/plugin/payload/views/logout/index.d.ts.map +0 -1
  404. package/dist/better-auth/plugin/payload/views/logout/index.js +0 -14
  405. package/dist/better-auth/plugin/payload/views/logout/index.scss +0 -0
  406. package/dist/better-auth/plugin/payload/views/reset-password/index.scss +0 -9
  407. package/dist/better-auth/plugin/payload/views/reset-password/metadata.d.ts +0 -3
  408. package/dist/better-auth/plugin/payload/views/reset-password/metadata.d.ts.map +0 -1
  409. package/dist/better-auth/plugin/payload/views/reset-password/metadata.js +0 -11
  410. /package/dist/{better-auth/plugin/payload/components/form-header → shared/form/ui/header}/index.scss +0 -0
@@ -1,12 +1,12 @@
1
1
  import { BetterAuthError } from "better-auth";
2
2
  import { generateSchema } from "./generate-schema";
3
3
  import { createTransform } from "./transform";
4
- export const BETTER_AUTH_CONTEXT_KEY = "payload-db-adapter";
4
+ export const BETTER_AUTH_CONTEXT_KEY = 'payload-db-adapter';
5
5
  const PAYLOAD_QUERY_DEPTH = 2;
6
6
  const payloadAdapter = (payloadClient, config)=>{
7
7
  function debugLog(message) {
8
8
  if (config.enableDebugLogs) {
9
- console.log("[payload-db-adapter]", ...message);
9
+ console.log('[payload-db-adapter]', ...message);
10
10
  }
11
11
  }
12
12
  function errorLog(message) {
@@ -21,7 +21,7 @@ const payloadAdapter = (payloadClient, config)=>{
21
21
  }
22
22
  });
23
23
  async function resolvePayloadClient() {
24
- const payload = typeof payloadClient === "function" ? await payloadClient() : await payloadClient;
24
+ const payload = typeof payloadClient === 'function' ? await payloadClient() : await payloadClient;
25
25
  if (!payload.config?.custom?.hasBetterAuthPlugin) {
26
26
  throw new BetterAuthError(`Payload is not configured with the better-auth plugin. Please add the plugin to your payload config.`);
27
27
  }
@@ -30,7 +30,7 @@ const payloadAdapter = (payloadClient, config)=>{
30
30
  return (options)=>{
31
31
  const { transformInput, transformOutput, convertWhereClause, convertSelect, convertSort, getModelName, singleIdQuery, multipleIdsQuery } = createTransform(options, config.enableDebugLogs ?? false);
32
32
  return {
33
- id: "payload",
33
+ id: 'payload',
34
34
  async create (data) {
35
35
  const start = Date.now();
36
36
  const { model, data: values, select } = data;
@@ -38,11 +38,11 @@ const payloadAdapter = (payloadClient, config)=>{
38
38
  const transformed = transformInput({
39
39
  data: values,
40
40
  model,
41
- action: "create",
41
+ action: 'create',
42
42
  idType: config.idType
43
43
  });
44
44
  debugLog([
45
- "create",
45
+ 'create',
46
46
  {
47
47
  collectionSlug,
48
48
  transformed,
@@ -60,7 +60,7 @@ const payloadAdapter = (payloadClient, config)=>{
60
60
  select: convertSelect(model, select),
61
61
  context: createAdapterContext({
62
62
  model,
63
- operation: "create"
63
+ operation: 'create'
64
64
  }),
65
65
  depth: PAYLOAD_QUERY_DEPTH
66
66
  });
@@ -69,7 +69,7 @@ const payloadAdapter = (payloadClient, config)=>{
69
69
  model
70
70
  });
71
71
  debugLog([
72
- "create result",
72
+ 'create result',
73
73
  {
74
74
  collectionSlug,
75
75
  transformedResult,
@@ -79,7 +79,7 @@ const payloadAdapter = (payloadClient, config)=>{
79
79
  return transformedResult;
80
80
  } catch (error) {
81
81
  errorLog([
82
- "Error in creating:",
82
+ 'Error in creating:',
83
83
  model,
84
84
  error
85
85
  ]);
@@ -96,7 +96,7 @@ const payloadAdapter = (payloadClient, config)=>{
96
96
  where
97
97
  });
98
98
  debugLog([
99
- "findOne",
99
+ 'findOne',
100
100
  {
101
101
  collectionSlug
102
102
  }
@@ -110,7 +110,7 @@ const payloadAdapter = (payloadClient, config)=>{
110
110
  let result = null;
111
111
  if (id) {
112
112
  debugLog([
113
- "findOneByID",
113
+ 'findOneByID',
114
114
  {
115
115
  collectionSlug,
116
116
  id
@@ -122,14 +122,14 @@ const payloadAdapter = (payloadClient, config)=>{
122
122
  select: convertSelect(model, select),
123
123
  context: createAdapterContext({
124
124
  model,
125
- operation: "findOneByID"
125
+ operation: 'findOneByID'
126
126
  }),
127
127
  depth: PAYLOAD_QUERY_DEPTH
128
128
  });
129
129
  result = doc;
130
130
  } else {
131
131
  debugLog([
132
- "findOneByWhere",
132
+ 'findOneByWhere',
133
133
  {
134
134
  collectionSlug,
135
135
  payloadWhere
@@ -141,7 +141,7 @@ const payloadAdapter = (payloadClient, config)=>{
141
141
  select: convertSelect(model, select),
142
142
  context: createAdapterContext({
143
143
  model,
144
- operation: "findOneByWhere"
144
+ operation: 'findOneByWhere'
145
145
  }),
146
146
  depth: PAYLOAD_QUERY_DEPTH,
147
147
  limit: 1
@@ -153,7 +153,7 @@ const payloadAdapter = (payloadClient, config)=>{
153
153
  model
154
154
  });
155
155
  debugLog([
156
- "findOne result",
156
+ 'findOne result',
157
157
  {
158
158
  collectionSlug,
159
159
  transformedResult,
@@ -163,7 +163,7 @@ const payloadAdapter = (payloadClient, config)=>{
163
163
  return transformedResult;
164
164
  } catch (error) {
165
165
  errorLog([
166
- "Error in findOne: ",
166
+ 'Error in findOne: ',
167
167
  error
168
168
  ]);
169
169
  return null;
@@ -179,7 +179,7 @@ const payloadAdapter = (payloadClient, config)=>{
179
179
  where
180
180
  });
181
181
  debugLog([
182
- "findMany",
182
+ 'findMany',
183
183
  {
184
184
  collectionSlug,
185
185
  sortBy,
@@ -197,7 +197,7 @@ const payloadAdapter = (payloadClient, config)=>{
197
197
  const singleId = where && singleIdQuery(payloadWhere);
198
198
  if (multipleIds && multipleIds.length > 0) {
199
199
  debugLog([
200
- "findManyByMultipleIDs",
200
+ 'findManyByMultipleIDs',
201
201
  {
202
202
  collectionSlug,
203
203
  ids: multipleIds
@@ -214,7 +214,7 @@ const payloadAdapter = (payloadClient, config)=>{
214
214
  depth: PAYLOAD_QUERY_DEPTH,
215
215
  context: createAdapterContext({
216
216
  model,
217
- operation: "findManyByMultipleIDs"
217
+ operation: 'findManyByMultipleIDs'
218
218
  })
219
219
  });
220
220
  res.docs.push(doc);
@@ -226,7 +226,7 @@ const payloadAdapter = (payloadClient, config)=>{
226
226
  };
227
227
  } else if (singleId) {
228
228
  debugLog([
229
- "findManyBySingleID",
229
+ 'findManyBySingleID',
230
230
  {
231
231
  collectionSlug,
232
232
  id: singleId
@@ -238,7 +238,7 @@ const payloadAdapter = (payloadClient, config)=>{
238
238
  depth: PAYLOAD_QUERY_DEPTH,
239
239
  context: createAdapterContext({
240
240
  model,
241
- operation: "findManyBySingleID"
241
+ operation: 'findManyBySingleID'
242
242
  })
243
243
  });
244
244
  result = {
@@ -249,7 +249,7 @@ const payloadAdapter = (payloadClient, config)=>{
249
249
  };
250
250
  } else {
251
251
  debugLog([
252
- "findManyByWhere",
252
+ 'findManyByWhere',
253
253
  {
254
254
  collectionSlug,
255
255
  payloadWhere
@@ -264,7 +264,7 @@ const payloadAdapter = (payloadClient, config)=>{
264
264
  depth: PAYLOAD_QUERY_DEPTH,
265
265
  context: createAdapterContext({
266
266
  model,
267
- operation: "findManyByWhere"
267
+ operation: 'findManyByWhere'
268
268
  })
269
269
  });
270
270
  result = {
@@ -277,7 +277,7 @@ const payloadAdapter = (payloadClient, config)=>{
277
277
  model
278
278
  })) ?? null;
279
279
  debugLog([
280
- "findMany result",
280
+ 'findMany result',
281
281
  {
282
282
  collectionSlug,
283
283
  transformedResult,
@@ -287,7 +287,7 @@ const payloadAdapter = (payloadClient, config)=>{
287
287
  return transformedResult;
288
288
  } catch (error) {
289
289
  errorLog([
290
- "Error in findMany: ",
290
+ 'Error in findMany: ',
291
291
  error
292
292
  ]);
293
293
  return [];
@@ -303,7 +303,7 @@ const payloadAdapter = (payloadClient, config)=>{
303
303
  where
304
304
  });
305
305
  debugLog([
306
- "update",
306
+ 'update',
307
307
  {
308
308
  collectionSlug,
309
309
  update
@@ -318,7 +318,7 @@ const payloadAdapter = (payloadClient, config)=>{
318
318
  const id = singleIdQuery(payloadWhere);
319
319
  if (id) {
320
320
  debugLog([
321
- "updateByID",
321
+ 'updateByID',
322
322
  {
323
323
  collectionSlug,
324
324
  id
@@ -331,13 +331,13 @@ const payloadAdapter = (payloadClient, config)=>{
331
331
  depth: PAYLOAD_QUERY_DEPTH,
332
332
  context: createAdapterContext({
333
333
  model,
334
- operation: "updateByID"
334
+ operation: 'updateByID'
335
335
  })
336
336
  });
337
337
  result = doc;
338
338
  } else {
339
339
  debugLog([
340
- "updateByWhere",
340
+ 'updateByWhere',
341
341
  {
342
342
  collectionSlug,
343
343
  payloadWhere
@@ -350,7 +350,7 @@ const payloadAdapter = (payloadClient, config)=>{
350
350
  depth: PAYLOAD_QUERY_DEPTH,
351
351
  context: createAdapterContext({
352
352
  model,
353
- operation: "updateByWhere"
353
+ operation: 'updateByWhere'
354
354
  })
355
355
  });
356
356
  result = doc.docs[0];
@@ -360,7 +360,7 @@ const payloadAdapter = (payloadClient, config)=>{
360
360
  model
361
361
  });
362
362
  debugLog([
363
- "update result",
363
+ 'update result',
364
364
  {
365
365
  collectionSlug,
366
366
  transformedResult,
@@ -370,7 +370,7 @@ const payloadAdapter = (payloadClient, config)=>{
370
370
  return transformedResult;
371
371
  } catch (error) {
372
372
  errorLog([
373
- "Error in update: ",
373
+ 'Error in update: ',
374
374
  error
375
375
  ]);
376
376
  return null;
@@ -386,7 +386,7 @@ const payloadAdapter = (payloadClient, config)=>{
386
386
  where
387
387
  });
388
388
  debugLog([
389
- "updateMany",
389
+ 'updateMany',
390
390
  {
391
391
  collectionSlug,
392
392
  payloadWhere,
@@ -405,11 +405,11 @@ const payloadAdapter = (payloadClient, config)=>{
405
405
  depth: PAYLOAD_QUERY_DEPTH,
406
406
  context: createAdapterContext({
407
407
  model,
408
- operation: "updateMany"
408
+ operation: 'updateMany'
409
409
  })
410
410
  });
411
411
  debugLog([
412
- "updateMany result",
412
+ 'updateMany result',
413
413
  {
414
414
  collectionSlug,
415
415
  result: updateResult,
@@ -419,7 +419,7 @@ const payloadAdapter = (payloadClient, config)=>{
419
419
  return updateResult?.length || 0;
420
420
  } catch (error) {
421
421
  errorLog([
422
- "Error in updateMany: ",
422
+ 'Error in updateMany: ',
423
423
  error
424
424
  ]);
425
425
  return 0;
@@ -435,7 +435,7 @@ const payloadAdapter = (payloadClient, config)=>{
435
435
  where
436
436
  });
437
437
  debugLog([
438
- "delete",
438
+ 'delete',
439
439
  {
440
440
  collectionSlug
441
441
  }
@@ -449,7 +449,7 @@ const payloadAdapter = (payloadClient, config)=>{
449
449
  const id = singleIdQuery(payloadWhere);
450
450
  if (id) {
451
451
  debugLog([
452
- "deleteByID",
452
+ 'deleteByID',
453
453
  {
454
454
  collectionSlug,
455
455
  id
@@ -461,7 +461,7 @@ const payloadAdapter = (payloadClient, config)=>{
461
461
  depth: PAYLOAD_QUERY_DEPTH,
462
462
  context: createAdapterContext({
463
463
  model,
464
- operation: "deleteByID"
464
+ operation: 'deleteByID'
465
465
  })
466
466
  });
467
467
  deleteResult = {
@@ -470,7 +470,7 @@ const payloadAdapter = (payloadClient, config)=>{
470
470
  };
471
471
  } else {
472
472
  debugLog([
473
- "deleteByWhere",
473
+ 'deleteByWhere',
474
474
  {
475
475
  collectionSlug,
476
476
  payloadWhere
@@ -482,7 +482,7 @@ const payloadAdapter = (payloadClient, config)=>{
482
482
  depth: PAYLOAD_QUERY_DEPTH,
483
483
  context: createAdapterContext({
484
484
  model,
485
- operation: "deleteByWhere"
485
+ operation: 'deleteByWhere'
486
486
  })
487
487
  });
488
488
  deleteResult = {
@@ -491,7 +491,7 @@ const payloadAdapter = (payloadClient, config)=>{
491
491
  };
492
492
  }
493
493
  debugLog([
494
- "delete result",
494
+ 'delete result',
495
495
  {
496
496
  collectionSlug,
497
497
  result: deleteResult,
@@ -501,7 +501,7 @@ const payloadAdapter = (payloadClient, config)=>{
501
501
  return;
502
502
  } catch (error) {
503
503
  errorLog([
504
- "Error in delete: ",
504
+ 'Error in delete: ',
505
505
  error
506
506
  ]);
507
507
  return;
@@ -517,7 +517,7 @@ const payloadAdapter = (payloadClient, config)=>{
517
517
  where
518
518
  });
519
519
  debugLog([
520
- "deleteMany",
520
+ 'deleteMany',
521
521
  {
522
522
  collectionSlug,
523
523
  payloadWhere
@@ -534,11 +534,11 @@ const payloadAdapter = (payloadClient, config)=>{
534
534
  depth: PAYLOAD_QUERY_DEPTH,
535
535
  context: createAdapterContext({
536
536
  model,
537
- operation: "deleteMany"
537
+ operation: 'deleteMany'
538
538
  })
539
539
  });
540
540
  debugLog([
541
- "deleteMany result",
541
+ 'deleteMany result',
542
542
  {
543
543
  collectionSlug,
544
544
  result: deleteResult,
@@ -548,7 +548,7 @@ const payloadAdapter = (payloadClient, config)=>{
548
548
  return deleteResult.docs.length;
549
549
  } catch (error) {
550
550
  errorLog([
551
- "Error in deleteMany: ",
551
+ 'Error in deleteMany: ',
552
552
  error
553
553
  ]);
554
554
  return 0;
@@ -564,7 +564,7 @@ const payloadAdapter = (payloadClient, config)=>{
564
564
  where
565
565
  });
566
566
  debugLog([
567
- "count",
567
+ 'count',
568
568
  {
569
569
  collectionSlug,
570
570
  payloadWhere
@@ -581,11 +581,11 @@ const payloadAdapter = (payloadClient, config)=>{
581
581
  depth: PAYLOAD_QUERY_DEPTH,
582
582
  context: createAdapterContext({
583
583
  model,
584
- operation: "count"
584
+ operation: 'count'
585
585
  })
586
586
  });
587
587
  debugLog([
588
- "count result",
588
+ 'count result',
589
589
  {
590
590
  collectionSlug,
591
591
  result: {
@@ -597,7 +597,7 @@ const payloadAdapter = (payloadClient, config)=>{
597
597
  return result.totalDocs;
598
598
  } catch (error) {
599
599
  errorLog([
600
- "Error in count: ",
600
+ 'Error in count: ',
601
601
  error
602
602
  ]);
603
603
  return 0;
@@ -607,7 +607,7 @@ const payloadAdapter = (payloadClient, config)=>{
607
607
  const schemaCode = await generateSchema(options);
608
608
  return {
609
609
  code: schemaCode,
610
- path: file || "schema.ts",
610
+ path: file || 'schema.ts',
611
611
  append: false,
612
612
  overwrite: true
613
613
  };
@@ -621,4 +621,4 @@ const payloadAdapter = (payloadClient, config)=>{
621
621
  };
622
622
  export { generateSchema, payloadAdapter };
623
623
 
624
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9hZGFwdGVyL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJldHRlckF1dGhFcnJvciB9IGZyb20gXCJiZXR0ZXItYXV0aFwiO1xuaW1wb3J0IHR5cGUgeyBBZGFwdGVyLCBCZXR0ZXJBdXRoT3B0aW9ucywgV2hlcmUgfSBmcm9tIFwiYmV0dGVyLWF1dGhcIjtcbmltcG9ydCB7IGdlbmVyYXRlU2NoZW1hIH0gZnJvbSBcIi4vZ2VuZXJhdGUtc2NoZW1hXCI7XG5pbXBvcnQgeyBjcmVhdGVUcmFuc2Zvcm0gfSBmcm9tIFwiLi90cmFuc2Zvcm1cIjtcbmltcG9ydCB0eXBlIHsgUGF5bG9hZEFkYXB0ZXIgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG5leHBvcnQgY29uc3QgQkVUVEVSX0FVVEhfQ09OVEVYVF9LRVkgPSBcInBheWxvYWQtZGItYWRhcHRlclwiO1xuY29uc3QgUEFZTE9BRF9RVUVSWV9ERVBUSCA9IDI7XG5cbmNvbnN0IHBheWxvYWRBZGFwdGVyOiBQYXlsb2FkQWRhcHRlciA9IChwYXlsb2FkQ2xpZW50LCBjb25maWcpID0+IHtcbiAgZnVuY3Rpb24gZGVidWdMb2cobWVzc2FnZTogYW55W10pIHtcbiAgICBpZiAoY29uZmlnLmVuYWJsZURlYnVnTG9ncykge1xuICAgICAgY29uc29sZS5sb2coXCJbcGF5bG9hZC1kYi1hZGFwdGVyXVwiLCAuLi5tZXNzYWdlKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBlcnJvckxvZyhtZXNzYWdlOiBhbnlbXSkge1xuICAgIGNvbnNvbGUuZXJyb3IoYFtwYXlsb2FkLWRiLWFkYXB0ZXJdYCwgLi4ubWVzc2FnZSk7XG4gIH1cblxuICBmdW5jdGlvbiBjb2xsZWN0aW9uU2x1Z0Vycm9yKG1vZGVsOiBzdHJpbmcpIHtcbiAgICB0aHJvdyBuZXcgQmV0dGVyQXV0aEVycm9yKFxuICAgICAgYENvbGxlY3Rpb24gJHttb2RlbH0gZG9lcyBub3QgZXhpc3QuIFBsZWFzZSBjaGVjayB5b3VyIHBheWxvYWQgY29sbGVjdGlvbiBzbHVncyBtYXRjaCB0aGUgYmV0dGVyIGF1dGggc2NoZW1hYFxuICAgICk7XG4gIH1cblxuICBjb25zdCBjcmVhdGVBZGFwdGVyQ29udGV4dCA9IChkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiAoe1xuICAgIFtCRVRURVJfQVVUSF9DT05URVhUX0tFWV06IHsgLi4uZGF0YSB9LFxuICB9KTtcblxuICBhc3luYyBmdW5jdGlvbiByZXNvbHZlUGF5bG9hZENsaWVudCgpIHtcbiAgICBjb25zdCBwYXlsb2FkID1cbiAgICAgIHR5cGVvZiBwYXlsb2FkQ2xpZW50ID09PSBcImZ1bmN0aW9uXCJcbiAgICAgICAgPyBhd2FpdCBwYXlsb2FkQ2xpZW50KClcbiAgICAgICAgOiBhd2FpdCBwYXlsb2FkQ2xpZW50O1xuICAgIGlmICghcGF5bG9hZC5jb25maWc/LmN1c3RvbT8uaGFzQmV0dGVyQXV0aFBsdWdpbikge1xuICAgICAgdGhyb3cgbmV3IEJldHRlckF1dGhFcnJvcihcbiAgICAgICAgYFBheWxvYWQgaXMgbm90IGNvbmZpZ3VyZWQgd2l0aCB0aGUgYmV0dGVyLWF1dGggcGx1Z2luLiBQbGVhc2UgYWRkIHRoZSBwbHVnaW4gdG8geW91ciBwYXlsb2FkIGNvbmZpZy5gXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gcGF5bG9hZDtcbiAgfVxuXG4gIHJldHVybiAob3B0aW9uczogQmV0dGVyQXV0aE9wdGlvbnMpOiBBZGFwdGVyID0+IHtcbiAgICBjb25zdCB7XG4gICAgICB0cmFuc2Zvcm1JbnB1dCxcbiAgICAgIHRyYW5zZm9ybU91dHB1dCxcbiAgICAgIGNvbnZlcnRXaGVyZUNsYXVzZSxcbiAgICAgIGNvbnZlcnRTZWxlY3QsXG4gICAgICBjb252ZXJ0U29ydCxcbiAgICAgIGdldE1vZGVsTmFtZSxcbiAgICAgIHNpbmdsZUlkUXVlcnksXG4gICAgICBtdWx0aXBsZUlkc1F1ZXJ5LFxuICAgIH0gPSBjcmVhdGVUcmFuc2Zvcm0ob3B0aW9ucywgY29uZmlnLmVuYWJsZURlYnVnTG9ncyA/PyBmYWxzZSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IFwicGF5bG9hZFwiLFxuICAgICAgYXN5bmMgY3JlYXRlPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBSID0gVD4oZGF0YToge1xuICAgICAgICBtb2RlbDogc3RyaW5nO1xuICAgICAgICBkYXRhOiBUO1xuICAgICAgICBzZWxlY3Q/OiBzdHJpbmdbXTtcbiAgICAgIH0pOiBQcm9taXNlPFI+IHtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgICAgICBjb25zdCB7IG1vZGVsLCBkYXRhOiB2YWx1ZXMsIHNlbGVjdCB9ID0gZGF0YTtcbiAgICAgICAgY29uc3QgY29sbGVjdGlvblNsdWcgPSBnZXRNb2RlbE5hbWUobW9kZWwpO1xuICAgICAgICBjb25zdCB0cmFuc2Zvcm1lZCA9IHRyYW5zZm9ybUlucHV0KHtcbiAgICAgICAgICBkYXRhOiB2YWx1ZXMsXG4gICAgICAgICAgbW9kZWwsXG4gICAgICAgICAgYWN0aW9uOiBcImNyZWF0ZVwiLFxuICAgICAgICAgIGlkVHlwZTogY29uZmlnLmlkVHlwZSxcbiAgICAgICAgfSk7XG4gICAgICAgIGRlYnVnTG9nKFtcImNyZWF0ZVwiLCB7IGNvbGxlY3Rpb25TbHVnLCB0cmFuc2Zvcm1lZCwgc2VsZWN0IH1dKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBwYXlsb2FkID0gYXdhaXQgcmVzb2x2ZVBheWxvYWRDbGllbnQoKTtcbiAgICAgICAgICBpZiAoIWNvbGxlY3Rpb25TbHVnIHx8ICEoY29sbGVjdGlvblNsdWcgaW4gcGF5bG9hZC5jb2xsZWN0aW9ucykpIHtcbiAgICAgICAgICAgIGNvbGxlY3Rpb25TbHVnRXJyb3IobW9kZWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwYXlsb2FkLmNyZWF0ZSh7XG4gICAgICAgICAgICBjb2xsZWN0aW9uOiBjb2xsZWN0aW9uU2x1ZyxcbiAgICAgICAgICAgIGRhdGE6IHRyYW5zZm9ybWVkLFxuICAgICAgICAgICAgc2VsZWN0OiBjb252ZXJ0U2VsZWN0KG1vZGVsLCBzZWxlY3QpLFxuICAgICAgICAgICAgY29udGV4dDogY3JlYXRlQWRhcHRlckNvbnRleHQoeyBtb2RlbCwgb3BlcmF0aW9uOiBcImNyZWF0ZVwiIH0pLFxuICAgICAgICAgICAgZGVwdGg6IFBBWUxPQURfUVVFUllfREVQVEgsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgY29uc3QgdHJhbnNmb3JtZWRSZXN1bHQgPSB0cmFuc2Zvcm1PdXRwdXQoe1xuICAgICAgICAgICAgZG9jOiByZXN1bHQsXG4gICAgICAgICAgICBtb2RlbCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBkZWJ1Z0xvZyhbXG4gICAgICAgICAgICBcImNyZWF0ZSByZXN1bHRcIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY29sbGVjdGlvblNsdWcsXG4gICAgICAgICAgICAgIHRyYW5zZm9ybWVkUmVzdWx0LFxuICAgICAgICAgICAgICBkdXJhdGlvbjogYCR7RGF0ZS5ub3coKSAtIHN0YXJ0fW1zYCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSk7XG4gICAgICAgICAgcmV0dXJuIHRyYW5zZm9ybWVkUmVzdWx0IGFzIFI7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgZXJyb3JMb2coW1wiRXJyb3IgaW4gY3JlYXRpbmc6XCIsIG1vZGVsLCBlcnJvcl0pO1xuICAgICAgICAgIHJldHVybiBudWxsIGFzIFI7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBhc3luYyBmaW5kT25lPFQ+KGRhdGE6IHtcbiAgICAgICAgbW9kZWw6IHN0cmluZztcbiAgICAgICAgd2hlcmU6IFdoZXJlW107XG4gICAgICAgIHNlbGVjdD86IHN0cmluZ1tdO1xuICAgICAgfSk6IFByb21pc2U8VCB8IG51bGw+IHtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgICAgICBjb25zdCB7IG1vZGVsLCB3aGVyZSwgc2VsZWN0IH0gPSBkYXRhO1xuICAgICAgICBjb25zdCBjb2xsZWN0aW9uU2x1ZyA9IGdldE1vZGVsTmFtZShtb2RlbCk7XG4gICAgICAgIGNvbnN0IHBheWxvYWRXaGVyZSA9IGNvbnZlcnRXaGVyZUNsYXVzZSh7XG4gICAgICAgICAgaWRUeXBlOiBjb25maWcuaWRUeXBlLFxuICAgICAgICAgIG1vZGVsLFxuICAgICAgICAgIHdoZXJlLFxuICAgICAgICB9KTtcbiAgICAgICAgZGVidWdMb2coW1wiZmluZE9uZVwiLCB7IGNvbGxlY3Rpb25TbHVnIH1dKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBwYXlsb2FkID0gYXdhaXQgcmVzb2x2ZVBheWxvYWRDbGllbnQoKTtcbiAgICAgICAgICBpZiAoIWNvbGxlY3Rpb25TbHVnIHx8ICEoY29sbGVjdGlvblNsdWcgaW4gcGF5bG9hZC5jb2xsZWN0aW9ucykpIHtcbiAgICAgICAgICAgIGNvbGxlY3Rpb25TbHVnRXJyb3IobW9kZWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBpZCA9IHNpbmdsZUlkUXVlcnkocGF5bG9hZFdoZXJlKTtcbiAgICAgICAgICBsZXQgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgbnVsbCA9IG51bGw7XG4gICAgICAgICAgaWYgKGlkKSB7XG4gICAgICAgICAgICBkZWJ1Z0xvZyhbXCJmaW5kT25lQnlJRFwiLCB7IGNvbGxlY3Rpb25TbHVnLCBpZCB9XSk7XG4gICAgICAgICAgICBjb25zdCBkb2MgPSBhd2FpdCBwYXlsb2FkLmZpbmRCeUlEKHtcbiAgICAgICAgICAgICAgY29sbGVjdGlvbjogY29sbGVjdGlvblNsdWcsXG4gICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgICBzZWxlY3Q6IGNvbnZlcnRTZWxlY3QobW9kZWwsIHNlbGVjdCksXG4gICAgICAgICAgICAgIGNvbnRleHQ6IGNyZWF0ZUFkYXB0ZXJDb250ZXh0KHtcbiAgICAgICAgICAgICAgICBtb2RlbCxcbiAgICAgICAgICAgICAgICBvcGVyYXRpb246IFwiZmluZE9uZUJ5SURcIixcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIGRlcHRoOiBQQVlMT0FEX1FVRVJZX0RFUFRILFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXN1bHQgPSBkb2M7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRlYnVnTG9nKFtcImZpbmRPbmVCeVdoZXJlXCIsIHsgY29sbGVjdGlvblNsdWcsIHBheWxvYWRXaGVyZSB9XSk7XG4gICAgICAgICAgICBjb25zdCBkb2NzID0gYXdhaXQgcGF5bG9hZC5maW5kKHtcbiAgICAgICAgICAgICAgY29sbGVjdGlvbjogY29sbGVjdGlvblNsdWcsXG4gICAgICAgICAgICAgIHdoZXJlOiBwYXlsb2FkV2hlcmUsXG4gICAgICAgICAgICAgIHNlbGVjdDogY29udmVydFNlbGVjdChtb2RlbCwgc2VsZWN0KSxcbiAgICAgICAgICAgICAgY29udGV4dDogY3JlYXRlQWRhcHRlckNvbnRleHQoe1xuICAgICAgICAgICAgICAgIG1vZGVsLFxuICAgICAgICAgICAgICAgIG9wZXJhdGlvbjogXCJmaW5kT25lQnlXaGVyZVwiLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgZGVwdGg6IFBBWUxPQURfUVVFUllfREVQVEgsXG4gICAgICAgICAgICAgIGxpbWl0OiAxLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXN1bHQgPSBkb2NzLmRvY3NbMF07XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHRyYW5zZm9ybWVkUmVzdWx0ID0gdHJhbnNmb3JtT3V0cHV0PHR5cGVvZiByZXN1bHQgfCBudWxsPih7XG4gICAgICAgICAgICBkb2M6IHJlc3VsdCxcbiAgICAgICAgICAgIG1vZGVsLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGRlYnVnTG9nKFtcbiAgICAgICAgICAgIFwiZmluZE9uZSByZXN1bHRcIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY29sbGVjdGlvblNsdWcsXG4gICAgICAgICAgICAgIHRyYW5zZm9ybWVkUmVzdWx0LFxuICAgICAgICAgICAgICBkdXJhdGlvbjogYCR7RGF0ZS5ub3coKSAtIHN0YXJ0fW1zYCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSk7XG4gICAgICAgICAgcmV0dXJuIHRyYW5zZm9ybWVkUmVzdWx0IGFzIFQ7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgZXJyb3JMb2coW1wiRXJyb3IgaW4gZmluZE9uZTogXCIsIGVycm9yXSk7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBhc3luYyBmaW5kTWFueTxUPihkYXRhOiB7XG4gICAgICAgIG1vZGVsOiBzdHJpbmc7XG4gICAgICAgIHdoZXJlPzogV2hlcmVbXTtcbiAgICAgICAgbGltaXQ/OiBudW1iZXI7XG4gICAgICAgIHNvcnRCeT86IHtcbiAgICAgICAgICBmaWVsZDogc3RyaW5nO1xuICAgICAgICAgIGRpcmVjdGlvbjogXCJhc2NcIiB8IFwiZGVzY1wiO1xuICAgICAgICB9O1xuICAgICAgICBvZmZzZXQ/OiBudW1iZXI7XG4gICAgICB9KTogUHJvbWlzZTxUW10+IHtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgICAgICBjb25zdCB7IG1vZGVsLCB3aGVyZSwgc29ydEJ5LCBsaW1pdCwgb2Zmc2V0IH0gPSBkYXRhO1xuICAgICAgICBjb25zdCBjb2xsZWN0aW9uU2x1ZyA9IGdldE1vZGVsTmFtZShtb2RlbCk7XG4gICAgICAgIGNvbnN0IHBheWxvYWRXaGVyZSA9IGNvbnZlcnRXaGVyZUNsYXVzZSh7XG4gICAgICAgICAgaWRUeXBlOiBjb25maWcuaWRUeXBlLFxuICAgICAgICAgIG1vZGVsLFxuICAgICAgICAgIHdoZXJlLFxuICAgICAgICB9KTtcbiAgICAgICAgZGVidWdMb2coW1wiZmluZE1hbnlcIiwgeyBjb2xsZWN0aW9uU2x1Zywgc29ydEJ5LCBsaW1pdCwgb2Zmc2V0IH1dKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBwYXlsb2FkID0gYXdhaXQgcmVzb2x2ZVBheWxvYWRDbGllbnQoKTtcbiAgICAgICAgICBpZiAoIWNvbGxlY3Rpb25TbHVnIHx8ICEoY29sbGVjdGlvblNsdWcgaW4gcGF5bG9hZC5jb2xsZWN0aW9ucykpIHtcbiAgICAgICAgICAgIGNvbGxlY3Rpb25TbHVnRXJyb3IobW9kZWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBsZXQgcmVzdWx0OiB7XG4gICAgICAgICAgICBkb2NzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+W107XG4gICAgICAgICAgICB0b3RhbERvY3M6IG51bWJlcjtcbiAgICAgICAgICB9IHwgbnVsbCA9IG51bGw7XG4gICAgICAgICAgY29uc3QgbXVsdGlwbGVJZHMgPSB3aGVyZSAmJiBtdWx0aXBsZUlkc1F1ZXJ5KHBheWxvYWRXaGVyZSk7XG4gICAgICAgICAgY29uc3Qgc2luZ2xlSWQgPSB3aGVyZSAmJiBzaW5nbGVJZFF1ZXJ5KHBheWxvYWRXaGVyZSk7XG4gICAgICAgICAgaWYgKG11bHRpcGxlSWRzICYmIG11bHRpcGxlSWRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGRlYnVnTG9nKFtcbiAgICAgICAgICAgICAgXCJmaW5kTWFueUJ5TXVsdGlwbGVJRHNcIixcbiAgICAgICAgICAgICAgeyBjb2xsZWN0aW9uU2x1ZywgaWRzOiBtdWx0aXBsZUlkcyB9LFxuICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICBjb25zdCByZXMgPSB7XG4gICAgICAgICAgICAgIGRvY3M6IFtdIGFzIFJlY29yZDxzdHJpbmcsIGFueT5bXSxcbiAgICAgICAgICAgICAgdG90YWxEb2NzOiAwLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgaWQgb2YgbXVsdGlwbGVJZHMpIHtcbiAgICAgICAgICAgICAgY29uc3QgZG9jID0gYXdhaXQgcGF5bG9hZC5maW5kQnlJRCh7XG4gICAgICAgICAgICAgICAgY29sbGVjdGlvbjogY29sbGVjdGlvblNsdWcsXG4gICAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgICAgZGVwdGg6IFBBWUxPQURfUVVFUllfREVQVEgsXG4gICAgICAgICAgICAgICAgY29udGV4dDogY3JlYXRlQWRhcHRlckNvbnRleHQoe1xuICAgICAgICAgICAgICAgICAgbW9kZWwsXG4gICAgICAgICAgICAgICAgICBvcGVyYXRpb246IFwiZmluZE1hbnlCeU11bHRpcGxlSURzXCIsXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICByZXMuZG9jcy5wdXNoKGRvYyk7XG4gICAgICAgICAgICAgIHJlcy50b3RhbERvY3MrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdCA9IHsgZG9jczogcmVzLmRvY3MsIHRvdGFsRG9jczogcmVzLnRvdGFsRG9jcyB9O1xuICAgICAgICAgIH0gZWxzZSBpZiAoc2luZ2xlSWQpIHtcbiAgICAgICAgICAgIGRlYnVnTG9nKFtcImZpbmRNYW55QnlTaW5nbGVJRFwiLCB7IGNvbGxlY3Rpb25TbHVnLCBpZDogc2luZ2xlSWQgfV0pO1xuICAgICAgICAgICAgY29uc3QgZG9jID0gYXdhaXQgcGF5bG9hZC5maW5kQnlJRCh7XG4gICAgICAgICAgICAgIGNvbGxlY3Rpb246IGNvbGxlY3Rpb25TbHVnLFxuICAgICAgICAgICAgICBpZDogc2luZ2xlSWQsXG4gICAgICAgICAgICAgIGRlcHRoOiBQQVlMT0FEX1FVRVJZX0RFUFRILFxuICAgICAgICAgICAgICBjb250ZXh0OiBjcmVhdGVBZGFwdGVyQ29udGV4dCh7XG4gICAgICAgICAgICAgICAgbW9kZWwsXG4gICAgICAgICAgICAgICAgb3BlcmF0aW9uOiBcImZpbmRNYW55QnlTaW5nbGVJRFwiLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmVzdWx0ID0geyBkb2NzOiBkb2MgPyBbZG9jXSA6IFtdLCB0b3RhbERvY3M6IGRvYyA/IDEgOiAwIH07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRlYnVnTG9nKFtcImZpbmRNYW55QnlXaGVyZVwiLCB7IGNvbGxlY3Rpb25TbHVnLCBwYXlsb2FkV2hlcmUgfV0pO1xuICAgICAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgcGF5bG9hZC5maW5kKHtcbiAgICAgICAgICAgICAgY29sbGVjdGlvbjogY29sbGVjdGlvblNsdWcsXG4gICAgICAgICAgICAgIHdoZXJlOiBwYXlsb2FkV2hlcmUsXG4gICAgICAgICAgICAgIGxpbWl0OiBsaW1pdCxcbiAgICAgICAgICAgICAgcGFnZTogb2Zmc2V0ID8gTWF0aC5mbG9vcihvZmZzZXQgLyAobGltaXQgfHwgMTApKSArIDEgOiAxLFxuICAgICAgICAgICAgICBzb3J0OiBjb252ZXJ0U29ydChtb2RlbCwgc29ydEJ5KSxcbiAgICAgICAgICAgICAgZGVwdGg6IFBBWUxPQURfUVVFUllfREVQVEgsXG4gICAgICAgICAgICAgIGNvbnRleHQ6IGNyZWF0ZUFkYXB0ZXJDb250ZXh0KHtcbiAgICAgICAgICAgICAgICBtb2RlbCxcbiAgICAgICAgICAgICAgICBvcGVyYXRpb246IFwiZmluZE1hbnlCeVdoZXJlXCIsXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXN1bHQgPSB7IGRvY3M6IHJlcy5kb2NzLCB0b3RhbERvY3M6IHJlcy50b3RhbERvY3MgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgdHJhbnNmb3JtZWRSZXN1bHQgPVxuICAgICAgICAgICAgcmVzdWx0Py5kb2NzLm1hcCgoZG9jKSA9PlxuICAgICAgICAgICAgICB0cmFuc2Zvcm1PdXRwdXQoe1xuICAgICAgICAgICAgICAgIGRvYyxcbiAgICAgICAgICAgICAgICBtb2RlbCxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICkgPz8gbnVsbDtcbiAgICAgICAgICBkZWJ1Z0xvZyhbXG4gICAgICAgICAgICBcImZpbmRNYW55IHJlc3VsdFwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjb2xsZWN0aW9uU2x1ZyxcbiAgICAgICAgICAgICAgdHJhbnNmb3JtZWRSZXN1bHQsXG4gICAgICAgICAgICAgIGR1cmF0aW9uOiBgJHtEYXRlLm5vdygpIC0gc3RhcnR9bXNgLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdKTtcbiAgICAgICAgICByZXR1cm4gdHJhbnNmb3JtZWRSZXN1bHQgYXMgVFtdO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGVycm9yTG9nKFtcIkVycm9yIGluIGZpbmRNYW55OiBcIiwgZXJyb3JdKTtcbiAgICAgICAgICByZXR1cm4gW10gYXMgVFtdO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgYXN5bmMgdXBkYXRlPFQ+KGRhdGE6IHtcbiAgICAgICAgbW9kZWw6IHN0cmluZztcbiAgICAgICAgd2hlcmU6IFdoZXJlW107XG4gICAgICAgIHVwZGF0ZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgICB9KTogUHJvbWlzZTxUIHwgbnVsbD4ge1xuICAgICAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgICAgIGNvbnN0IHsgbW9kZWwsIHdoZXJlLCB1cGRhdGUgfSA9IGRhdGE7XG4gICAgICAgIGNvbnN0IGNvbGxlY3Rpb25TbHVnID0gZ2V0TW9kZWxOYW1lKG1vZGVsKTtcbiAgICAgICAgY29uc3QgcGF5bG9hZFdoZXJlID0gY29udmVydFdoZXJlQ2xhdXNlKHtcbiAgICAgICAgICBpZFR5cGU6IGNvbmZpZy5pZFR5cGUsXG4gICAgICAgICAgbW9kZWwsXG4gICAgICAgICAgd2hlcmUsXG4gICAgICAgIH0pO1xuICAgICAgICBkZWJ1Z0xvZyhbXCJ1cGRhdGVcIiwgeyBjb2xsZWN0aW9uU2x1ZywgdXBkYXRlIH1dKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBwYXlsb2FkID0gYXdhaXQgcmVzb2x2ZVBheWxvYWRDbGllbnQoKTtcbiAgICAgICAgICBpZiAoIWNvbGxlY3Rpb25TbHVnIHx8ICEoY29sbGVjdGlvblNsdWcgaW4gcGF5bG9hZC5jb2xsZWN0aW9ucykpIHtcbiAgICAgICAgICAgIGNvbGxlY3Rpb25TbHVnRXJyb3IobW9kZWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBsZXQgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgbnVsbCA9IG51bGw7XG4gICAgICAgICAgY29uc3QgaWQgPSBzaW5nbGVJZFF1ZXJ5KHBheWxvYWRXaGVyZSk7XG4gICAgICAgICAgaWYgKGlkKSB7XG4gICAgICAgICAgICBkZWJ1Z0xvZyhbXCJ1cGRhdGVCeUlEXCIsIHsgY29sbGVjdGlvblNsdWcsIGlkIH1dKTtcbiAgICAgICAgICAgIGNvbnN0IGRvYyA9IGF3YWl0IHBheWxvYWQudXBkYXRlKHtcbiAgICAgICAgICAgICAgY29sbGVjdGlvbjogY29sbGVjdGlvblNsdWcsXG4gICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgICBkYXRhOiB1cGRhdGUsXG4gICAgICAgICAgICAgIGRlcHRoOiBQQVlMT0FEX1FVRVJZX0RFUFRILFxuICAgICAgICAgICAgICBjb250ZXh0OiBjcmVhdGVBZGFwdGVyQ29udGV4dCh7IG1vZGVsLCBvcGVyYXRpb246IFwidXBkYXRlQnlJRFwiIH0pLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXN1bHQgPSBkb2M7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRlYnVnTG9nKFtcInVwZGF0ZUJ5V2hlcmVcIiwgeyBjb2xsZWN0aW9uU2x1ZywgcGF5bG9hZFdoZXJlIH1dKTtcbiAgICAgICAgICAgIGNvbnN0IGRvYyA9IGF3YWl0IHBheWxvYWQudXBkYXRlKHtcbiAgICAgICAgICAgICAgY29sbGVjdGlvbjogY29sbGVjdGlvblNsdWcsXG4gICAgICAgICAgICAgIHdoZXJlOiBwYXlsb2FkV2hlcmUsXG4gICAgICAgICAgICAgIGRhdGE6IHVwZGF0ZSxcbiAgICAgICAgICAgICAgZGVwdGg6IFBBWUxPQURfUVVFUllfREVQVEgsXG4gICAgICAgICAgICAgIGNvbnRleHQ6IGNyZWF0ZUFkYXB0ZXJDb250ZXh0KHtcbiAgICAgICAgICAgICAgICBtb2RlbCxcbiAgICAgICAgICAgICAgICBvcGVyYXRpb246IFwidXBkYXRlQnlXaGVyZVwiLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmVzdWx0ID0gZG9jLmRvY3NbMF07XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHRyYW5zZm9ybWVkUmVzdWx0ID0gdHJhbnNmb3JtT3V0cHV0PHR5cGVvZiByZXN1bHQgfCBudWxsPih7XG4gICAgICAgICAgICBkb2M6IHJlc3VsdCxcbiAgICAgICAgICAgIG1vZGVsLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGRlYnVnTG9nKFtcbiAgICAgICAgICAgIFwidXBkYXRlIHJlc3VsdFwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjb2xsZWN0aW9uU2x1ZyxcbiAgICAgICAgICAgICAgdHJhbnNmb3JtZWRSZXN1bHQsXG4gICAgICAgICAgICAgIGR1cmF0aW9uOiBgJHtEYXRlLm5vdygpIC0gc3RhcnR9bXNgLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdKTtcbiAgICAgICAgICByZXR1cm4gdHJhbnNmb3JtZWRSZXN1bHQgYXMgVDtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBlcnJvckxvZyhbXCJFcnJvciBpbiB1cGRhdGU6IFwiLCBlcnJvcl0pO1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgYXN5bmMgdXBkYXRlTWFueShkYXRhOiB7XG4gICAgICAgIG1vZGVsOiBzdHJpbmc7XG4gICAgICAgIHdoZXJlOiBXaGVyZVtdO1xuICAgICAgICB1cGRhdGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgICAgfSk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgY29uc3QgeyBtb2RlbCwgd2hlcmUsIHVwZGF0ZSB9ID0gZGF0YTtcbiAgICAgICAgY29uc3QgY29sbGVjdGlvblNsdWcgPSBnZXRNb2RlbE5hbWUobW9kZWwpO1xuICAgICAgICBjb25zdCBwYXlsb2FkV2hlcmUgPSBjb252ZXJ0V2hlcmVDbGF1c2Uoe1xuICAgICAgICAgIGlkVHlwZTogY29uZmlnLmlkVHlwZSxcbiAgICAgICAgICBtb2RlbCxcbiAgICAgICAgICB3aGVyZSxcbiAgICAgICAgfSk7XG4gICAgICAgIGRlYnVnTG9nKFtcInVwZGF0ZU1hbnlcIiwgeyBjb2xsZWN0aW9uU2x1ZywgcGF5bG9hZFdoZXJlLCB1cGRhdGUgfV0pO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHBheWxvYWQgPSBhd2FpdCByZXNvbHZlUGF5bG9hZENsaWVudCgpO1xuICAgICAgICAgIGlmICghY29sbGVjdGlvblNsdWcgfHwgIShjb2xsZWN0aW9uU2x1ZyBpbiBwYXlsb2FkLmNvbGxlY3Rpb25zKSkge1xuICAgICAgICAgICAgY29sbGVjdGlvblNsdWdFcnJvcihtb2RlbCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHsgZG9jczogdXBkYXRlUmVzdWx0IH0gPSBhd2FpdCBwYXlsb2FkLnVwZGF0ZSh7XG4gICAgICAgICAgICBjb2xsZWN0aW9uOiBjb2xsZWN0aW9uU2x1ZyxcbiAgICAgICAgICAgIHdoZXJlOiBwYXlsb2FkV2hlcmUsXG4gICAgICAgICAgICBkYXRhOiB1cGRhdGUsXG4gICAgICAgICAgICBkZXB0aDogUEFZTE9BRF9RVUVSWV9ERVBUSCxcbiAgICAgICAgICAgIGNvbnRleHQ6IGNyZWF0ZUFkYXB0ZXJDb250ZXh0KHsgbW9kZWwsIG9wZXJhdGlvbjogXCJ1cGRhdGVNYW55XCIgfSksXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgZGVidWdMb2coW1xuICAgICAgICAgICAgXCJ1cGRhdGVNYW55IHJlc3VsdFwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjb2xsZWN0aW9uU2x1ZyxcbiAgICAgICAgICAgICAgcmVzdWx0OiB1cGRhdGVSZXN1bHQsXG4gICAgICAgICAgICAgIGR1cmF0aW9uOiBgJHtEYXRlLm5vdygpIC0gc3RhcnR9bXNgLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdKTtcbiAgICAgICAgICByZXR1cm4gdXBkYXRlUmVzdWx0Py5sZW5ndGggfHwgMDtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBlcnJvckxvZyhbXCJFcnJvciBpbiB1cGRhdGVNYW55OiBcIiwgZXJyb3JdKTtcbiAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGFzeW5jIGRlbGV0ZShkYXRhOiB7IG1vZGVsOiBzdHJpbmc7IHdoZXJlOiBXaGVyZVtdIH0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgICAgICBjb25zdCB7IG1vZGVsLCB3aGVyZSB9ID0gZGF0YTtcbiAgICAgICAgY29uc3QgY29sbGVjdGlvblNsdWcgPSBnZXRNb2RlbE5hbWUobW9kZWwpO1xuICAgICAgICBjb25zdCBwYXlsb2FkV2hlcmUgPSBjb252ZXJ0V2hlcmVDbGF1c2Uoe1xuICAgICAgICAgIGlkVHlwZTogY29uZmlnLmlkVHlwZSxcbiAgICAgICAgICBtb2RlbCxcbiAgICAgICAgICB3aGVyZSxcbiAgICAgICAgfSk7XG4gICAgICAgIGRlYnVnTG9nKFtcImRlbGV0ZVwiLCB7IGNvbGxlY3Rpb25TbHVnIH1dKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBwYXlsb2FkID0gYXdhaXQgcmVzb2x2ZVBheWxvYWRDbGllbnQoKTtcbiAgICAgICAgICBpZiAoIWNvbGxlY3Rpb25TbHVnIHx8ICEoY29sbGVjdGlvblNsdWcgaW4gcGF5bG9hZC5jb2xsZWN0aW9ucykpIHtcbiAgICAgICAgICAgIGNvbGxlY3Rpb25TbHVnRXJyb3IobW9kZWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBsZXQgZGVsZXRlUmVzdWx0OiB7XG4gICAgICAgICAgICBkb2M6IFJlY29yZDxzdHJpbmcsIGFueT4gfCBudWxsO1xuICAgICAgICAgICAgZXJyb3JzOiBhbnlbXTtcbiAgICAgICAgICB9IHwgbnVsbCA9IG51bGw7XG4gICAgICAgICAgY29uc3QgaWQgPSBzaW5nbGVJZFF1ZXJ5KHBheWxvYWRXaGVyZSk7XG4gICAgICAgICAgaWYgKGlkKSB7XG4gICAgICAgICAgICBkZWJ1Z0xvZyhbXCJkZWxldGVCeUlEXCIsIHsgY29sbGVjdGlvblNsdWcsIGlkIH1dKTtcbiAgICAgICAgICAgIGNvbnN0IGRvYyA9IGF3YWl0IHBheWxvYWQuZGVsZXRlKHtcbiAgICAgICAgICAgICAgY29sbGVjdGlvbjogY29sbGVjdGlvblNsdWcsXG4gICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgICBkZXB0aDogUEFZTE9BRF9RVUVSWV9ERVBUSCxcbiAgICAgICAgICAgICAgY29udGV4dDogY3JlYXRlQWRhcHRlckNvbnRleHQoeyBtb2RlbCwgb3BlcmF0aW9uOiBcImRlbGV0ZUJ5SURcIiB9KSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZGVsZXRlUmVzdWx0ID0geyBkb2MsIGVycm9yczogW10gfTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGVidWdMb2coW1wiZGVsZXRlQnlXaGVyZVwiLCB7IGNvbGxlY3Rpb25TbHVnLCBwYXlsb2FkV2hlcmUgfV0pO1xuICAgICAgICAgICAgY29uc3QgZG9jID0gYXdhaXQgcGF5bG9hZC5kZWxldGUoe1xuICAgICAgICAgICAgICBjb2xsZWN0aW9uOiBjb2xsZWN0aW9uU2x1ZyxcbiAgICAgICAgICAgICAgd2hlcmU6IHBheWxvYWRXaGVyZSxcbiAgICAgICAgICAgICAgZGVwdGg6IFBBWUxPQURfUVVFUllfREVQVEgsXG4gICAgICAgICAgICAgIGNvbnRleHQ6IGNyZWF0ZUFkYXB0ZXJDb250ZXh0KHtcbiAgICAgICAgICAgICAgICBtb2RlbCxcbiAgICAgICAgICAgICAgICBvcGVyYXRpb246IFwiZGVsZXRlQnlXaGVyZVwiLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZGVsZXRlUmVzdWx0ID0geyBkb2M6IGRvYy5kb2NzWzBdLCBlcnJvcnM6IFtdIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIGRlYnVnTG9nKFtcbiAgICAgICAgICAgIFwiZGVsZXRlIHJlc3VsdFwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjb2xsZWN0aW9uU2x1ZyxcbiAgICAgICAgICAgICAgcmVzdWx0OiBkZWxldGVSZXN1bHQsXG4gICAgICAgICAgICAgIGR1cmF0aW9uOiBgJHtEYXRlLm5vdygpIC0gc3RhcnR9bXNgLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgZXJyb3JMb2coW1wiRXJyb3IgaW4gZGVsZXRlOiBcIiwgZXJyb3JdKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBhc3luYyBkZWxldGVNYW55KGRhdGE6IHtcbiAgICAgICAgbW9kZWw6IHN0cmluZztcbiAgICAgICAgd2hlcmU6IFdoZXJlW107XG4gICAgICB9KTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgICAgICBjb25zdCB7IG1vZGVsLCB3aGVyZSB9ID0gZGF0YTtcbiAgICAgICAgY29uc3QgY29sbGVjdGlvblNsdWcgPSBnZXRNb2RlbE5hbWUobW9kZWwpO1xuICAgICAgICBjb25zdCBwYXlsb2FkV2hlcmUgPSBjb252ZXJ0V2hlcmVDbGF1c2Uoe1xuICAgICAgICAgIGlkVHlwZTogY29uZmlnLmlkVHlwZSxcbiAgICAgICAgICBtb2RlbCxcbiAgICAgICAgICB3aGVyZSxcbiAgICAgICAgfSk7XG4gICAgICAgIGRlYnVnTG9nKFtcImRlbGV0ZU1hbnlcIiwgeyBjb2xsZWN0aW9uU2x1ZywgcGF5bG9hZFdoZXJlIH1dKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBwYXlsb2FkID0gYXdhaXQgcmVzb2x2ZVBheWxvYWRDbGllbnQoKTtcbiAgICAgICAgICBpZiAoIWNvbGxlY3Rpb25TbHVnIHx8ICEoY29sbGVjdGlvblNsdWcgaW4gcGF5bG9hZC5jb2xsZWN0aW9ucykpIHtcbiAgICAgICAgICAgIGNvbGxlY3Rpb25TbHVnRXJyb3IobW9kZWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBkZWxldGVSZXN1bHQgPSBhd2FpdCBwYXlsb2FkLmRlbGV0ZSh7XG4gICAgICAgICAgICBjb2xsZWN0aW9uOiBjb2xsZWN0aW9uU2x1ZyxcbiAgICAgICAgICAgIHdoZXJlOiBwYXlsb2FkV2hlcmUsXG4gICAgICAgICAgICBkZXB0aDogUEFZTE9BRF9RVUVSWV9ERVBUSCxcbiAgICAgICAgICAgIGNvbnRleHQ6IGNyZWF0ZUFkYXB0ZXJDb250ZXh0KHsgbW9kZWwsIG9wZXJhdGlvbjogXCJkZWxldGVNYW55XCIgfSksXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgZGVidWdMb2coW1xuICAgICAgICAgICAgXCJkZWxldGVNYW55IHJlc3VsdFwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjb2xsZWN0aW9uU2x1ZyxcbiAgICAgICAgICAgICAgcmVzdWx0OiBkZWxldGVSZXN1bHQsXG4gICAgICAgICAgICAgIGR1cmF0aW9uOiBgJHtEYXRlLm5vdygpIC0gc3RhcnR9bXNgLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdKTtcbiAgICAgICAgICByZXR1cm4gZGVsZXRlUmVzdWx0LmRvY3MubGVuZ3RoO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGVycm9yTG9nKFtcIkVycm9yIGluIGRlbGV0ZU1hbnk6IFwiLCBlcnJvcl0pO1xuICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgYXN5bmMgY291bnQoZGF0YTogeyBtb2RlbDogc3RyaW5nOyB3aGVyZT86IFdoZXJlW10gfSk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgY29uc3QgeyBtb2RlbCwgd2hlcmUgfSA9IGRhdGE7XG4gICAgICAgIGNvbnN0IGNvbGxlY3Rpb25TbHVnID0gZ2V0TW9kZWxOYW1lKG1vZGVsKTtcbiAgICAgICAgY29uc3QgcGF5bG9hZFdoZXJlID0gY29udmVydFdoZXJlQ2xhdXNlKHtcbiAgICAgICAgICBpZFR5cGU6IGNvbmZpZy5pZFR5cGUsXG4gICAgICAgICAgbW9kZWwsXG4gICAgICAgICAgd2hlcmUsXG4gICAgICAgIH0pO1xuICAgICAgICBkZWJ1Z0xvZyhbXCJjb3VudFwiLCB7IGNvbGxlY3Rpb25TbHVnLCBwYXlsb2FkV2hlcmUgfV0pO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHBheWxvYWQgPSBhd2FpdCByZXNvbHZlUGF5bG9hZENsaWVudCgpO1xuICAgICAgICAgIGlmICghY29sbGVjdGlvblNsdWcgfHwgIShjb2xsZWN0aW9uU2x1ZyBpbiBwYXlsb2FkLmNvbGxlY3Rpb25zKSkge1xuICAgICAgICAgICAgY29sbGVjdGlvblNsdWdFcnJvcihtb2RlbCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHBheWxvYWQuY291bnQoe1xuICAgICAgICAgICAgY29sbGVjdGlvbjogY29sbGVjdGlvblNsdWcsXG4gICAgICAgICAgICB3aGVyZTogcGF5bG9hZFdoZXJlLFxuICAgICAgICAgICAgZGVwdGg6IFBBWUxPQURfUVVFUllfREVQVEgsXG4gICAgICAgICAgICBjb250ZXh0OiBjcmVhdGVBZGFwdGVyQ29udGV4dCh7IG1vZGVsLCBvcGVyYXRpb246IFwiY291bnRcIiB9KSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBkZWJ1Z0xvZyhbXG4gICAgICAgICAgICBcImNvdW50IHJlc3VsdFwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjb2xsZWN0aW9uU2x1ZyxcbiAgICAgICAgICAgICAgcmVzdWx0OiB7IHRvdGFsRG9jczogcmVzdWx0LnRvdGFsRG9jcyB9LFxuICAgICAgICAgICAgICBkdXJhdGlvbjogYCR7RGF0ZS5ub3coKSAtIHN0YXJ0fW1zYCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSk7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdC50b3RhbERvY3M7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgZXJyb3JMb2coW1wiRXJyb3IgaW4gY291bnQ6IFwiLCBlcnJvcl0pO1xuICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgY3JlYXRlU2NoZW1hOiBhc3luYyAob3B0aW9ucywgZmlsZSkgPT4ge1xuICAgICAgICBjb25zdCBzY2hlbWFDb2RlID0gYXdhaXQgZ2VuZXJhdGVTY2hlbWEob3B0aW9ucyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29kZTogc2NoZW1hQ29kZSxcbiAgICAgICAgICBwYXRoOiBmaWxlIHx8IFwic2NoZW1hLnRzXCIsXG4gICAgICAgICAgYXBwZW5kOiBmYWxzZSxcbiAgICAgICAgICBvdmVyd3JpdGU6IHRydWUsXG4gICAgICAgIH07XG4gICAgICB9LFxuICAgICAgb3B0aW9uczoge1xuICAgICAgICBlbmFibGVEZWJ1Z0xvZ3M6IGNvbmZpZy5lbmFibGVEZWJ1Z0xvZ3MsXG4gICAgICAgIGlkVHlwZTogY29uZmlnLmlkVHlwZSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfTtcbn07XG5cbmV4cG9ydCB7IGdlbmVyYXRlU2NoZW1hLCBwYXlsb2FkQWRhcHRlciB9O1xuIl0sIm5hbWVzIjpbIkJldHRlckF1dGhFcnJvciIsImdlbmVyYXRlU2NoZW1hIiwiY3JlYXRlVHJhbnNmb3JtIiwiQkVUVEVSX0FVVEhfQ09OVEVYVF9LRVkiLCJQQVlMT0FEX1FVRVJZX0RFUFRIIiwicGF5bG9hZEFkYXB0ZXIiLCJwYXlsb2FkQ2xpZW50IiwiY29uZmlnIiwiZGVidWdMb2ciLCJtZXNzYWdlIiwiZW5hYmxlRGVidWdMb2dzIiwiY29uc29sZSIsImxvZyIsImVycm9yTG9nIiwiZXJyb3IiLCJjb2xsZWN0aW9uU2x1Z0Vycm9yIiwibW9kZWwiLCJjcmVhdGVBZGFwdGVyQ29udGV4dCIsImRhdGEiLCJyZXNvbHZlUGF5bG9hZENsaWVudCIsInBheWxvYWQiLCJjdXN0b20iLCJoYXNCZXR0ZXJBdXRoUGx1Z2luIiwib3B0aW9ucyIsInRyYW5zZm9ybUlucHV0IiwidHJhbnNmb3JtT3V0cHV0IiwiY29udmVydFdoZXJlQ2xhdXNlIiwiY29udmVydFNlbGVjdCIsImNvbnZlcnRTb3J0IiwiZ2V0TW9kZWxOYW1lIiwic2luZ2xlSWRRdWVyeSIsIm11bHRpcGxlSWRzUXVlcnkiLCJpZCIsImNyZWF0ZSIsInN0YXJ0IiwiRGF0ZSIsIm5vdyIsInZhbHVlcyIsInNlbGVjdCIsImNvbGxlY3Rpb25TbHVnIiwidHJhbnNmb3JtZWQiLCJhY3Rpb24iLCJpZFR5cGUiLCJjb2xsZWN0aW9ucyIsInJlc3VsdCIsImNvbGxlY3Rpb24iLCJjb250ZXh0Iiwib3BlcmF0aW9uIiwiZGVwdGgiLCJ0cmFuc2Zvcm1lZFJlc3VsdCIsImRvYyIsImR1cmF0aW9uIiwiZmluZE9uZSIsIndoZXJlIiwicGF5bG9hZFdoZXJlIiwiZmluZEJ5SUQiLCJkb2NzIiwiZmluZCIsImxpbWl0IiwiZmluZE1hbnkiLCJzb3J0QnkiLCJvZmZzZXQiLCJtdWx0aXBsZUlkcyIsInNpbmdsZUlkIiwibGVuZ3RoIiwiaWRzIiwicmVzIiwidG90YWxEb2NzIiwicHVzaCIsInBhZ2UiLCJNYXRoIiwiZmxvb3IiLCJzb3J0IiwibWFwIiwidXBkYXRlIiwidXBkYXRlTWFueSIsInVwZGF0ZVJlc3VsdCIsImRlbGV0ZSIsImRlbGV0ZVJlc3VsdCIsImVycm9ycyIsImRlbGV0ZU1hbnkiLCJjb3VudCIsImNyZWF0ZVNjaGVtYSIsImZpbGUiLCJzY2hlbWFDb2RlIiwiY29kZSIsInBhdGgiLCJhcHBlbmQiLCJvdmVyd3JpdGUiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLGVBQWUsUUFBUSxjQUFjO0FBRTlDLFNBQVNDLGNBQWMsUUFBUSxvQkFBb0I7QUFDbkQsU0FBU0MsZUFBZSxRQUFRLGNBQWM7QUFHOUMsT0FBTyxNQUFNQywwQkFBMEIscUJBQXFCO0FBQzVELE1BQU1DLHNCQUFzQjtBQUU1QixNQUFNQyxpQkFBaUMsQ0FBQ0MsZUFBZUM7SUFDckQsU0FBU0MsU0FBU0MsT0FBYztRQUM5QixJQUFJRixPQUFPRyxlQUFlLEVBQUU7WUFDMUJDLFFBQVFDLEdBQUcsQ0FBQywyQkFBMkJIO1FBQ3pDO0lBQ0Y7SUFFQSxTQUFTSSxTQUFTSixPQUFjO1FBQzlCRSxRQUFRRyxLQUFLLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLTDtJQUMzQztJQUVBLFNBQVNNLG9CQUFvQkMsS0FBYTtRQUN4QyxNQUFNLElBQUloQixnQkFDUixDQUFDLFdBQVcsRUFBRWdCLE1BQU0sd0ZBQXdGLENBQUM7SUFFakg7SUFFQSxNQUFNQyx1QkFBdUIsQ0FBQ0MsT0FBK0IsQ0FBQTtZQUMzRCxDQUFDZix3QkFBd0IsRUFBRTtnQkFBRSxHQUFHZSxJQUFJO1lBQUM7UUFDdkMsQ0FBQTtJQUVBLGVBQWVDO1FBQ2IsTUFBTUMsVUFDSixPQUFPZCxrQkFBa0IsYUFDckIsTUFBTUEsa0JBQ04sTUFBTUE7UUFDWixJQUFJLENBQUNjLFFBQVFiLE1BQU0sRUFBRWMsUUFBUUMscUJBQXFCO1lBQ2hELE1BQU0sSUFBSXRCLGdCQUNSLENBQUMsb0dBQW9HLENBQUM7UUFFMUc7UUFDQSxPQUFPb0I7SUFDVDtJQUVBLE9BQU8sQ0FBQ0c7UUFDTixNQUFNLEVBQ0pDLGNBQWMsRUFDZEMsZUFBZSxFQUNmQyxrQkFBa0IsRUFDbEJDLGFBQWEsRUFDYkMsV0FBVyxFQUNYQyxZQUFZLEVBQ1pDLGFBQWEsRUFDYkMsZ0JBQWdCLEVBQ2pCLEdBQUc3QixnQkFBZ0JxQixTQUFTaEIsT0FBT0csZUFBZSxJQUFJO1FBRXZELE9BQU87WUFDTHNCLElBQUk7WUFDSixNQUFNQyxRQUE2Q2YsSUFJbEQ7Z0JBQ0MsTUFBTWdCLFFBQVFDLEtBQUtDLEdBQUc7Z0JBQ3RCLE1BQU0sRUFBRXBCLEtBQUssRUFBRUUsTUFBTW1CLE1BQU0sRUFBRUMsTUFBTSxFQUFFLEdBQUdwQjtnQkFDeEMsTUFBTXFCLGlCQUFpQlYsYUFBYWI7Z0JBQ3BDLE1BQU13QixjQUFjaEIsZUFBZTtvQkFDakNOLE1BQU1tQjtvQkFDTnJCO29CQUNBeUIsUUFBUTtvQkFDUkMsUUFBUW5DLE9BQU9tQyxNQUFNO2dCQUN2QjtnQkFDQWxDLFNBQVM7b0JBQUM7b0JBQVU7d0JBQUUrQjt3QkFBZ0JDO3dCQUFhRjtvQkFBTztpQkFBRTtnQkFDNUQsSUFBSTtvQkFDRixNQUFNbEIsVUFBVSxNQUFNRDtvQkFDdEIsSUFBSSxDQUFDb0Isa0JBQWtCLENBQUVBLENBQUFBLGtCQUFrQm5CLFFBQVF1QixXQUFXLEFBQUQsR0FBSTt3QkFDL0Q1QixvQkFBb0JDO29CQUN0QjtvQkFDQSxNQUFNNEIsU0FBUyxNQUFNeEIsUUFBUWEsTUFBTSxDQUFDO3dCQUNsQ1ksWUFBWU47d0JBQ1pyQixNQUFNc0I7d0JBQ05GLFFBQVFYLGNBQWNYLE9BQU9zQjt3QkFDN0JRLFNBQVM3QixxQkFBcUI7NEJBQUVEOzRCQUFPK0IsV0FBVzt3QkFBUzt3QkFDM0RDLE9BQU81QztvQkFDVDtvQkFDQSxNQUFNNkMsb0JBQW9CeEIsZ0JBQWdCO3dCQUN4Q3lCLEtBQUtOO3dCQUNMNUI7b0JBQ0Y7b0JBQ0FSLFNBQVM7d0JBQ1A7d0JBQ0E7NEJBQ0UrQjs0QkFDQVU7NEJBQ0FFLFVBQVUsR0FBR2hCLEtBQUtDLEdBQUcsS0FBS0YsTUFBTSxFQUFFLENBQUM7d0JBQ3JDO3FCQUNEO29CQUNELE9BQU9lO2dCQUNULEVBQUUsT0FBT25DLE9BQU87b0JBQ2RELFNBQVM7d0JBQUM7d0JBQXNCRzt3QkFBT0Y7cUJBQU07b0JBQzdDLE9BQU87Z0JBQ1Q7WUFDRjtZQUNBLE1BQU1zQyxTQUFXbEMsSUFJaEI7Z0JBQ0MsTUFBTWdCLFFBQVFDLEtBQUtDLEdBQUc7Z0JBQ3RCLE1BQU0sRUFBRXBCLEtBQUssRUFBRXFDLEtBQUssRUFBRWYsTUFBTSxFQUFFLEdBQUdwQjtnQkFDakMsTUFBTXFCLGlCQUFpQlYsYUFBYWI7Z0JBQ3BDLE1BQU1zQyxlQUFlNUIsbUJBQW1CO29CQUN0Q2dCLFFBQVFuQyxPQUFPbUMsTUFBTTtvQkFDckIxQjtvQkFDQXFDO2dCQUNGO2dCQUNBN0MsU0FBUztvQkFBQztvQkFBVzt3QkFBRStCO29CQUFlO2lCQUFFO2dCQUN4QyxJQUFJO29CQUNGLE1BQU1uQixVQUFVLE1BQU1EO29CQUN0QixJQUFJLENBQUNvQixrQkFBa0IsQ0FBRUEsQ0FBQUEsa0JBQWtCbkIsUUFBUXVCLFdBQVcsQUFBRCxHQUFJO3dCQUMvRDVCLG9CQUFvQkM7b0JBQ3RCO29CQUNBLE1BQU1nQixLQUFLRixjQUFjd0I7b0JBQ3pCLElBQUlWLFNBQXFDO29CQUN6QyxJQUFJWixJQUFJO3dCQUNOeEIsU0FBUzs0QkFBQzs0QkFBZTtnQ0FBRStCO2dDQUFnQlA7NEJBQUc7eUJBQUU7d0JBQ2hELE1BQU1rQixNQUFNLE1BQU05QixRQUFRbUMsUUFBUSxDQUFDOzRCQUNqQ1YsWUFBWU47NEJBQ1pQOzRCQUNBTSxRQUFRWCxjQUFjWCxPQUFPc0I7NEJBQzdCUSxTQUFTN0IscUJBQXFCO2dDQUM1QkQ7Z0NBQ0ErQixXQUFXOzRCQUNiOzRCQUNBQyxPQUFPNUM7d0JBQ1Q7d0JBQ0F3QyxTQUFTTTtvQkFDWCxPQUFPO3dCQUNMMUMsU0FBUzs0QkFBQzs0QkFBa0I7Z0NBQUUrQjtnQ0FBZ0JlOzRCQUFhO3lCQUFFO3dCQUM3RCxNQUFNRSxPQUFPLE1BQU1wQyxRQUFRcUMsSUFBSSxDQUFDOzRCQUM5QlosWUFBWU47NEJBQ1pjLE9BQU9DOzRCQUNQaEIsUUFBUVgsY0FBY1gsT0FBT3NCOzRCQUM3QlEsU0FBUzdCLHFCQUFxQjtnQ0FDNUJEO2dDQUNBK0IsV0FBVzs0QkFDYjs0QkFDQUMsT0FBTzVDOzRCQUNQc0QsT0FBTzt3QkFDVDt3QkFDQWQsU0FBU1ksS0FBS0EsSUFBSSxDQUFDLEVBQUU7b0JBQ3ZCO29CQUNBLE1BQU1QLG9CQUFvQnhCLGdCQUFzQzt3QkFDOUR5QixLQUFLTjt3QkFDTDVCO29CQUNGO29CQUNBUixTQUFTO3dCQUNQO3dCQUNBOzRCQUNFK0I7NEJBQ0FVOzRCQUNBRSxVQUFVLEdBQUdoQixLQUFLQyxHQUFHLEtBQUtGLE1BQU0sRUFBRSxDQUFDO3dCQUNyQztxQkFDRDtvQkFDRCxPQUFPZTtnQkFDVCxFQUFFLE9BQU9uQyxPQUFPO29CQUNkRCxTQUFTO3dCQUFDO3dCQUFzQkM7cUJBQU07b0JBQ3RDLE9BQU87Z0JBQ1Q7WUFDRjtZQUNBLE1BQU02QyxVQUFZekMsSUFTakI7Z0JBQ0MsTUFBTWdCLFFBQVFDLEtBQUtDLEdBQUc7Z0JBQ3RCLE1BQU0sRUFBRXBCLEtBQUssRUFBRXFDLEtBQUssRUFBRU8sTUFBTSxFQUFFRixLQUFLLEVBQUVHLE1BQU0sRUFBRSxHQUFHM0M7Z0JBQ2hELE1BQU1xQixpQkFBaUJWLGFBQWFiO2dCQUNwQyxNQUFNc0MsZUFBZTVCLG1CQUFtQjtvQkFDdENnQixRQUFRbkMsT0FBT21DLE1BQU07b0JBQ3JCMUI7b0JBQ0FxQztnQkFDRjtnQkFDQTdDLFNBQVM7b0JBQUM7b0JBQVk7d0JBQUUrQjt3QkFBZ0JxQjt3QkFBUUY7d0JBQU9HO29CQUFPO2lCQUFFO2dCQUNoRSxJQUFJO29CQUNGLE1BQU16QyxVQUFVLE1BQU1EO29CQUN0QixJQUFJLENBQUNvQixrQkFBa0IsQ0FBRUEsQ0FBQUEsa0JBQWtCbkIsUUFBUXVCLFdBQVcsQUFBRCxHQUFJO3dCQUMvRDVCLG9CQUFvQkM7b0JBQ3RCO29CQUNBLElBQUk0QixTQUdPO29CQUNYLE1BQU1rQixjQUFjVCxTQUFTdEIsaUJBQWlCdUI7b0JBQzlDLE1BQU1TLFdBQVdWLFNBQVN2QixjQUFjd0I7b0JBQ3hDLElBQUlRLGVBQWVBLFlBQVlFLE1BQU0sR0FBRyxHQUFHO3dCQUN6Q3hELFNBQVM7NEJBQ1A7NEJBQ0E7Z0NBQUUrQjtnQ0FBZ0IwQixLQUFLSDs0QkFBWTt5QkFDcEM7d0JBQ0QsTUFBTUksTUFBTTs0QkFDVlYsTUFBTSxFQUFFOzRCQUNSVyxXQUFXO3dCQUNiO3dCQUNBLEtBQUssTUFBTW5DLE1BQU04QixZQUFhOzRCQUM1QixNQUFNWixNQUFNLE1BQU05QixRQUFRbUMsUUFBUSxDQUFDO2dDQUNqQ1YsWUFBWU47Z0NBQ1pQO2dDQUNBZ0IsT0FBTzVDO2dDQUNQMEMsU0FBUzdCLHFCQUFxQjtvQ0FDNUJEO29DQUNBK0IsV0FBVztnQ0FDYjs0QkFDRjs0QkFDQW1CLElBQUlWLElBQUksQ0FBQ1ksSUFBSSxDQUFDbEI7NEJBQ2RnQixJQUFJQyxTQUFTO3dCQUNmO3dCQUNBdkIsU0FBUzs0QkFBRVksTUFBTVUsSUFBSVYsSUFBSTs0QkFBRVcsV0FBV0QsSUFBSUMsU0FBUzt3QkFBQztvQkFDdEQsT0FBTyxJQUFJSixVQUFVO3dCQUNuQnZELFNBQVM7NEJBQUM7NEJBQXNCO2dDQUFFK0I7Z0NBQWdCUCxJQUFJK0I7NEJBQVM7eUJBQUU7d0JBQ2pFLE1BQU1iLE1BQU0sTUFBTTlCLFFBQVFtQyxRQUFRLENBQUM7NEJBQ2pDVixZQUFZTjs0QkFDWlAsSUFBSStCOzRCQUNKZixPQUFPNUM7NEJBQ1AwQyxTQUFTN0IscUJBQXFCO2dDQUM1QkQ7Z0NBQ0ErQixXQUFXOzRCQUNiO3dCQUNGO3dCQUNBSCxTQUFTOzRCQUFFWSxNQUFNTixNQUFNO2dDQUFDQTs2QkFBSSxHQUFHLEVBQUU7NEJBQUVpQixXQUFXakIsTUFBTSxJQUFJO3dCQUFFO29CQUM1RCxPQUFPO3dCQUNMMUMsU0FBUzs0QkFBQzs0QkFBbUI7Z0NBQUUrQjtnQ0FBZ0JlOzRCQUFhO3lCQUFFO3dCQUM5RCxNQUFNWSxNQUFNLE1BQU05QyxRQUFRcUMsSUFBSSxDQUFDOzRCQUM3QlosWUFBWU47NEJBQ1pjLE9BQU9DOzRCQUNQSSxPQUFPQTs0QkFDUFcsTUFBTVIsU0FBU1MsS0FBS0MsS0FBSyxDQUFDVixTQUFVSCxDQUFBQSxTQUFTLEVBQUMsS0FBTSxJQUFJOzRCQUN4RGMsTUFBTTVDLFlBQVlaLE9BQU80Qzs0QkFDekJaLE9BQU81Qzs0QkFDUDBDLFNBQVM3QixxQkFBcUI7Z0NBQzVCRDtnQ0FDQStCLFdBQVc7NEJBQ2I7d0JBQ0Y7d0JBQ0FILFNBQVM7NEJBQUVZLE1BQU1VLElBQUlWLElBQUk7NEJBQUVXLFdBQVdELElBQUlDLFNBQVM7d0JBQUM7b0JBQ3REO29CQUNBLE1BQU1sQixvQkFDSkwsUUFBUVksS0FBS2lCLElBQUksQ0FBQ3ZCLE1BQ2hCekIsZ0JBQWdCOzRCQUNkeUI7NEJBQ0FsQzt3QkFDRixPQUNHO29CQUNQUixTQUFTO3dCQUNQO3dCQUNBOzRCQUNFK0I7NEJBQ0FVOzRCQUNBRSxVQUFVLEdBQUdoQixLQUFLQyxHQUFHLEtBQUtGLE1BQU0sRUFBRSxDQUFDO3dCQUNyQztxQkFDRDtvQkFDRCxPQUFPZTtnQkFDVCxFQUFFLE9BQU9uQyxPQUFPO29CQUNkRCxTQUFTO3dCQUFDO3dCQUF1QkM7cUJBQU07b0JBQ3ZDLE9BQU8sRUFBRTtnQkFDWDtZQUNGO1lBQ0EsTUFBTTRELFFBQVV4RCxJQUlmO2dCQUNDLE1BQU1nQixRQUFRQyxLQUFLQyxHQUFHO2dCQUN0QixNQUFNLEVBQUVwQixLQUFLLEVBQUVxQyxLQUFLLEVBQUVxQixNQUFNLEVBQUUsR0FBR3hEO2dCQUNqQyxNQUFNcUIsaUJBQWlCVixhQUFhYjtnQkFDcEMsTUFBTXNDLGVBQWU1QixtQkFBbUI7b0JBQ3RDZ0IsUUFBUW5DLE9BQU9tQyxNQUFNO29CQUNyQjFCO29CQUNBcUM7Z0JBQ0Y7Z0JBQ0E3QyxTQUFTO29CQUFDO29CQUFVO3dCQUFFK0I7d0JBQWdCbUM7b0JBQU87aUJBQUU7Z0JBQy9DLElBQUk7b0JBQ0YsTUFBTXRELFVBQVUsTUFBTUQ7b0JBQ3RCLElBQUksQ0FBQ29CLGtCQUFrQixDQUFFQSxDQUFBQSxrQkFBa0JuQixRQUFRdUIsV0FBVyxBQUFELEdBQUk7d0JBQy9ENUIsb0JBQW9CQztvQkFDdEI7b0JBQ0EsSUFBSTRCLFNBQXFDO29CQUN6QyxNQUFNWixLQUFLRixjQUFjd0I7b0JBQ3pCLElBQUl0QixJQUFJO3dCQUNOeEIsU0FBUzs0QkFBQzs0QkFBYztnQ0FBRStCO2dDQUFnQlA7NEJBQUc7eUJBQUU7d0JBQy9DLE1BQU1rQixNQUFNLE1BQU05QixRQUFRc0QsTUFBTSxDQUFDOzRCQUMvQjdCLFlBQVlOOzRCQUNaUDs0QkFDQWQsTUFBTXdEOzRCQUNOMUIsT0FBTzVDOzRCQUNQMEMsU0FBUzdCLHFCQUFxQjtnQ0FBRUQ7Z0NBQU8rQixXQUFXOzRCQUFhO3dCQUNqRTt3QkFDQUgsU0FBU007b0JBQ1gsT0FBTzt3QkFDTDFDLFNBQVM7NEJBQUM7NEJBQWlCO2dDQUFFK0I7Z0NBQWdCZTs0QkFBYTt5QkFBRTt3QkFDNUQsTUFBTUosTUFBTSxNQUFNOUIsUUFBUXNELE1BQU0sQ0FBQzs0QkFDL0I3QixZQUFZTjs0QkFDWmMsT0FBT0M7NEJBQ1BwQyxNQUFNd0Q7NEJBQ04xQixPQUFPNUM7NEJBQ1AwQyxTQUFTN0IscUJBQXFCO2dDQUM1QkQ7Z0NBQ0ErQixXQUFXOzRCQUNiO3dCQUNGO3dCQUNBSCxTQUFTTSxJQUFJTSxJQUFJLENBQUMsRUFBRTtvQkFDdEI7b0JBQ0EsTUFBTVAsb0JBQW9CeEIsZ0JBQXNDO3dCQUM5RHlCLEtBQUtOO3dCQUNMNUI7b0JBQ0Y7b0JBQ0FSLFNBQVM7d0JBQ1A7d0JBQ0E7NEJBQ0UrQjs0QkFDQVU7NEJBQ0FFLFVBQVUsR0FBR2hCLEtBQUtDLEdBQUcsS0FBS0YsTUFBTSxFQUFFLENBQUM7d0JBQ3JDO3FCQUNEO29CQUNELE9BQU9lO2dCQUNULEVBQUUsT0FBT25DLE9BQU87b0JBQ2RELFNBQVM7d0JBQUM7d0JBQXFCQztxQkFBTTtvQkFDckMsT0FBTztnQkFDVDtZQUNGO1lBQ0EsTUFBTTZELFlBQVd6RCxJQUloQjtnQkFDQyxNQUFNZ0IsUUFBUUMsS0FBS0MsR0FBRztnQkFDdEIsTUFBTSxFQUFFcEIsS0FBSyxFQUFFcUMsS0FBSyxFQUFFcUIsTUFBTSxFQUFFLEdBQUd4RDtnQkFDakMsTUFBTXFCLGlCQUFpQlYsYUFBYWI7Z0JBQ3BDLE1BQU1zQyxlQUFlNUIsbUJBQW1CO29CQUN0Q2dCLFFBQVFuQyxPQUFPbUMsTUFBTTtvQkFDckIxQjtvQkFDQXFDO2dCQUNGO2dCQUNBN0MsU0FBUztvQkFBQztvQkFBYzt3QkFBRStCO3dCQUFnQmU7d0JBQWNvQjtvQkFBTztpQkFBRTtnQkFDakUsSUFBSTtvQkFDRixNQUFNdEQsVUFBVSxNQUFNRDtvQkFDdEIsSUFBSSxDQUFDb0Isa0JBQWtCLENBQUVBLENBQUFBLGtCQUFrQm5CLFFBQVF1QixXQUFXLEFBQUQsR0FBSTt3QkFDL0Q1QixvQkFBb0JDO29CQUN0QjtvQkFDQSxNQUFNLEVBQUV3QyxNQUFNb0IsWUFBWSxFQUFFLEdBQUcsTUFBTXhELFFBQVFzRCxNQUFNLENBQUM7d0JBQ2xEN0IsWUFBWU47d0JBQ1pjLE9BQU9DO3dCQUNQcEMsTUFBTXdEO3dCQUNOMUIsT0FBTzVDO3dCQUNQMEMsU0FBUzdCLHFCQUFxQjs0QkFBRUQ7NEJBQU8rQixXQUFXO3dCQUFhO29CQUNqRTtvQkFDQXZDLFNBQVM7d0JBQ1A7d0JBQ0E7NEJBQ0UrQjs0QkFDQUssUUFBUWdDOzRCQUNSekIsVUFBVSxHQUFHaEIsS0FBS0MsR0FBRyxLQUFLRixNQUFNLEVBQUUsQ0FBQzt3QkFDckM7cUJBQ0Q7b0JBQ0QsT0FBTzBDLGNBQWNaLFVBQVU7Z0JBQ2pDLEVBQUUsT0FBT2xELE9BQU87b0JBQ2RELFNBQVM7d0JBQUM7d0JBQXlCQztxQkFBTTtvQkFDekMsT0FBTztnQkFDVDtZQUNGO1lBQ0EsTUFBTStELFFBQU8zRCxJQUF1QztnQkFDbEQsTUFBTWdCLFFBQVFDLEtBQUtDLEdBQUc7Z0JBQ3RCLE1BQU0sRUFBRXBCLEtBQUssRUFBRXFDLEtBQUssRUFBRSxHQUFHbkM7Z0JBQ3pCLE1BQU1xQixpQkFBaUJWLGFBQWFiO2dCQUNwQyxNQUFNc0MsZUFBZTVCLG1CQUFtQjtvQkFDdENnQixRQUFRbkMsT0FBT21DLE1BQU07b0JBQ3JCMUI7b0JBQ0FxQztnQkFDRjtnQkFDQTdDLFNBQVM7b0JBQUM7b0JBQVU7d0JBQUUrQjtvQkFBZTtpQkFBRTtnQkFDdkMsSUFBSTtvQkFDRixNQUFNbkIsVUFBVSxNQUFNRDtvQkFDdEIsSUFBSSxDQUFDb0Isa0JBQWtCLENBQUVBLENBQUFBLGtCQUFrQm5CLFFBQVF1QixXQUFXLEFBQUQsR0FBSTt3QkFDL0Q1QixvQkFBb0JDO29CQUN0QjtvQkFDQSxJQUFJOEQsZUFHTztvQkFDWCxNQUFNOUMsS0FBS0YsY0FBY3dCO29CQUN6QixJQUFJdEIsSUFBSTt3QkFDTnhCLFNBQVM7NEJBQUM7NEJBQWM7Z0NBQUUrQjtnQ0FBZ0JQOzRCQUFHO3lCQUFFO3dCQUMvQyxNQUFNa0IsTUFBTSxNQUFNOUIsUUFBUXlELE1BQU0sQ0FBQzs0QkFDL0JoQyxZQUFZTjs0QkFDWlA7NEJBQ0FnQixPQUFPNUM7NEJBQ1AwQyxTQUFTN0IscUJBQXFCO2dDQUFFRDtnQ0FBTytCLFdBQVc7NEJBQWE7d0JBQ2pFO3dCQUNBK0IsZUFBZTs0QkFBRTVCOzRCQUFLNkIsUUFBUSxFQUFFO3dCQUFDO29CQUNuQyxPQUFPO3dCQUNMdkUsU0FBUzs0QkFBQzs0QkFBaUI7Z0NBQUUrQjtnQ0FBZ0JlOzRCQUFhO3lCQUFFO3dCQUM1RCxNQUFNSixNQUFNLE1BQU05QixRQUFReUQsTUFBTSxDQUFDOzRCQUMvQmhDLFlBQVlOOzRCQUNaYyxPQUFPQzs0QkFDUE4sT0FBTzVDOzRCQUNQMEMsU0FBUzdCLHFCQUFxQjtnQ0FDNUJEO2dDQUNBK0IsV0FBVzs0QkFDYjt3QkFDRjt3QkFDQStCLGVBQWU7NEJBQUU1QixLQUFLQSxJQUFJTSxJQUFJLENBQUMsRUFBRTs0QkFBRXVCLFFBQVEsRUFBRTt3QkFBQztvQkFDaEQ7b0JBQ0F2RSxTQUFTO3dCQUNQO3dCQUNBOzRCQUNFK0I7NEJBQ0FLLFFBQVFrQzs0QkFDUjNCLFVBQVUsR0FBR2hCLEtBQUtDLEdBQUcsS0FBS0YsTUFBTSxFQUFFLENBQUM7d0JBQ3JDO3FCQUNEO29CQUNEO2dCQUNGLEVBQUUsT0FBT3BCLE9BQU87b0JBQ2RELFNBQVM7d0JBQUM7d0JBQXFCQztxQkFBTTtvQkFDckM7Z0JBQ0Y7WUFDRjtZQUNBLE1BQU1rRSxZQUFXOUQsSUFHaEI7Z0JBQ0MsTUFBTWdCLFFBQVFDLEtBQUtDLEdBQUc7Z0JBQ3RCLE1BQU0sRUFBRXBCLEtBQUssRUFBRXFDLEtBQUssRUFBRSxHQUFHbkM7Z0JBQ3pCLE1BQU1xQixpQkFBaUJWLGFBQWFiO2dCQUNwQyxNQUFNc0MsZUFBZTVCLG1CQUFtQjtvQkFDdENnQixRQUFRbkMsT0FBT21DLE1BQU07b0JBQ3JCMUI7b0JBQ0FxQztnQkFDRjtnQkFDQTdDLFNBQVM7b0JBQUM7b0JBQWM7d0JBQUUrQjt3QkFBZ0JlO29CQUFhO2lCQUFFO2dCQUN6RCxJQUFJO29CQUNGLE1BQU1sQyxVQUFVLE1BQU1EO29CQUN0QixJQUFJLENBQUNvQixrQkFBa0IsQ0FBRUEsQ0FBQUEsa0JBQWtCbkIsUUFBUXVCLFdBQVcsQUFBRCxHQUFJO3dCQUMvRDVCLG9CQUFvQkM7b0JBQ3RCO29CQUNBLE1BQU04RCxlQUFlLE1BQU0xRCxRQUFReUQsTUFBTSxDQUFDO3dCQUN4Q2hDLFlBQVlOO3dCQUNaYyxPQUFPQzt3QkFDUE4sT0FBTzVDO3dCQUNQMEMsU0FBUzdCLHFCQUFxQjs0QkFBRUQ7NEJBQU8rQixXQUFXO3dCQUFhO29CQUNqRTtvQkFDQXZDLFNBQVM7d0JBQ1A7d0JBQ0E7NEJBQ0UrQjs0QkFDQUssUUFBUWtDOzRCQUNSM0IsVUFBVSxHQUFHaEIsS0FBS0MsR0FBRyxLQUFLRixNQUFNLEVBQUUsQ0FBQzt3QkFDckM7cUJBQ0Q7b0JBQ0QsT0FBTzRDLGFBQWF0QixJQUFJLENBQUNRLE1BQU07Z0JBQ2pDLEVBQUUsT0FBT2xELE9BQU87b0JBQ2RELFNBQVM7d0JBQUM7d0JBQXlCQztxQkFBTTtvQkFDekMsT0FBTztnQkFDVDtZQUNGO1lBQ0EsTUFBTW1FLE9BQU0vRCxJQUF3QztnQkFDbEQsTUFBTWdCLFFBQVFDLEtBQUtDLEdBQUc7Z0JBQ3RCLE1BQU0sRUFBRXBCLEtBQUssRUFBRXFDLEtBQUssRUFBRSxHQUFHbkM7Z0JBQ3pCLE1BQU1xQixpQkFBaUJWLGFBQWFiO2dCQUNwQyxNQUFNc0MsZUFBZTVCLG1CQUFtQjtvQkFDdENnQixRQUFRbkMsT0FBT21DLE1BQU07b0JBQ3JCMUI7b0JBQ0FxQztnQkFDRjtnQkFDQTdDLFNBQVM7b0JBQUM7b0JBQVM7d0JBQUUrQjt3QkFBZ0JlO29CQUFhO2lCQUFFO2dCQUNwRCxJQUFJO29CQUNGLE1BQU1sQyxVQUFVLE1BQU1EO29CQUN0QixJQUFJLENBQUNvQixrQkFBa0IsQ0FBRUEsQ0FBQUEsa0JBQWtCbkIsUUFBUXVCLFdBQVcsQUFBRCxHQUFJO3dCQUMvRDVCLG9CQUFvQkM7b0JBQ3RCO29CQUNBLE1BQU00QixTQUFTLE1BQU14QixRQUFRNkQsS0FBSyxDQUFDO3dCQUNqQ3BDLFlBQVlOO3dCQUNaYyxPQUFPQzt3QkFDUE4sT0FBTzVDO3dCQUNQMEMsU0FBUzdCLHFCQUFxQjs0QkFBRUQ7NEJBQU8rQixXQUFXO3dCQUFRO29CQUM1RDtvQkFDQXZDLFNBQVM7d0JBQ1A7d0JBQ0E7NEJBQ0UrQjs0QkFDQUssUUFBUTtnQ0FBRXVCLFdBQVd2QixPQUFPdUIsU0FBUzs0QkFBQzs0QkFDdENoQixVQUFVLEdBQUdoQixLQUFLQyxHQUFHLEtBQUtGLE1BQU0sRUFBRSxDQUFDO3dCQUNyQztxQkFDRDtvQkFDRCxPQUFPVSxPQUFPdUIsU0FBUztnQkFDekIsRUFBRSxPQUFPckQsT0FBTztvQkFDZEQsU0FBUzt3QkFBQzt3QkFBb0JDO3FCQUFNO29CQUNwQyxPQUFPO2dCQUNUO1lBQ0Y7WUFDQW9FLGNBQWMsT0FBTzNELFNBQVM0RDtnQkFDNUIsTUFBTUMsYUFBYSxNQUFNbkYsZUFBZXNCO2dCQUN4QyxPQUFPO29CQUNMOEQsTUFBTUQ7b0JBQ05FLE1BQU1ILFFBQVE7b0JBQ2RJLFFBQVE7b0JBQ1JDLFdBQVc7Z0JBQ2I7WUFDRjtZQUNBakUsU0FBUztnQkFDUGIsaUJBQWlCSCxPQUFPRyxlQUFlO2dCQUN2Q2dDLFFBQVFuQyxPQUFPbUMsTUFBTTtZQUN2QjtRQUNGO0lBQ0Y7QUFDRjtBQUVBLFNBQVN6QyxjQUFjLEVBQUVJLGNBQWMsR0FBRyJ9
624
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9hZGFwdGVyL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJldHRlckF1dGhFcnJvciB9IGZyb20gJ2JldHRlci1hdXRoJ1xuaW1wb3J0IHR5cGUgeyBBZGFwdGVyLCBCZXR0ZXJBdXRoT3B0aW9ucywgV2hlcmUgfSBmcm9tICdiZXR0ZXItYXV0aCdcbmltcG9ydCB7IGdlbmVyYXRlU2NoZW1hIH0gZnJvbSAnLi9nZW5lcmF0ZS1zY2hlbWEnXG5pbXBvcnQgeyBjcmVhdGVUcmFuc2Zvcm0gfSBmcm9tICcuL3RyYW5zZm9ybSdcbmltcG9ydCB0eXBlIHsgUGF5bG9hZEFkYXB0ZXIgfSBmcm9tICcuL3R5cGVzJ1xuXG5leHBvcnQgY29uc3QgQkVUVEVSX0FVVEhfQ09OVEVYVF9LRVkgPSAncGF5bG9hZC1kYi1hZGFwdGVyJ1xuY29uc3QgUEFZTE9BRF9RVUVSWV9ERVBUSCA9IDJcblxuY29uc3QgcGF5bG9hZEFkYXB0ZXI6IFBheWxvYWRBZGFwdGVyID0gKHBheWxvYWRDbGllbnQsIGNvbmZpZykgPT4ge1xuICBmdW5jdGlvbiBkZWJ1Z0xvZyhtZXNzYWdlOiBhbnlbXSkge1xuICAgIGlmIChjb25maWcuZW5hYmxlRGVidWdMb2dzKSB7XG4gICAgICBjb25zb2xlLmxvZygnW3BheWxvYWQtZGItYWRhcHRlcl0nLCAuLi5tZXNzYWdlKVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGVycm9yTG9nKG1lc3NhZ2U6IGFueVtdKSB7XG4gICAgY29uc29sZS5lcnJvcihgW3BheWxvYWQtZGItYWRhcHRlcl1gLCAuLi5tZXNzYWdlKVxuICB9XG5cbiAgZnVuY3Rpb24gY29sbGVjdGlvblNsdWdFcnJvcihtb2RlbDogc3RyaW5nKSB7XG4gICAgdGhyb3cgbmV3IEJldHRlckF1dGhFcnJvcihgQ29sbGVjdGlvbiAke21vZGVsfSBkb2VzIG5vdCBleGlzdC4gUGxlYXNlIGNoZWNrIHlvdXIgcGF5bG9hZCBjb2xsZWN0aW9uIHNsdWdzIG1hdGNoIHRoZSBiZXR0ZXIgYXV0aCBzY2hlbWFgKVxuICB9XG5cbiAgY29uc3QgY3JlYXRlQWRhcHRlckNvbnRleHQgPSAoZGF0YTogUmVjb3JkPHN0cmluZywgYW55PikgPT4gKHtcbiAgICBbQkVUVEVSX0FVVEhfQ09OVEVYVF9LRVldOiB7IC4uLmRhdGEgfVxuICB9KVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHJlc29sdmVQYXlsb2FkQ2xpZW50KCkge1xuICAgIGNvbnN0IHBheWxvYWQgPSB0eXBlb2YgcGF5bG9hZENsaWVudCA9PT0gJ2Z1bmN0aW9uJyA/IGF3YWl0IHBheWxvYWRDbGllbnQoKSA6IGF3YWl0IHBheWxvYWRDbGllbnRcbiAgICBpZiAoIXBheWxvYWQuY29uZmlnPy5jdXN0b20/Lmhhc0JldHRlckF1dGhQbHVnaW4pIHtcbiAgICAgIHRocm93IG5ldyBCZXR0ZXJBdXRoRXJyb3IoYFBheWxvYWQgaXMgbm90IGNvbmZpZ3VyZWQgd2l0aCB0aGUgYmV0dGVyLWF1dGggcGx1Z2luLiBQbGVhc2UgYWRkIHRoZSBwbHVnaW4gdG8geW91ciBwYXlsb2FkIGNvbmZpZy5gKVxuICAgIH1cbiAgICByZXR1cm4gcGF5bG9hZFxuICB9XG5cbiAgcmV0dXJuIChvcHRpb25zOiBCZXR0ZXJBdXRoT3B0aW9ucyk6IEFkYXB0ZXIgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHRyYW5zZm9ybUlucHV0LFxuICAgICAgdHJhbnNmb3JtT3V0cHV0LFxuICAgICAgY29udmVydFdoZXJlQ2xhdXNlLFxuICAgICAgY29udmVydFNlbGVjdCxcbiAgICAgIGNvbnZlcnRTb3J0LFxuICAgICAgZ2V0TW9kZWxOYW1lLFxuICAgICAgc2luZ2xlSWRRdWVyeSxcbiAgICAgIG11bHRpcGxlSWRzUXVlcnlcbiAgICB9ID0gY3JlYXRlVHJhbnNmb3JtKG9wdGlvbnMsIGNvbmZpZy5lbmFibGVEZWJ1Z0xvZ3MgPz8gZmFsc2UpXG5cbiAgICByZXR1cm4ge1xuICAgICAgaWQ6ICdwYXlsb2FkJyxcbiAgICAgIGFzeW5jIGNyZWF0ZTxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiwgUiA9IFQ+KGRhdGE6IHsgbW9kZWw6IHN0cmluZzsgZGF0YTogVDsgc2VsZWN0Pzogc3RyaW5nW10gfSk6IFByb21pc2U8Uj4ge1xuICAgICAgICBjb25zdCBzdGFydCA9IERhdGUubm93KClcbiAgICAgICAgY29uc3QgeyBtb2RlbCwgZGF0YTogdmFsdWVzLCBzZWxlY3QgfSA9IGRhdGFcbiAgICAgICAgY29uc3QgY29sbGVjdGlvblNsdWcgPSBnZXRNb2RlbE5hbWUobW9kZWwpXG4gICAgICAgIGNvbnN0IHRyYW5zZm9ybWVkID0gdHJhbnNmb3JtSW5wdXQoe1xuICAgICAgICAgIGRhdGE6IHZhbHVlcyxcbiAgICAgICAgICBtb2RlbCxcbiAgICAgICAgICBhY3Rpb246ICdjcmVhdGUnLFxuICAgICAgICAgIGlkVHlwZTogY29uZmlnLmlkVHlwZVxuICAgICAgICB9KVxuICAgICAgICBkZWJ1Z0xvZyhbJ2NyZWF0ZScsIHsgY29sbGVjdGlvblNsdWcsIHRyYW5zZm9ybWVkLCBzZWxlY3QgfV0pXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgcGF5bG9hZCA9IGF3YWl0IHJlc29sdmVQYXlsb2FkQ2xpZW50KClcbiAgICAgICAgICBpZiAoIWNvbGxlY3Rpb25TbHVnIHx8ICEoY29sbGVjdGlvblNsdWcgaW4gcGF5bG9hZC5jb2xsZWN0aW9ucykpIHtcbiAgICAgICAgICAgIGNvbGxlY3Rpb25TbHVnRXJyb3IobW9kZWwpXG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHBheWxvYWQuY3JlYXRlKHtcbiAgICAgICAgICAgIGNvbGxlY3Rpb246IGNvbGxlY3Rpb25TbHVnLFxuICAgICAgICAgICAgZGF0YTogdHJhbnNmb3JtZWQsXG4gICAgICAgICAgICBzZWxlY3Q6IGNvbnZlcnRTZWxlY3QobW9kZWwsIHNlbGVjdCksXG4gICAgICAgICAgICBjb250ZXh0OiBjcmVhdGVBZGFwdGVyQ29udGV4dCh7IG1vZGVsLCBvcGVyYXRpb246ICdjcmVhdGUnIH0pLFxuICAgICAgICAgICAgZGVwdGg6IFBBWUxPQURfUVVFUllfREVQVEhcbiAgICAgICAgICB9KVxuICAgICAgICAgIGNvbnN0IHRyYW5zZm9ybWVkUmVzdWx0ID0gdHJhbnNmb3JtT3V0cHV0KHtcbiAgICAgICAgICAgIGRvYzogcmVzdWx0LFxuICAgICAgICAgICAgbW9kZWxcbiAgICAgICAgICB9KVxuICAgICAgICAgIGRlYnVnTG9nKFtcbiAgICAgICAgICAgICdjcmVhdGUgcmVzdWx0JyxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY29sbGVjdGlvblNsdWcsXG4gICAgICAgICAgICAgIHRyYW5zZm9ybWVkUmVzdWx0LFxuICAgICAgICAgICAgICBkdXJhdGlvbjogYCR7RGF0ZS5ub3coKSAtIHN0YXJ0fW1zYFxuICAgICAgICAgICAgfVxuICAgICAgICAgIF0pXG4gICAgICAgICAgcmV0dXJuIHRyYW5zZm9ybWVkUmVzdWx0IGFzIFJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBlcnJvckxvZyhbJ0Vycm9yIGluIGNyZWF0aW5nOicsIG1vZGVsLCBlcnJvcl0pXG4gICAgICAgICAgcmV0dXJuIG51bGwgYXMgUlxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgYXN5bmMgZmluZE9uZTxUPihkYXRhOiB7IG1vZGVsOiBzdHJpbmc7IHdoZXJlOiBXaGVyZVtdOyBzZWxlY3Q/OiBzdHJpbmdbXSB9KTogUHJvbWlzZTxUIHwgbnVsbD4ge1xuICAgICAgICBjb25zdCBzdGFydCA9IERhdGUubm93KClcbiAgICAgICAgY29uc3QgeyBtb2RlbCwgd2hlcmUsIHNlbGVjdCB9ID0gZGF0YVxuICAgICAgICBjb25zdCBjb2xsZWN0aW9uU2x1ZyA9IGdldE1vZGVsTmFtZShtb2RlbClcbiAgICAgICAgY29uc3QgcGF5bG9hZFdoZXJlID0gY29udmVydFdoZXJlQ2xhdXNlKHtcbiAgICAgICAgICBpZFR5cGU6IGNvbmZpZy5pZFR5cGUsXG4gICAgICAgICAgbW9kZWwsXG4gICAgICAgICAgd2hlcmVcbiAgICAgICAgfSlcbiAgICAgICAgZGVidWdMb2coWydmaW5kT25lJywgeyBjb2xsZWN0aW9uU2x1ZyB9XSlcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBwYXlsb2FkID0gYXdhaXQgcmVzb2x2ZVBheWxvYWRDbGllbnQoKVxuICAgICAgICAgIGlmICghY29sbGVjdGlvblNsdWcgfHwgIShjb2xsZWN0aW9uU2x1ZyBpbiBwYXlsb2FkLmNvbGxlY3Rpb25zKSkge1xuICAgICAgICAgICAgY29sbGVjdGlvblNsdWdFcnJvcihtb2RlbClcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgaWQgPSBzaW5nbGVJZFF1ZXJ5KHBheWxvYWRXaGVyZSlcbiAgICAgICAgICBsZXQgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgbnVsbCA9IG51bGxcbiAgICAgICAgICBpZiAoaWQpIHtcbiAgICAgICAgICAgIGRlYnVnTG9nKFsnZmluZE9uZUJ5SUQnLCB7IGNvbGxlY3Rpb25TbHVnLCBpZCB9XSlcbiAgICAgICAgICAgIGNvbnN0IGRvYyA9IGF3YWl0IHBheWxvYWQuZmluZEJ5SUQoe1xuICAgICAgICAgICAgICBjb2xsZWN0aW9uOiBjb2xsZWN0aW9uU2x1ZyxcbiAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgIHNlbGVjdDogY29udmVydFNlbGVjdChtb2RlbCwgc2VsZWN0KSxcbiAgICAgICAgICAgICAgY29udGV4dDogY3JlYXRlQWRhcHRlckNvbnRleHQoe1xuICAgICAgICAgICAgICAgIG1vZGVsLFxuICAgICAgICAgICAgICAgIG9wZXJhdGlvbjogJ2ZpbmRPbmVCeUlEJ1xuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgZGVwdGg6IFBBWUxPQURfUVVFUllfREVQVEhcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICByZXN1bHQgPSBkb2NcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGVidWdMb2coWydmaW5kT25lQnlXaGVyZScsIHsgY29sbGVjdGlvblNsdWcsIHBheWxvYWRXaGVyZSB9XSlcbiAgICAgICAgICAgIGNvbnN0IGRvY3MgPSBhd2FpdCBwYXlsb2FkLmZpbmQoe1xuICAgICAgICAgICAgICBjb2xsZWN0aW9uOiBjb2xsZWN0aW9uU2x1ZyxcbiAgICAgICAgICAgICAgd2hlcmU6IHBheWxvYWRXaGVyZSxcbiAgICAgICAgICAgICAgc2VsZWN0OiBjb252ZXJ0U2VsZWN0KG1vZGVsLCBzZWxlY3QpLFxuICAgICAgICAgICAgICBjb250ZXh0OiBjcmVhdGVBZGFwdGVyQ29udGV4dCh7XG4gICAgICAgICAgICAgICAgbW9kZWwsXG4gICAgICAgICAgICAgICAgb3BlcmF0aW9uOiAnZmluZE9uZUJ5V2hlcmUnXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICBkZXB0aDogUEFZTE9BRF9RVUVSWV9ERVBUSCxcbiAgICAgICAgICAgICAgbGltaXQ6IDFcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICByZXN1bHQgPSBkb2NzLmRvY3NbMF1cbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgdHJhbnNmb3JtZWRSZXN1bHQgPSB0cmFuc2Zvcm1PdXRwdXQ8dHlwZW9mIHJlc3VsdCB8IG51bGw+KHtcbiAgICAgICAgICAgIGRvYzogcmVzdWx0LFxuICAgICAgICAgICAgbW9kZWxcbiAgICAgICAgICB9KVxuICAgICAgICAgIGRlYnVnTG9nKFtcbiAgICAgICAgICAgICdmaW5kT25lIHJlc3VsdCcsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNvbGxlY3Rpb25TbHVnLFxuICAgICAgICAgICAgICB0cmFuc2Zvcm1lZFJlc3VsdCxcbiAgICAgICAgICAgICAgZHVyYXRpb246IGAke0RhdGUubm93KCkgLSBzdGFydH1tc2BcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdKVxuICAgICAgICAgIHJldHVybiB0cmFuc2Zvcm1lZFJlc3VsdCBhcyBUXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgZXJyb3JMb2coWydFcnJvciBpbiBmaW5kT25lOiAnLCBlcnJvcl0pXG4gICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGFzeW5jIGZpbmRNYW55PFQ+KGRhdGE6IHtcbiAgICAgICAgbW9kZWw6IHN0cmluZ1xuICAgICAgICB3aGVyZT86IFdoZXJlW11cbiAgICAgICAgbGltaXQ/OiBudW1iZXJcbiAgICAgICAgc29ydEJ5Pzoge1xuICAgICAgICAgIGZpZWxkOiBzdHJpbmdcbiAgICAgICAgICBkaXJlY3Rpb246ICdhc2MnIHwgJ2Rlc2MnXG4gICAgICAgIH1cbiAgICAgICAgb2Zmc2V0PzogbnVtYmVyXG4gICAgICB9KTogUHJvbWlzZTxUW10+IHtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpXG4gICAgICAgIGNvbnN0IHsgbW9kZWwsIHdoZXJlLCBzb3J0QnksIGxpbWl0LCBvZmZzZXQgfSA9IGRhdGFcbiAgICAgICAgY29uc3QgY29sbGVjdGlvblNsdWcgPSBnZXRNb2RlbE5hbWUobW9kZWwpXG4gICAgICAgIGNvbnN0IHBheWxvYWRXaGVyZSA9IGNvbnZlcnRXaGVyZUNsYXVzZSh7XG4gICAgICAgICAgaWRUeXBlOiBjb25maWcuaWRUeXBlLFxuICAgICAgICAgIG1vZGVsLFxuICAgICAgICAgIHdoZXJlXG4gICAgICAgIH0pXG4gICAgICAgIGRlYnVnTG9nKFsnZmluZE1hbnknLCB7IGNvbGxlY3Rpb25TbHVnLCBzb3J0QnksIGxpbWl0LCBvZmZzZXQgfV0pXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgcGF5bG9hZCA9IGF3YWl0IHJlc29sdmVQYXlsb2FkQ2xpZW50KClcbiAgICAgICAgICBpZiAoIWNvbGxlY3Rpb25TbHVnIHx8ICEoY29sbGVjdGlvblNsdWcgaW4gcGF5bG9hZC5jb2xsZWN0aW9ucykpIHtcbiAgICAgICAgICAgIGNvbGxlY3Rpb25TbHVnRXJyb3IobW9kZWwpXG4gICAgICAgICAgfVxuICAgICAgICAgIGxldCByZXN1bHQ6IHtcbiAgICAgICAgICAgIGRvY3M6IFJlY29yZDxzdHJpbmcsIGFueT5bXVxuICAgICAgICAgICAgdG90YWxEb2NzOiBudW1iZXJcbiAgICAgICAgICB9IHwgbnVsbCA9IG51bGxcbiAgICAgICAgICBjb25zdCBtdWx0aXBsZUlkcyA9IHdoZXJlICYmIG11bHRpcGxlSWRzUXVlcnkocGF5bG9hZFdoZXJlKVxuICAgICAgICAgIGNvbnN0IHNpbmdsZUlkID0gd2hlcmUgJiYgc2luZ2xlSWRRdWVyeShwYXlsb2FkV2hlcmUpXG4gICAgICAgICAgaWYgKG11bHRpcGxlSWRzICYmIG11bHRpcGxlSWRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGRlYnVnTG9nKFsnZmluZE1hbnlCeU11bHRpcGxlSURzJywgeyBjb2xsZWN0aW9uU2x1ZywgaWRzOiBtdWx0aXBsZUlkcyB9XSlcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IHtcbiAgICAgICAgICAgICAgZG9jczogW10gYXMgUmVjb3JkPHN0cmluZywgYW55PltdLFxuICAgICAgICAgICAgICB0b3RhbERvY3M6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAoY29uc3QgaWQgb2YgbXVsdGlwbGVJZHMpIHtcbiAgICAgICAgICAgICAgY29uc3QgZG9jID0gYXdhaXQgcGF5bG9hZC5maW5kQnlJRCh7XG4gICAgICAgICAgICAgICAgY29sbGVjdGlvbjogY29sbGVjdGlvblNsdWcsXG4gICAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgICAgZGVwdGg6IFBBWUxPQURfUVVFUllfREVQVEgsXG4gICAgICAgICAgICAgICAgY29udGV4dDogY3JlYXRlQWRhcHRlckNvbnRleHQoe1xuICAgICAgICAgICAgICAgICAgbW9kZWwsXG4gICAgICAgICAgICAgICAgICBvcGVyYXRpb246ICdmaW5kTWFueUJ5TXVsdGlwbGVJRHMnXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgcmVzLmRvY3MucHVzaChkb2MpXG4gICAgICAgICAgICAgIHJlcy50b3RhbERvY3MrK1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0ID0geyBkb2NzOiByZXMuZG9jcywgdG90YWxEb2NzOiByZXMudG90YWxEb2NzIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKHNpbmdsZUlkKSB7XG4gICAgICAgICAgICBkZWJ1Z0xvZyhbJ2ZpbmRNYW55QnlTaW5nbGVJRCcsIHsgY29sbGVjdGlvblNsdWcsIGlkOiBzaW5nbGVJZCB9XSlcbiAgICAgICAgICAgIGNvbnN0IGRvYyA9IGF3YWl0IHBheWxvYWQuZmluZEJ5SUQoe1xuICAgICAgICAgICAgICBjb2xsZWN0aW9uOiBjb2xsZWN0aW9uU2x1ZyxcbiAgICAgICAgICAgICAgaWQ6IHNpbmdsZUlkLFxuICAgICAgICAgICAgICBkZXB0aDogUEFZTE9BRF9RVUVSWV9ERVBUSCxcbiAgICAgICAgICAgICAgY29udGV4dDogY3JlYXRlQWRhcHRlckNvbnRleHQoe1xuICAgICAgICAgICAgICAgIG1vZGVsLFxuICAgICAgICAgICAgICAgIG9wZXJhdGlvbjogJ2ZpbmRNYW55QnlTaW5nbGVJRCdcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICByZXN1bHQgPSB7IGRvY3M6IGRvYyA/IFtkb2NdIDogW10sIHRvdGFsRG9jczogZG9jID8gMSA6IDAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkZWJ1Z0xvZyhbJ2ZpbmRNYW55QnlXaGVyZScsIHsgY29sbGVjdGlvblNsdWcsIHBheWxvYWRXaGVyZSB9XSlcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHBheWxvYWQuZmluZCh7XG4gICAgICAgICAgICAgIGNvbGxlY3Rpb246IGNvbGxlY3Rpb25TbHVnLFxuICAgICAgICAgICAgICB3aGVyZTogcGF5bG9hZFdoZXJlLFxuICAgICAgICAgICAgICBsaW1pdDogbGltaXQsXG4gICAgICAgICAgICAgIHBhZ2U6IG9mZnNldCA/IE1hdGguZmxvb3Iob2Zmc2V0IC8gKGxpbWl0IHx8IDEwKSkgKyAxIDogMSxcbiAgICAgICAgICAgICAgc29ydDogY29udmVydFNvcnQobW9kZWwsIHNvcnRCeSksXG4gICAgICAgICAgICAgIGRlcHRoOiBQQVlMT0FEX1FVRVJZX0RFUFRILFxuICAgICAgICAgICAgICBjb250ZXh0OiBjcmVhdGVBZGFwdGVyQ29udGV4dCh7XG4gICAgICAgICAgICAgICAgbW9kZWwsXG4gICAgICAgICAgICAgICAgb3BlcmF0aW9uOiAnZmluZE1hbnlCeVdoZXJlJ1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIHJlc3VsdCA9IHsgZG9jczogcmVzLmRvY3MsIHRvdGFsRG9jczogcmVzLnRvdGFsRG9jcyB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHRyYW5zZm9ybWVkUmVzdWx0ID1cbiAgICAgICAgICAgIHJlc3VsdD8uZG9jcy5tYXAoKGRvYykgPT5cbiAgICAgICAgICAgICAgdHJhbnNmb3JtT3V0cHV0KHtcbiAgICAgICAgICAgICAgICBkb2MsXG4gICAgICAgICAgICAgICAgbW9kZWxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICkgPz8gbnVsbFxuICAgICAgICAgIGRlYnVnTG9nKFtcbiAgICAgICAgICAgICdmaW5kTWFueSByZXN1bHQnLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjb2xsZWN0aW9uU2x1ZyxcbiAgICAgICAgICAgICAgdHJhbnNmb3JtZWRSZXN1bHQsXG4gICAgICAgICAgICAgIGR1cmF0aW9uOiBgJHtEYXRlLm5vdygpIC0gc3RhcnR9bXNgXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXSlcbiAgICAgICAgICByZXR1cm4gdHJhbnNmb3JtZWRSZXN1bHQgYXMgVFtdXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgZXJyb3JMb2coWydFcnJvciBpbiBmaW5kTWFueTogJywgZXJyb3JdKVxuICAgICAgICAgIHJldHVybiBbXSBhcyBUW11cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGFzeW5jIHVwZGF0ZTxUPihkYXRhOiB7IG1vZGVsOiBzdHJpbmc7IHdoZXJlOiBXaGVyZVtdOyB1cGRhdGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IH0pOiBQcm9taXNlPFQgfCBudWxsPiB7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKVxuICAgICAgICBjb25zdCB7IG1vZGVsLCB3aGVyZSwgdXBkYXRlIH0gPSBkYXRhXG4gICAgICAgIGNvbnN0IGNvbGxlY3Rpb25TbHVnID0gZ2V0TW9kZWxOYW1lKG1vZGVsKVxuICAgICAgICBjb25zdCBwYXlsb2FkV2hlcmUgPSBjb252ZXJ0V2hlcmVDbGF1c2Uoe1xuICAgICAgICAgIGlkVHlwZTogY29uZmlnLmlkVHlwZSxcbiAgICAgICAgICBtb2RlbCxcbiAgICAgICAgICB3aGVyZVxuICAgICAgICB9KVxuICAgICAgICBkZWJ1Z0xvZyhbJ3VwZGF0ZScsIHsgY29sbGVjdGlvblNsdWcsIHVwZGF0ZSB9XSlcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBwYXlsb2FkID0gYXdhaXQgcmVzb2x2ZVBheWxvYWRDbGllbnQoKVxuICAgICAgICAgIGlmICghY29sbGVjdGlvblNsdWcgfHwgIShjb2xsZWN0aW9uU2x1ZyBpbiBwYXlsb2FkLmNvbGxlY3Rpb25zKSkge1xuICAgICAgICAgICAgY29sbGVjdGlvblNsdWdFcnJvcihtb2RlbClcbiAgICAgICAgICB9XG4gICAgICAgICAgbGV0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgYW55PiB8IG51bGwgPSBudWxsXG4gICAgICAgICAgY29uc3QgaWQgPSBzaW5nbGVJZFF1ZXJ5KHBheWxvYWRXaGVyZSlcbiAgICAgICAgICBpZiAoaWQpIHtcbiAgICAgICAgICAgIGRlYnVnTG9nKFsndXBkYXRlQnlJRCcsIHsgY29sbGVjdGlvblNsdWcsIGlkIH1dKVxuICAgICAgICAgICAgY29uc3QgZG9jID0gYXdhaXQgcGF5bG9hZC51cGRhdGUoe1xuICAgICAgICAgICAgICBjb2xsZWN0aW9uOiBjb2xsZWN0aW9uU2x1ZyxcbiAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgIGRhdGE6IHVwZGF0ZSxcbiAgICAgICAgICAgICAgZGVwdGg6IFBBWUxPQURfUVVFUllfREVQVEgsXG4gICAgICAgICAgICAgIGNvbnRleHQ6IGNyZWF0ZUFkYXB0ZXJDb250ZXh0KHsgbW9kZWwsIG9wZXJhdGlvbjogJ3VwZGF0ZUJ5SUQnIH0pXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgcmVzdWx0ID0gZG9jXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRlYnVnTG9nKFsndXBkYXRlQnlXaGVyZScsIHsgY29sbGVjdGlvblNsdWcsIHBheWxvYWRXaGVyZSB9XSlcbiAgICAgICAgICAgIGNvbnN0IGRvYyA9IGF3YWl0IHBheWxvYWQudXBkYXRlKHtcbiAgICAgICAgICAgICAgY29sbGVjdGlvbjogY29sbGVjdGlvblNsdWcsXG4gICAgICAgICAgICAgIHdoZXJlOiBwYXlsb2FkV2hlcmUsXG4gICAgICAgICAgICAgIGRhdGE6IHVwZGF0ZSxcbiAgICAgICAgICAgICAgZGVwdGg6IFBBWUxPQURfUVVFUllfREVQVEgsXG4gICAgICAgICAgICAgIGNvbnRleHQ6IGNyZWF0ZUFkYXB0ZXJDb250ZXh0KHtcbiAgICAgICAgICAgICAgICBtb2RlbCxcbiAgICAgICAgICAgICAgICBvcGVyYXRpb246ICd1cGRhdGVCeVdoZXJlJ1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIHJlc3VsdCA9IGRvYy5kb2NzWzBdXG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHRyYW5zZm9ybWVkUmVzdWx0ID0gdHJhbnNmb3JtT3V0cHV0PHR5cGVvZiByZXN1bHQgfCBudWxsPih7XG4gICAgICAgICAgICBkb2M6IHJlc3VsdCxcbiAgICAgICAgICAgIG1vZGVsXG4gICAgICAgICAgfSlcbiAgICAgICAgICBkZWJ1Z0xvZyhbXG4gICAgICAgICAgICAndXBkYXRlIHJlc3VsdCcsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNvbGxlY3Rpb25TbHVnLFxuICAgICAgICAgICAgICB0cmFuc2Zvcm1lZFJlc3VsdCxcbiAgICAgICAgICAgICAgZHVyYXRpb246IGAke0RhdGUubm93KCkgLSBzdGFydH1tc2BcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdKVxuICAgICAgICAgIHJldHVybiB0cmFuc2Zvcm1lZFJlc3VsdCBhcyBUXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgZXJyb3JMb2coWydFcnJvciBpbiB1cGRhdGU6ICcsIGVycm9yXSlcbiAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgYXN5bmMgdXBkYXRlTWFueShkYXRhOiB7IG1vZGVsOiBzdHJpbmc7IHdoZXJlOiBXaGVyZVtdOyB1cGRhdGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IH0pOiBQcm9taXNlPG51bWJlcj4ge1xuICAgICAgICBjb25zdCBzdGFydCA9IERhdGUubm93KClcbiAgICAgICAgY29uc3QgeyBtb2RlbCwgd2hlcmUsIHVwZGF0ZSB9ID0gZGF0YVxuICAgICAgICBjb25zdCBjb2xsZWN0aW9uU2x1ZyA9IGdldE1vZGVsTmFtZShtb2RlbClcbiAgICAgICAgY29uc3QgcGF5bG9hZFdoZXJlID0gY29udmVydFdoZXJlQ2xhdXNlKHtcbiAgICAgICAgICBpZFR5cGU6IGNvbmZpZy5pZFR5cGUsXG4gICAgICAgICAgbW9kZWwsXG4gICAgICAgICAgd2hlcmVcbiAgICAgICAgfSlcbiAgICAgICAgZGVidWdMb2coWyd1cGRhdGVNYW55JywgeyBjb2xsZWN0aW9uU2x1ZywgcGF5bG9hZFdoZXJlLCB1cGRhdGUgfV0pXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgcGF5bG9hZCA9IGF3YWl0IHJlc29sdmVQYXlsb2FkQ2xpZW50KClcbiAgICAgICAgICBpZiAoIWNvbGxlY3Rpb25TbHVnIHx8ICEoY29sbGVjdGlvblNsdWcgaW4gcGF5bG9hZC5jb2xsZWN0aW9ucykpIHtcbiAgICAgICAgICAgIGNvbGxlY3Rpb25TbHVnRXJyb3IobW9kZWwpXG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHsgZG9jczogdXBkYXRlUmVzdWx0IH0gPSBhd2FpdCBwYXlsb2FkLnVwZGF0ZSh7XG4gICAgICAgICAgICBjb2xsZWN0aW9uOiBjb2xsZWN0aW9uU2x1ZyxcbiAgICAgICAgICAgIHdoZXJlOiBwYXlsb2FkV2hlcmUsXG4gICAgICAgICAgICBkYXRhOiB1cGRhdGUsXG4gICAgICAgICAgICBkZXB0aDogUEFZTE9BRF9RVUVSWV9ERVBUSCxcbiAgICAgICAgICAgIGNvbnRleHQ6IGNyZWF0ZUFkYXB0ZXJDb250ZXh0KHsgbW9kZWwsIG9wZXJhdGlvbjogJ3VwZGF0ZU1hbnknIH0pXG4gICAgICAgICAgfSlcbiAgICAgICAgICBkZWJ1Z0xvZyhbXG4gICAgICAgICAgICAndXBkYXRlTWFueSByZXN1bHQnLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjb2xsZWN0aW9uU2x1ZyxcbiAgICAgICAgICAgICAgcmVzdWx0OiB1cGRhdGVSZXN1bHQsXG4gICAgICAgICAgICAgIGR1cmF0aW9uOiBgJHtEYXRlLm5vdygpIC0gc3RhcnR9bXNgXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXSlcbiAgICAgICAgICByZXR1cm4gdXBkYXRlUmVzdWx0Py5sZW5ndGggfHwgMFxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGVycm9yTG9nKFsnRXJyb3IgaW4gdXBkYXRlTWFueTogJywgZXJyb3JdKVxuICAgICAgICAgIHJldHVybiAwXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBhc3luYyBkZWxldGUoZGF0YTogeyBtb2RlbDogc3RyaW5nOyB3aGVyZTogV2hlcmVbXSB9KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKVxuICAgICAgICBjb25zdCB7IG1vZGVsLCB3aGVyZSB9ID0gZGF0YVxuICAgICAgICBjb25zdCBjb2xsZWN0aW9uU2x1ZyA9IGdldE1vZGVsTmFtZShtb2RlbClcbiAgICAgICAgY29uc3QgcGF5bG9hZFdoZXJlID0gY29udmVydFdoZXJlQ2xhdXNlKHtcbiAgICAgICAgICBpZFR5cGU6IGNvbmZpZy5pZFR5cGUsXG4gICAgICAgICAgbW9kZWwsXG4gICAgICAgICAgd2hlcmVcbiAgICAgICAgfSlcbiAgICAgICAgZGVidWdMb2coWydkZWxldGUnLCB7IGNvbGxlY3Rpb25TbHVnIH1dKVxuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHBheWxvYWQgPSBhd2FpdCByZXNvbHZlUGF5bG9hZENsaWVudCgpXG4gICAgICAgICAgaWYgKCFjb2xsZWN0aW9uU2x1ZyB8fCAhKGNvbGxlY3Rpb25TbHVnIGluIHBheWxvYWQuY29sbGVjdGlvbnMpKSB7XG4gICAgICAgICAgICBjb2xsZWN0aW9uU2x1Z0Vycm9yKG1vZGVsKVxuICAgICAgICAgIH1cbiAgICAgICAgICBsZXQgZGVsZXRlUmVzdWx0OiB7XG4gICAgICAgICAgICBkb2M6IFJlY29yZDxzdHJpbmcsIGFueT4gfCBudWxsXG4gICAgICAgICAgICBlcnJvcnM6IGFueVtdXG4gICAgICAgICAgfSB8IG51bGwgPSBudWxsXG4gICAgICAgICAgY29uc3QgaWQgPSBzaW5nbGVJZFF1ZXJ5KHBheWxvYWRXaGVyZSlcbiAgICAgICAgICBpZiAoaWQpIHtcbiAgICAgICAgICAgIGRlYnVnTG9nKFsnZGVsZXRlQnlJRCcsIHsgY29sbGVjdGlvblNsdWcsIGlkIH1dKVxuICAgICAgICAgICAgY29uc3QgZG9jID0gYXdhaXQgcGF5bG9hZC5kZWxldGUoe1xuICAgICAgICAgICAgICBjb2xsZWN0aW9uOiBjb2xsZWN0aW9uU2x1ZyxcbiAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgIGRlcHRoOiBQQVlMT0FEX1FVRVJZX0RFUFRILFxuICAgICAgICAgICAgICBjb250ZXh0OiBjcmVhdGVBZGFwdGVyQ29udGV4dCh7IG1vZGVsLCBvcGVyYXRpb246ICdkZWxldGVCeUlEJyB9KVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIGRlbGV0ZVJlc3VsdCA9IHsgZG9jLCBlcnJvcnM6IFtdIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGVidWdMb2coWydkZWxldGVCeVdoZXJlJywgeyBjb2xsZWN0aW9uU2x1ZywgcGF5bG9hZFdoZXJlIH1dKVxuICAgICAgICAgICAgY29uc3QgZG9jID0gYXdhaXQgcGF5bG9hZC5kZWxldGUoe1xuICAgICAgICAgICAgICBjb2xsZWN0aW9uOiBjb2xsZWN0aW9uU2x1ZyxcbiAgICAgICAgICAgICAgd2hlcmU6IHBheWxvYWRXaGVyZSxcbiAgICAgICAgICAgICAgZGVwdGg6IFBBWUxPQURfUVVFUllfREVQVEgsXG4gICAgICAgICAgICAgIGNvbnRleHQ6IGNyZWF0ZUFkYXB0ZXJDb250ZXh0KHtcbiAgICAgICAgICAgICAgICBtb2RlbCxcbiAgICAgICAgICAgICAgICBvcGVyYXRpb246ICdkZWxldGVCeVdoZXJlJ1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIGRlbGV0ZVJlc3VsdCA9IHsgZG9jOiBkb2MuZG9jc1swXSwgZXJyb3JzOiBbXSB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGRlYnVnTG9nKFtcbiAgICAgICAgICAgICdkZWxldGUgcmVzdWx0JyxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY29sbGVjdGlvblNsdWcsXG4gICAgICAgICAgICAgIHJlc3VsdDogZGVsZXRlUmVzdWx0LFxuICAgICAgICAgICAgICBkdXJhdGlvbjogYCR7RGF0ZS5ub3coKSAtIHN0YXJ0fW1zYFxuICAgICAgICAgICAgfVxuICAgICAgICAgIF0pXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgZXJyb3JMb2coWydFcnJvciBpbiBkZWxldGU6ICcsIGVycm9yXSlcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGFzeW5jIGRlbGV0ZU1hbnkoZGF0YTogeyBtb2RlbDogc3RyaW5nOyB3aGVyZTogV2hlcmVbXSB9KTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpXG4gICAgICAgIGNvbnN0IHsgbW9kZWwsIHdoZXJlIH0gPSBkYXRhXG4gICAgICAgIGNvbnN0IGNvbGxlY3Rpb25TbHVnID0gZ2V0TW9kZWxOYW1lKG1vZGVsKVxuICAgICAgICBjb25zdCBwYXlsb2FkV2hlcmUgPSBjb252ZXJ0V2hlcmVDbGF1c2Uoe1xuICAgICAgICAgIGlkVHlwZTogY29uZmlnLmlkVHlwZSxcbiAgICAgICAgICBtb2RlbCxcbiAgICAgICAgICB3aGVyZVxuICAgICAgICB9KVxuICAgICAgICBkZWJ1Z0xvZyhbJ2RlbGV0ZU1hbnknLCB7IGNvbGxlY3Rpb25TbHVnLCBwYXlsb2FkV2hlcmUgfV0pXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgcGF5bG9hZCA9IGF3YWl0IHJlc29sdmVQYXlsb2FkQ2xpZW50KClcbiAgICAgICAgICBpZiAoIWNvbGxlY3Rpb25TbHVnIHx8ICEoY29sbGVjdGlvblNsdWcgaW4gcGF5bG9hZC5jb2xsZWN0aW9ucykpIHtcbiAgICAgICAgICAgIGNvbGxlY3Rpb25TbHVnRXJyb3IobW9kZWwpXG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGRlbGV0ZVJlc3VsdCA9IGF3YWl0IHBheWxvYWQuZGVsZXRlKHtcbiAgICAgICAgICAgIGNvbGxlY3Rpb246IGNvbGxlY3Rpb25TbHVnLFxuICAgICAgICAgICAgd2hlcmU6IHBheWxvYWRXaGVyZSxcbiAgICAgICAgICAgIGRlcHRoOiBQQVlMT0FEX1FVRVJZX0RFUFRILFxuICAgICAgICAgICAgY29udGV4dDogY3JlYXRlQWRhcHRlckNvbnRleHQoeyBtb2RlbCwgb3BlcmF0aW9uOiAnZGVsZXRlTWFueScgfSlcbiAgICAgICAgICB9KVxuICAgICAgICAgIGRlYnVnTG9nKFtcbiAgICAgICAgICAgICdkZWxldGVNYW55IHJlc3VsdCcsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNvbGxlY3Rpb25TbHVnLFxuICAgICAgICAgICAgICByZXN1bHQ6IGRlbGV0ZVJlc3VsdCxcbiAgICAgICAgICAgICAgZHVyYXRpb246IGAke0RhdGUubm93KCkgLSBzdGFydH1tc2BcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdKVxuICAgICAgICAgIHJldHVybiBkZWxldGVSZXN1bHQuZG9jcy5sZW5ndGhcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBlcnJvckxvZyhbJ0Vycm9yIGluIGRlbGV0ZU1hbnk6ICcsIGVycm9yXSlcbiAgICAgICAgICByZXR1cm4gMFxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgYXN5bmMgY291bnQoZGF0YTogeyBtb2RlbDogc3RyaW5nOyB3aGVyZT86IFdoZXJlW10gfSk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKVxuICAgICAgICBjb25zdCB7IG1vZGVsLCB3aGVyZSB9ID0gZGF0YVxuICAgICAgICBjb25zdCBjb2xsZWN0aW9uU2x1ZyA9IGdldE1vZGVsTmFtZShtb2RlbClcbiAgICAgICAgY29uc3QgcGF5bG9hZFdoZXJlID0gY29udmVydFdoZXJlQ2xhdXNlKHtcbiAgICAgICAgICBpZFR5cGU6IGNvbmZpZy5pZFR5cGUsXG4gICAgICAgICAgbW9kZWwsXG4gICAgICAgICAgd2hlcmVcbiAgICAgICAgfSlcbiAgICAgICAgZGVidWdMb2coWydjb3VudCcsIHsgY29sbGVjdGlvblNsdWcsIHBheWxvYWRXaGVyZSB9XSlcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBwYXlsb2FkID0gYXdhaXQgcmVzb2x2ZVBheWxvYWRDbGllbnQoKVxuICAgICAgICAgIGlmICghY29sbGVjdGlvblNsdWcgfHwgIShjb2xsZWN0aW9uU2x1ZyBpbiBwYXlsb2FkLmNvbGxlY3Rpb25zKSkge1xuICAgICAgICAgICAgY29sbGVjdGlvblNsdWdFcnJvcihtb2RlbClcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcGF5bG9hZC5jb3VudCh7XG4gICAgICAgICAgICBjb2xsZWN0aW9uOiBjb2xsZWN0aW9uU2x1ZyxcbiAgICAgICAgICAgIHdoZXJlOiBwYXlsb2FkV2hlcmUsXG4gICAgICAgICAgICBkZXB0aDogUEFZTE9BRF9RVUVSWV9ERVBUSCxcbiAgICAgICAgICAgIGNvbnRleHQ6IGNyZWF0ZUFkYXB0ZXJDb250ZXh0KHsgbW9kZWwsIG9wZXJhdGlvbjogJ2NvdW50JyB9KVxuICAgICAgICAgIH0pXG4gICAgICAgICAgZGVidWdMb2coW1xuICAgICAgICAgICAgJ2NvdW50IHJlc3VsdCcsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNvbGxlY3Rpb25TbHVnLFxuICAgICAgICAgICAgICByZXN1bHQ6IHsgdG90YWxEb2NzOiByZXN1bHQudG90YWxEb2NzIH0sXG4gICAgICAgICAgICAgIGR1cmF0aW9uOiBgJHtEYXRlLm5vdygpIC0gc3RhcnR9bXNgXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXSlcbiAgICAgICAgICByZXR1cm4gcmVzdWx0LnRvdGFsRG9jc1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGVycm9yTG9nKFsnRXJyb3IgaW4gY291bnQ6ICcsIGVycm9yXSlcbiAgICAgICAgICByZXR1cm4gMFxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgY3JlYXRlU2NoZW1hOiBhc3luYyAob3B0aW9ucywgZmlsZSkgPT4ge1xuICAgICAgICBjb25zdCBzY2hlbWFDb2RlID0gYXdhaXQgZ2VuZXJhdGVTY2hlbWEob3B0aW9ucylcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb2RlOiBzY2hlbWFDb2RlLFxuICAgICAgICAgIHBhdGg6IGZpbGUgfHwgJ3NjaGVtYS50cycsXG4gICAgICAgICAgYXBwZW5kOiBmYWxzZSxcbiAgICAgICAgICBvdmVyd3JpdGU6IHRydWVcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgZW5hYmxlRGVidWdMb2dzOiBjb25maWcuZW5hYmxlRGVidWdMb2dzLFxuICAgICAgICBpZFR5cGU6IGNvbmZpZy5pZFR5cGVcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IHsgZ2VuZXJhdGVTY2hlbWEsIHBheWxvYWRBZGFwdGVyIH1cbiJdLCJuYW1lcyI6WyJCZXR0ZXJBdXRoRXJyb3IiLCJnZW5lcmF0ZVNjaGVtYSIsImNyZWF0ZVRyYW5zZm9ybSIsIkJFVFRFUl9BVVRIX0NPTlRFWFRfS0VZIiwiUEFZTE9BRF9RVUVSWV9ERVBUSCIsInBheWxvYWRBZGFwdGVyIiwicGF5bG9hZENsaWVudCIsImNvbmZpZyIsImRlYnVnTG9nIiwibWVzc2FnZSIsImVuYWJsZURlYnVnTG9ncyIsImNvbnNvbGUiLCJsb2ciLCJlcnJvckxvZyIsImVycm9yIiwiY29sbGVjdGlvblNsdWdFcnJvciIsIm1vZGVsIiwiY3JlYXRlQWRhcHRlckNvbnRleHQiLCJkYXRhIiwicmVzb2x2ZVBheWxvYWRDbGllbnQiLCJwYXlsb2FkIiwiY3VzdG9tIiwiaGFzQmV0dGVyQXV0aFBsdWdpbiIsIm9wdGlvbnMiLCJ0cmFuc2Zvcm1JbnB1dCIsInRyYW5zZm9ybU91dHB1dCIsImNvbnZlcnRXaGVyZUNsYXVzZSIsImNvbnZlcnRTZWxlY3QiLCJjb252ZXJ0U29ydCIsImdldE1vZGVsTmFtZSIsInNpbmdsZUlkUXVlcnkiLCJtdWx0aXBsZUlkc1F1ZXJ5IiwiaWQiLCJjcmVhdGUiLCJzdGFydCIsIkRhdGUiLCJub3ciLCJ2YWx1ZXMiLCJzZWxlY3QiLCJjb2xsZWN0aW9uU2x1ZyIsInRyYW5zZm9ybWVkIiwiYWN0aW9uIiwiaWRUeXBlIiwiY29sbGVjdGlvbnMiLCJyZXN1bHQiLCJjb2xsZWN0aW9uIiwiY29udGV4dCIsIm9wZXJhdGlvbiIsImRlcHRoIiwidHJhbnNmb3JtZWRSZXN1bHQiLCJkb2MiLCJkdXJhdGlvbiIsImZpbmRPbmUiLCJ3aGVyZSIsInBheWxvYWRXaGVyZSIsImZpbmRCeUlEIiwiZG9jcyIsImZpbmQiLCJsaW1pdCIsImZpbmRNYW55Iiwic29ydEJ5Iiwib2Zmc2V0IiwibXVsdGlwbGVJZHMiLCJzaW5nbGVJZCIsImxlbmd0aCIsImlkcyIsInJlcyIsInRvdGFsRG9jcyIsInB1c2giLCJwYWdlIiwiTWF0aCIsImZsb29yIiwic29ydCIsIm1hcCIsInVwZGF0ZSIsInVwZGF0ZU1hbnkiLCJ1cGRhdGVSZXN1bHQiLCJkZWxldGUiLCJkZWxldGVSZXN1bHQiLCJlcnJvcnMiLCJkZWxldGVNYW55IiwiY291bnQiLCJjcmVhdGVTY2hlbWEiLCJmaWxlIiwic2NoZW1hQ29kZSIsImNvZGUiLCJwYXRoIiwiYXBwZW5kIiwib3ZlcndyaXRlIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxlQUFlLFFBQVEsY0FBYTtBQUU3QyxTQUFTQyxjQUFjLFFBQVEsb0JBQW1CO0FBQ2xELFNBQVNDLGVBQWUsUUFBUSxjQUFhO0FBRzdDLE9BQU8sTUFBTUMsMEJBQTBCLHFCQUFvQjtBQUMzRCxNQUFNQyxzQkFBc0I7QUFFNUIsTUFBTUMsaUJBQWlDLENBQUNDLGVBQWVDO0lBQ3JELFNBQVNDLFNBQVNDLE9BQWM7UUFDOUIsSUFBSUYsT0FBT0csZUFBZSxFQUFFO1lBQzFCQyxRQUFRQyxHQUFHLENBQUMsMkJBQTJCSDtRQUN6QztJQUNGO0lBRUEsU0FBU0ksU0FBU0osT0FBYztRQUM5QkUs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
@@ -1,21 +1,21 @@
1
- import type { BetterAuthOptions, Where } from "better-auth";
2
- import type { CollectionSlug, Where as PayloadWhere } from "payload";
1
+ import type { BetterAuthOptions, Where } from 'better-auth';
2
+ import type { CollectionSlug, Where as PayloadWhere } from 'payload';
3
3
  export declare const createTransform: (options: BetterAuthOptions, enableDebugLogs: boolean) => {
4
4
  getFieldName: (model: string, field: string) => string;
5
5
  getModelName: (model: string) => CollectionSlug;
6
6
  singleIdQuery: (where: PayloadWhere) => string | number | null;
7
7
  multipleIdsQuery: (where: PayloadWhere) => (string | number)[] | null;
8
- transformInput: ({ data, model, idType, action, }: {
8
+ transformInput: ({ data, model, idType, action }: {
9
9
  data: Record<string, any>;
10
10
  model: string;
11
11
  idType: "number" | "text";
12
12
  action: "create" | "update";
13
13
  }) => Record<string, any>;
14
- transformOutput: <T extends Record<string, any> | null>({ doc, model, }: {
14
+ transformOutput: <T extends Record<string, any> | null>({ doc, model }: {
15
15
  doc: T;
16
16
  model: string;
17
17
  }) => T;
18
- convertWhereClause: ({ idType, model, where, }: {
18
+ convertWhereClause: ({ idType, model, where }: {
19
19
  idType: "number" | "text";
20
20
  model: string;
21
21
  where?: Where[];
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/better-auth/adapter/transform/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,IAAI,YAAY,EAAE,MAAM,SAAS,CAAC;AAErE,eAAO,MAAM,eAAe,GAC1B,SAAS,iBAAiB,EAC1B,iBAAiB,OAAO;0BAqBK,MAAM,SAAS,MAAM;0BAXrB,MAAM,KAAG,cAAc;2BAqCtB,YAAY;8BAyCT,YAAY;uDA0R1C;QACD,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC1B,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,QAAQ,GAAG,MAAM,CAAC;QAC1B,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC;KAC7B;sBA0BwB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,mBAG1D;QACD,GAAG,EAAE,CAAC,CAAC;QACP,KAAK,EAAE,MAAM,CAAC;KACf,KAAG,CAAC;oDAwIF;QACD,MAAM,EAAE,QAAQ,GAAG,MAAM,CAAC;QAC1B,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC;KACjB,KAAG,YAAY;2BAoDc,MAAM,WAAW,MAAM,EAAE;yBAS9C,MAAM,WACJ;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,KAAK,GAAG,MAAM,CAAA;KAAE;CAoBxD,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/better-auth/adapter/transform/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,IAAI,YAAY,EAAE,MAAM,SAAS,CAAA;AAEpE,eAAO,MAAM,eAAe,GAAI,SAAS,iBAAiB,EAAE,iBAAiB,OAAO;0BAiBrD,MAAM,SAAS,MAAM;0BARrB,MAAM,KAAG,cAAc;2BA8BtB,YAAY;8BAoCT,YAAY;sDA2O1C;QACD,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;QACzB,KAAK,EAAE,MAAM,CAAA;QACb,MAAM,EAAE,QAAQ,GAAG,MAAM,CAAA;QACzB,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAA;KAC5B;sBA0BwB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,kBAAkB;QAAE,GAAG,EAAE,CAAC,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAG,CAAC;mDAyGtD;QAAE,MAAM,EAAE,QAAQ,GAAG,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAA;KAAE,KAAG,YAAY;2BAoDpG,MAAM,WAAW,MAAM,EAAE;yBAK3B,MAAM,WAAW;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,KAAK,GAAG,MAAM,CAAA;KAAE;CAgB1F,CAAA"}