@mercurjs/core 2.3.9-canary.4 → 2.3.9-canary.5

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 (197) hide show
  1. package/.medusa/server/src/api/admin/middlewares.js +41 -39
  2. package/.medusa/server/src/api/admin/payout-accounts/[id]/refresh-link/route.d.ts +3 -0
  3. package/.medusa/server/src/api/admin/payout-accounts/[id]/refresh-link/route.js +14 -0
  4. package/.medusa/server/src/api/admin/payout-accounts/[id]/route.d.ts +3 -0
  5. package/.medusa/server/src/api/admin/payout-accounts/[id]/route.js +18 -0
  6. package/.medusa/server/src/api/admin/payout-accounts/[id]/sync/route.d.ts +3 -0
  7. package/.medusa/server/src/api/admin/payout-accounts/[id]/sync/route.js +14 -0
  8. package/.medusa/server/src/api/admin/payout-accounts/helpers.d.ts +2 -0
  9. package/.medusa/server/src/api/admin/payout-accounts/helpers.js +7 -0
  10. package/.medusa/server/src/api/admin/payout-accounts/middlewares.d.ts +2 -0
  11. package/.medusa/server/src/api/admin/payout-accounts/middlewares.js +45 -0
  12. package/.medusa/server/src/api/admin/payout-accounts/query-config.d.ts +11 -0
  13. package/.medusa/server/src/api/admin/payout-accounts/query-config.js +26 -0
  14. package/.medusa/server/src/api/admin/payout-accounts/route.d.ts +5 -0
  15. package/.medusa/server/src/api/admin/payout-accounts/route.js +31 -0
  16. package/.medusa/server/src/api/admin/payout-accounts/validators.d.ts +51 -0
  17. package/.medusa/server/src/api/admin/payout-accounts/validators.js +22 -0
  18. package/.medusa/server/src/api/admin/payouts/[id]/retry/route.d.ts +3 -0
  19. package/.medusa/server/src/api/admin/payouts/[id]/retry/route.js +14 -0
  20. package/.medusa/server/src/api/admin/payouts/helpers.d.ts +2 -0
  21. package/.medusa/server/src/api/admin/payouts/helpers.js +7 -0
  22. package/.medusa/server/src/api/admin/payouts/middlewares.js +16 -1
  23. package/.medusa/server/src/api/admin/payouts/query-config.js +10 -1
  24. package/.medusa/server/src/api/admin/payouts/validators.d.ts +2 -0
  25. package/.medusa/server/src/api/admin/payouts/validators.js +3 -1
  26. package/.medusa/server/src/api/hooks/payout/route.js +4 -6
  27. package/.medusa/server/src/api/middlewares.js +5 -1
  28. package/.medusa/server/src/api/payout/onboarding/refresh/route.d.ts +6 -0
  29. package/.medusa/server/src/api/payout/onboarding/refresh/route.js +21 -0
  30. package/.medusa/server/src/api/store/carts/middlewares.js +11 -1
  31. package/.medusa/server/src/api/utils/ensure-seller-middleware.js +2 -2
  32. package/.medusa/server/src/api/vendor/payout-accounts/[id]/onboarding/route.js +2 -8
  33. package/.medusa/server/src/api/vendor/payout-accounts/helpers.d.ts +2 -0
  34. package/.medusa/server/src/api/vendor/payout-accounts/helpers.js +7 -2
  35. package/.medusa/server/src/api/vendor/payout-accounts/me/route.d.ts +3 -0
  36. package/.medusa/server/src/api/vendor/payout-accounts/me/route.js +15 -0
  37. package/.medusa/server/src/api/vendor/payout-accounts/middlewares.js +9 -1
  38. package/.medusa/server/src/api/vendor/payout-accounts/query-config.d.ts +11 -0
  39. package/.medusa/server/src/api/vendor/payout-accounts/query-config.js +30 -2
  40. package/.medusa/server/src/api/vendor/payout-accounts/route.js +4 -9
  41. package/.medusa/server/src/api/vendor/payout-accounts/validators.d.ts +3 -1
  42. package/.medusa/server/src/api/vendor/payout-accounts/validators.js +5 -2
  43. package/.medusa/server/src/api/vendor/payouts/query-config.d.ts +2 -0
  44. package/.medusa/server/src/api/vendor/payouts/query-config.js +12 -2
  45. package/.medusa/server/src/api/vendor/payouts/validators.d.ts +1 -0
  46. package/.medusa/server/src/api/vendor/payouts/validators.js +2 -1
  47. package/.medusa/server/src/api/vendor/sellers/select/route.js +2 -2
  48. package/.medusa/server/src/modules/payout/index.d.ts +1 -45
  49. package/.medusa/server/src/modules/payout/loaders/provider.js +7 -3
  50. package/.medusa/server/src/modules/payout/migrations/Migration20261028120000.d.ts +5 -0
  51. package/.medusa/server/src/modules/payout/migrations/Migration20261028120000.js +97 -0
  52. package/.medusa/server/src/modules/payout/models/index.d.ts +1 -0
  53. package/.medusa/server/src/modules/payout/models/index.js +4 -2
  54. package/.medusa/server/src/modules/payout/models/onboarding.d.ts +22 -1
  55. package/.medusa/server/src/modules/payout/models/payout-account.d.ts +23 -2
  56. package/.medusa/server/src/modules/payout/models/payout-account.js +33 -7
  57. package/.medusa/server/src/modules/payout/models/payout-reversal.d.ts +48 -0
  58. package/.medusa/server/src/modules/payout/models/payout-reversal.js +37 -0
  59. package/.medusa/server/src/modules/payout/models/payout.d.ts +22 -1
  60. package/.medusa/server/src/modules/payout/models/payout.js +18 -2
  61. package/.medusa/server/src/modules/payout/providers/system.d.ts +11 -5
  62. package/.medusa/server/src/modules/payout/providers/system.js +33 -14
  63. package/.medusa/server/src/modules/payout/services/payout-module-service.d.ts +94 -100
  64. package/.medusa/server/src/modules/payout/services/payout-module-service.js +316 -109
  65. package/.medusa/server/src/modules/payout/services/provider-service.d.ts +11 -7
  66. package/.medusa/server/src/modules/payout/services/provider-service.js +33 -13
  67. package/.medusa/server/src/modules/payout/utils/abstract-payout-provider.d.ts +20 -0
  68. package/.medusa/server/src/modules/payout/utils/abstract-payout-provider.js +19 -0
  69. package/.medusa/server/src/modules/payout/utils/index.d.ts +1 -0
  70. package/.medusa/server/src/modules/payout/utils/index.js +18 -0
  71. package/.medusa/server/src/modules/telemetry/index.d.ts +21 -0
  72. package/.medusa/server/src/modules/telemetry/index.js +12 -0
  73. package/.medusa/server/src/modules/telemetry/migrations/Migration20261029000000.d.ts +5 -0
  74. package/.medusa/server/src/modules/telemetry/migrations/Migration20261029000000.js +27 -0
  75. package/.medusa/server/src/modules/telemetry/models/index.d.ts +1 -0
  76. package/.medusa/server/src/modules/telemetry/models/index.js +10 -0
  77. package/.medusa/server/src/modules/telemetry/models/installation.d.ts +9 -0
  78. package/.medusa/server/src/modules/telemetry/models/installation.js +14 -0
  79. package/.medusa/server/src/modules/telemetry/repositories/index.d.ts +1 -0
  80. package/.medusa/server/src/modules/telemetry/repositories/index.js +18 -0
  81. package/.medusa/server/src/modules/telemetry/repositories/telemetry-heartbeat.d.ts +10 -0
  82. package/.medusa/server/src/modules/telemetry/repositories/telemetry-heartbeat.js +28 -0
  83. package/.medusa/server/src/modules/telemetry/service.d.ts +25 -0
  84. package/.medusa/server/src/modules/telemetry/service.js +54 -0
  85. package/.medusa/server/src/subscribers/payout-webhook.d.ts +2 -2
  86. package/.medusa/server/src/subscribers/payout-webhook.js +9 -5
  87. package/.medusa/server/src/subscribers/telemetry-first-member-invited.d.ts +3 -0
  88. package/.medusa/server/src/subscribers/telemetry-first-member-invited.js +14 -0
  89. package/.medusa/server/src/subscribers/telemetry-first-offer.d.ts +3 -0
  90. package/.medusa/server/src/subscribers/telemetry-first-offer.js +14 -0
  91. package/.medusa/server/src/subscribers/telemetry-first-order.d.ts +3 -0
  92. package/.medusa/server/src/subscribers/telemetry-first-order.js +14 -0
  93. package/.medusa/server/src/subscribers/telemetry-first-payout-account.d.ts +5 -0
  94. package/.medusa/server/src/subscribers/telemetry-first-payout-account.js +24 -0
  95. package/.medusa/server/src/subscribers/telemetry-first-product-published.d.ts +3 -0
  96. package/.medusa/server/src/subscribers/telemetry-first-product-published.js +14 -0
  97. package/.medusa/server/src/subscribers/telemetry-first-seller-approved.d.ts +3 -0
  98. package/.medusa/server/src/subscribers/telemetry-first-seller-approved.js +14 -0
  99. package/.medusa/server/src/subscribers/telemetry-first-seller.d.ts +3 -0
  100. package/.medusa/server/src/subscribers/telemetry-first-seller.js +14 -0
  101. package/.medusa/server/src/utils/telemetry/boot.d.ts +7 -0
  102. package/.medusa/server/src/utils/telemetry/boot.js +117 -0
  103. package/.medusa/server/src/utils/telemetry/buckets.d.ts +2 -0
  104. package/.medusa/server/src/utils/telemetry/buckets.js +22 -0
  105. package/.medusa/server/src/utils/telemetry/config.d.ts +19 -0
  106. package/.medusa/server/src/utils/telemetry/config.js +60 -0
  107. package/.medusa/server/src/utils/telemetry/first-party.d.ts +11 -0
  108. package/.medusa/server/src/utils/telemetry/first-party.js +33 -0
  109. package/.medusa/server/src/utils/telemetry/identity.d.ts +6 -0
  110. package/.medusa/server/src/utils/telemetry/identity.js +32 -0
  111. package/.medusa/server/src/utils/telemetry/index.d.ts +8 -0
  112. package/.medusa/server/src/utils/telemetry/index.js +27 -0
  113. package/.medusa/server/src/utils/telemetry/milestones.d.ts +20 -0
  114. package/.medusa/server/src/utils/telemetry/milestones.js +60 -0
  115. package/.medusa/server/src/utils/telemetry/sender.d.ts +17 -0
  116. package/.medusa/server/src/utils/telemetry/sender.js +48 -0
  117. package/.medusa/server/src/utils/telemetry/snapshot.d.ts +13 -0
  118. package/.medusa/server/src/utils/telemetry/snapshot.js +193 -0
  119. package/.medusa/server/src/with-mercur.d.ts +6 -0
  120. package/.medusa/server/src/with-mercur.js +1 -1
  121. package/.medusa/server/src/workflows/payment/utils/split-order-payment-group.js +11 -3
  122. package/.medusa/server/src/workflows/payment/workflows/process-payment.js +10 -5
  123. package/.medusa/server/src/workflows/payout/steps/create-onboarding.d.ts +8 -2
  124. package/.medusa/server/src/workflows/payout/steps/create-onboarding.js +10 -4
  125. package/.medusa/server/src/workflows/payout/steps/create-payout-account.d.ts +3 -2
  126. package/.medusa/server/src/workflows/payout/steps/create-payout-account.js +9 -3
  127. package/.medusa/server/src/workflows/payout/steps/create-payout-accounts.d.ts +11 -0
  128. package/.medusa/server/src/workflows/payout/steps/create-payout-accounts.js +22 -0
  129. package/.medusa/server/src/workflows/payout/steps/create-payout-reversals.d.ts +4 -0
  130. package/.medusa/server/src/workflows/payout/steps/create-payout-reversals.js +23 -0
  131. package/.medusa/server/src/workflows/payout/steps/create-payouts.d.ts +4 -0
  132. package/.medusa/server/src/workflows/payout/steps/create-payouts.js +23 -0
  133. package/.medusa/server/src/workflows/payout/steps/index.d.ts +12 -5
  134. package/.medusa/server/src/workflows/payout/steps/index.js +13 -6
  135. package/.medusa/server/src/workflows/payout/steps/process-payout-reversals.d.ts +6 -0
  136. package/.medusa/server/src/workflows/payout/steps/process-payout-reversals.js +17 -0
  137. package/.medusa/server/src/workflows/payout/steps/process-payouts.d.ts +6 -0
  138. package/.medusa/server/src/workflows/payout/steps/process-payouts.js +17 -0
  139. package/.medusa/server/src/workflows/payout/steps/sync-payout-account.d.ts +8 -0
  140. package/.medusa/server/src/workflows/payout/steps/sync-payout-account.js +33 -0
  141. package/.medusa/server/src/workflows/payout/steps/update-payout-reversals.d.ts +4 -0
  142. package/.medusa/server/src/workflows/payout/steps/update-payout-reversals.js +29 -0
  143. package/.medusa/server/src/workflows/payout/steps/update-payouts.d.ts +4 -0
  144. package/.medusa/server/src/workflows/payout/steps/update-payouts.js +34 -0
  145. package/.medusa/server/src/workflows/payout/steps/validate-onboarding-token.d.ts +12 -0
  146. package/.medusa/server/src/workflows/payout/steps/validate-onboarding-token.js +23 -0
  147. package/.medusa/server/src/workflows/payout/steps/validate-payout-retry.d.ts +10 -0
  148. package/.medusa/server/src/workflows/payout/steps/validate-payout-retry.js +15 -0
  149. package/.medusa/server/src/workflows/payout/steps/validate-seller-without-payout-account.d.ts +10 -0
  150. package/.medusa/server/src/workflows/payout/steps/validate-seller-without-payout-account.js +13 -0
  151. package/.medusa/server/src/workflows/payout/utils/fulfillment-status.d.ts +26 -0
  152. package/.medusa/server/src/workflows/payout/utils/fulfillment-status.js +64 -0
  153. package/.medusa/server/src/workflows/payout/utils/index.d.ts +3 -0
  154. package/.medusa/server/src/workflows/payout/utils/index.js +20 -0
  155. package/.medusa/server/src/workflows/payout/utils/payout-amounts.d.ts +173 -0
  156. package/.medusa/server/src/workflows/payout/utils/payout-amounts.js +304 -0
  157. package/.medusa/server/src/workflows/payout/utils/sent-to-provider.d.ts +11 -0
  158. package/.medusa/server/src/workflows/payout/utils/sent-to-provider.js +15 -0
  159. package/.medusa/server/src/workflows/payout/workflows/create-onboarding.d.ts +5 -0
  160. package/.medusa/server/src/workflows/payout/workflows/create-onboarding.js +8 -3
  161. package/.medusa/server/src/workflows/payout/workflows/create-or-refresh-seller-payout-account.d.ts +16 -0
  162. package/.medusa/server/src/workflows/payout/workflows/create-or-refresh-seller-payout-account.js +38 -0
  163. package/.medusa/server/src/workflows/payout/workflows/create-order-payouts.d.ts +28 -0
  164. package/.medusa/server/src/workflows/payout/workflows/create-order-payouts.js +82 -0
  165. package/.medusa/server/src/workflows/payout/workflows/create-payout-account.d.ts +11 -5
  166. package/.medusa/server/src/workflows/payout/workflows/create-payout-account.js +42 -17
  167. package/.medusa/server/src/workflows/payout/workflows/create-payout-reversals.d.ts +14 -0
  168. package/.medusa/server/src/workflows/payout/workflows/create-payout-reversals.js +61 -0
  169. package/.medusa/server/src/workflows/payout/workflows/index.d.ts +11 -2
  170. package/.medusa/server/src/workflows/payout/workflows/index.js +12 -3
  171. package/.medusa/server/src/workflows/payout/workflows/link-payout-account.d.ts +11 -0
  172. package/.medusa/server/src/workflows/payout/workflows/link-payout-account.js +35 -0
  173. package/.medusa/server/src/workflows/payout/workflows/process-payout-for-webhook.d.ts +7 -3
  174. package/.medusa/server/src/workflows/payout/workflows/process-payout-for-webhook.js +50 -57
  175. package/.medusa/server/src/workflows/payout/workflows/process-payout-reversal.d.ts +9 -0
  176. package/.medusa/server/src/workflows/payout/workflows/process-payout-reversal.js +19 -0
  177. package/.medusa/server/src/workflows/payout/workflows/process-payout.d.ts +13 -0
  178. package/.medusa/server/src/workflows/payout/workflows/process-payout.js +23 -0
  179. package/.medusa/server/src/workflows/payout/workflows/refresh-onboarding.d.ts +13 -0
  180. package/.medusa/server/src/workflows/payout/workflows/refresh-onboarding.js +26 -0
  181. package/.medusa/server/src/workflows/payout/workflows/refresh-payout-account-link.d.ts +9 -0
  182. package/.medusa/server/src/workflows/payout/workflows/refresh-payout-account-link.js +15 -0
  183. package/.medusa/server/src/workflows/payout/workflows/retry-payout.d.ts +10 -0
  184. package/.medusa/server/src/workflows/payout/workflows/retry-payout.js +36 -0
  185. package/.medusa/server/src/workflows/payout/workflows/sync-payout-account.d.ts +9 -0
  186. package/.medusa/server/src/workflows/payout/workflows/sync-payout-account.js +24 -0
  187. package/package.json +3 -3
  188. package/.medusa/server/src/workflows/payout/steps/create-payout.d.ts +0 -3
  189. package/.medusa/server/src/workflows/payout/steps/create-payout.js +0 -12
  190. package/.medusa/server/src/workflows/payout/steps/update-payout-account.d.ts +0 -35
  191. package/.medusa/server/src/workflows/payout/steps/update-payout-account.js +0 -27
  192. package/.medusa/server/src/workflows/payout/steps/update-payout.d.ts +0 -35
  193. package/.medusa/server/src/workflows/payout/steps/update-payout.js +0 -27
  194. package/.medusa/server/src/workflows/payout/steps/validate-seller-payout-account.d.ts +0 -5
  195. package/.medusa/server/src/workflows/payout/steps/validate-seller-payout-account.js +0 -21
  196. package/.medusa/server/src/workflows/payout/workflows/create-payout.d.ts +0 -9
  197. package/.medusa/server/src/workflows/payout/workflows/create-payout.js +0 -87
@@ -19,138 +19,316 @@ class PayoutModuleService extends (0, utils_1.MedusaService)({
19
19
  Onboarding: models_1.Onboarding,
20
20
  Payout: models_1.Payout,
21
21
  PayoutAccount: models_1.PayoutAccount,
22
+ PayoutReversal: models_1.PayoutReversal,
22
23
  }) {
23
24
  constructor({ payoutProviderService, baseRepository }, options) {
24
25
  // @ts-ignore
25
26
  super(...arguments);
26
27
  this.payoutProviderService_ = payoutProviderService;
27
28
  this.baseRepository_ = baseRepository;
28
- this.options_ = {
29
- ...types_1.PAYOUT_MODULE_OPTION_DEFAULTS,
30
- ...(options ?? {}),
31
- };
29
+ this.options_ = (0, types_1.resolvePayoutModuleOptions)(options);
32
30
  }
33
31
  getOptions() {
34
- return {
35
- ...types_1.PAYOUT_MODULE_OPTION_DEFAULTS,
36
- ...(this.options_ ?? {}),
37
- };
32
+ return this.options_;
38
33
  }
39
34
  async createPayoutAccount(input, sharedContext) {
40
- let payoutAccount = null;
41
- let providerAccount = null;
35
+ const payoutAccount = await this.createPayoutAccounts({ data: input.data ?? {}, context: (input.context ?? null) }, sharedContext);
36
+ let providerAccount;
42
37
  try {
43
- payoutAccount = await this.createPayoutAccounts({ data: input.data, context: input.context }, sharedContext);
44
- providerAccount = await this.payoutProviderService_.createPayoutAccount({
45
- context: {
46
- idempotency_key: payoutAccount.id,
47
- ...input.context
48
- },
49
- data: {
50
- ...input.data,
51
- account_id: payoutAccount.id,
52
- }
53
- });
54
- payoutAccount = await this.updatePayoutAccounts({
55
- id: payoutAccount.id,
56
- data: providerAccount.data,
57
- status: providerAccount.status
58
- }, sharedContext);
38
+ providerAccount = await this.payoutProviderService_.createAccount(this.providerAccountInput_(payoutAccount.id, input));
59
39
  }
60
40
  catch (error) {
61
- if (providerAccount && payoutAccount?.id) {
62
- await this.updatePayoutAccounts({
63
- id: payoutAccount.id,
64
- data: providerAccount.data,
65
- status: providerAccount.status,
66
- }, sharedContext).catch(() => null);
67
- }
68
- else if (payoutAccount?.id) {
69
- await this.deletePayoutAccounts(payoutAccount.id, sharedContext);
70
- }
41
+ await this.deletePayoutAccounts(payoutAccount.id, sharedContext);
71
42
  throw error;
72
43
  }
73
- return await this.baseRepository_.serialize(payoutAccount);
44
+ const updated = await this.updatePayoutAccounts({ id: payoutAccount.id, ...this.accountFieldsFromProvider_(providerAccount) }, sharedContext);
45
+ return await this.baseRepository_.serialize(updated);
74
46
  }
75
- async createOnboarding(input, sharedContext) {
76
- const payoutAccount = await this.retrievePayoutAccount(input.account_id, {
77
- select: ['data'],
78
- relations: ['onboarding']
79
- }, sharedContext);
80
- const providerData = await this.payoutProviderService_.createOnboarding({
81
- context: {
82
- idempotency_key: input.account_id,
83
- ...input.context
84
- },
85
- data: {
86
- ...payoutAccount.data,
87
- ...input.data
88
- }
47
+ async syncPayoutAccount(accountId, sharedContext) {
48
+ const account = await this.retrievePayoutAccount(accountId, {}, sharedContext);
49
+ const providerAccount = await this.payoutProviderService_.retrieveAccount({
50
+ account: this.providerAccountRef_(account),
89
51
  });
90
- const upsertOnboardingData = {
91
- ...(payoutAccount.onboarding ? { id: payoutAccount.onboarding.id } : {}),
92
- account: input.account_id,
93
- data: providerData.data,
94
- context: input.context
95
- };
96
- let onboarding;
97
- if (!payoutAccount.onboarding) {
98
- onboarding = await this.createOnboardings(upsertOnboardingData, sharedContext);
52
+ const updated = await this.updatePayoutAccounts({
53
+ id: accountId,
54
+ ...this.accountFieldsFromProvider_(providerAccount),
55
+ ...(providerAccount.details_submitted
56
+ ? { onboarding_token: null, onboarding_token_issued_at: null }
57
+ : {}),
58
+ }, sharedContext);
59
+ return await this.baseRepository_.serialize(updated);
60
+ }
61
+ async deletePayoutAccount(accountId, sharedContext) {
62
+ const account = await this.retrievePayoutAccount(accountId, { relations: ["onboarding"] }, sharedContext);
63
+ if (account.external_id) {
64
+ await this.payoutProviderService_.deleteAccount({ account: this.providerAccountRef_(account) });
65
+ }
66
+ if (account.onboarding) {
67
+ await this.deleteOnboardings(account.onboarding.id, sharedContext);
68
+ }
69
+ await this.deletePayoutAccounts(accountId, sharedContext);
70
+ }
71
+ async createOnboarding(input, sharedContext) {
72
+ const account = await this.retrievePayoutAccount(input.account_id, { relations: ["onboarding"] }, sharedContext);
73
+ const loginLink = account.details_submitted
74
+ ? await this.payoutProviderService_.createLoginLink({ account: this.providerAccountRef_(account) })
75
+ : null;
76
+ let data;
77
+ if (loginLink) {
78
+ data = { ...loginLink.data, url: loginLink.url, kind: "login", expires_at: loginLink.expires_at ?? null };
99
79
  }
100
80
  else {
101
- onboarding = await this.updateOnboardings(upsertOnboardingData, sharedContext);
81
+ const token = input.rotate_token || !this.isOnboardingTokenValid_(account)
82
+ ? this.generateOnboardingToken_()
83
+ : account.onboarding_token;
84
+ if (token !== account.onboarding_token) {
85
+ await this.updatePayoutAccounts({ id: account.id, onboarding_token: token, onboarding_token_issued_at: new Date() }, sharedContext);
86
+ }
87
+ const link = await this.payoutProviderService_.createOnboarding({
88
+ context: { ...input.context, idempotency_key: input.account_id },
89
+ data: { ...account.data, ...input.data },
90
+ account: this.providerAccountRef_(account),
91
+ refresh_url: input.data?.refresh_url ??
92
+ `${this.options_.onboarding.refreshBaseUrl}/payout/onboarding/refresh?token=${token}`,
93
+ return_url: input.data?.return_url ?? this.options_.onboarding.returnUrl,
94
+ });
95
+ data = { ...link.data, url: link.url, kind: "onboarding", expires_at: link.expires_at ?? null };
102
96
  }
97
+ const onboarding = account.onboarding
98
+ ? await this.updateOnboardings({ id: account.onboarding.id, data }, sharedContext)
99
+ : await this.createOnboardings({
100
+ account_id: input.account_id,
101
+ data,
102
+ context: (input.context ?? null),
103
+ }, sharedContext);
103
104
  return await this.baseRepository_.serialize(onboarding);
104
105
  }
105
- // @ts-ignore
106
- async createPayouts(input, sharedContext) {
107
- const { payout, payoutAccount } = await this.createPayouts_(input, sharedContext);
108
- let updated;
106
+ async processPayout(payoutId, sharedContext) {
107
+ const { payout, attempt } = await this.processPayout_(payoutId, sharedContext);
108
+ if (attempt) {
109
+ const result = await this.processPayoutFromProvider_(payout, attempt);
110
+ await this.updatePayouts({ id: payout.id, ...result, data: { ...(payout.data ?? {}), ...attempt, ...result.data } }, sharedContext);
111
+ }
112
+ const updated = await this.retrievePayout(payoutId, {}, sharedContext);
113
+ return await this.baseRepository_.serialize(updated);
114
+ }
115
+ async processPayoutReversal(reversalId, sharedContext) {
116
+ const { reversal, attempt } = await this.processPayoutReversal_(reversalId, sharedContext);
117
+ if (attempt) {
118
+ const result = await this.processPayoutReversalFromProvider_(reversal, attempt);
119
+ await this.updatePayoutReversals({ id: reversal.id, ...result, data: { ...(reversal.data ?? {}), ...attempt, ...result.data } }, sharedContext);
120
+ }
121
+ const updated = await this.retrievePayoutReversal(reversalId, {}, sharedContext);
122
+ return await this.baseRepository_.serialize(updated);
123
+ }
124
+ async getWebhookActionAndData(input) {
125
+ return await this.payoutProviderService_.getWebhookActionAndData(input);
126
+ }
127
+ async processPayout_(payoutId, sharedContext = {}) {
128
+ await this.lockRow_("payout", payoutId, sharedContext);
129
+ const payout = await this.retrievePayout(payoutId, { relations: ["account"] }, sharedContext);
130
+ if (!PayoutModuleService.PROCESSABLE_STATUSES.includes(payout.status)) {
131
+ return { payout, attempt: null };
132
+ }
133
+ const attempt = this.nextAttempt_(payout.id, payout.data);
134
+ await this.updatePayouts({ id: payout.id, status: types_1.PayoutStatus.PROCESSING, data: { ...(payout.data ?? {}), ...attempt } }, sharedContext);
135
+ return { payout, attempt };
136
+ }
137
+ async processPayoutReversal_(reversalId, sharedContext = {}) {
138
+ await this.lockRow_("payout_reversal", reversalId, sharedContext);
139
+ const reversal = await this.retrievePayoutReversal(reversalId, { relations: ["payout"] }, sharedContext);
140
+ if (!PayoutModuleService.PROCESSABLE_STATUSES.includes(reversal.status)) {
141
+ return { reversal, attempt: null };
142
+ }
143
+ const attempt = this.nextAttempt_(reversal.id, reversal.data);
144
+ await this.updatePayoutReversals({
145
+ id: reversal.id,
146
+ status: types_1.PayoutStatus.PROCESSING,
147
+ data: { ...(reversal.data ?? {}), ...attempt },
148
+ }, sharedContext);
149
+ return { reversal, attempt };
150
+ }
151
+ // Runs outside the transaction so the row lock is never held across the provider call.
152
+ async processPayoutFromProvider_(payout, attempt) {
153
+ const source = (payout.data?.source_payment ?? null);
109
154
  try {
110
- const providerResponse = await this.payoutProviderService_.createPayout({
111
- account_id: input.account_id,
112
- amount: input.amount,
113
- currency_code: input.currency_code,
114
- context: {
115
- idempotency_key: payout.id,
116
- ...input.context
155
+ const response = await this.payoutProviderService_.createPayout({
156
+ account: this.providerAccountRef_(payout.account ?? {}),
157
+ amount: payout.amount,
158
+ currency_code: payout.currency_code,
159
+ source_payment: source,
160
+ group: payout.order_id,
161
+ metadata: {
162
+ payout_id: payout.id,
163
+ ...(payout.order_id ? { order_id: payout.order_id } : {}),
117
164
  },
118
- data: {
119
- ...payoutAccount.data,
120
- ...input.data
121
- }
165
+ context: { idempotency_key: attempt.idempotency_key },
122
166
  });
123
- updated = await this.updatePayouts({
124
- id: payout.id,
125
- data: providerResponse.data,
126
- status: providerResponse.status,
127
- }, sharedContext);
167
+ return this.statusFromProvider_(response);
128
168
  }
129
169
  catch (error) {
130
- await this.deletePayouts(payout.id, sharedContext).catch(() => null);
131
- throw error;
170
+ return this.statusFromError_(error);
132
171
  }
133
- return await this.baseRepository_.serialize(updated);
134
172
  }
135
- async createPayouts_(input, sharedContext) {
136
- const payoutAccount = await this.retrievePayoutAccount(input.account_id, {
137
- select: ['id', 'status', 'data']
138
- }, sharedContext);
139
- if (payoutAccount.status !== types_1.PayoutAccountStatus.ACTIVE) {
140
- throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_ALLOWED, `Account '${input.account_id}' is not active`);
141
- }
142
- const payout = await super.createPayouts({
143
- amount: input.amount,
144
- currency_code: input.currency_code,
145
- account_id: payoutAccount.id,
146
- status: types_1.PayoutStatus.PENDING,
147
- }, sharedContext);
148
- return { payout, payoutAccount };
173
+ async processPayoutReversalFromProvider_(reversal, attempt) {
174
+ const payout = reversal.payout;
175
+ const provider = (payout.data?.provider ?? {});
176
+ try {
177
+ const response = await this.payoutProviderService_.reversePayout({
178
+ payout: { id: provider.id, data: provider },
179
+ amount: reversal.amount,
180
+ currency_code: payout.currency_code,
181
+ metadata: {
182
+ payout_id: payout.id,
183
+ payout_reversal_id: reversal.id,
184
+ ...(reversal.refund_id ? { refund_id: reversal.refund_id } : {}),
185
+ },
186
+ context: { idempotency_key: attempt.idempotency_key },
187
+ });
188
+ return this.statusFromProvider_(response);
189
+ }
190
+ catch (error) {
191
+ return this.statusFromError_(error);
192
+ }
149
193
  }
150
- async getWebhookActionAndData(input) {
151
- return await this.payoutProviderService_.getWebhookActionAndData(input);
194
+ async lockRow_(table, id, sharedContext) {
195
+ // A FOR UPDATE on a pooled (autocommit) connection would release the lock
196
+ // immediately, so require the transaction context.
197
+ const knex = sharedContext.transactionManager?.getTransactionContext();
198
+ if (!knex) {
199
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, `Processing ${table} ${id} must run inside a transaction.`);
200
+ }
201
+ await knex.raw("SET LOCAL lock_timeout = '3s'");
202
+ await knex(table).where("id", id).forUpdate().select("id");
203
+ }
204
+ /**
205
+ * The key of a request whose outcome is unknown is kept, so a retry after a
206
+ * timeout returns the payout the provider may already have made. Only a
207
+ * provider refusal clears it, and the next attempt gets a fresh key.
208
+ */
209
+ nextAttempt_(id, data) {
210
+ const attempts = Number(data?.attempts ?? 0) + 1;
211
+ const kept = data?.idempotency_key;
212
+ return {
213
+ attempts,
214
+ idempotency_key: kept ?? (attempts === 1 ? id : `${id}:${attempts}`),
215
+ };
216
+ }
217
+ statusFromProvider_(response) {
218
+ return {
219
+ status: response.status,
220
+ status_reason: null,
221
+ data: { provider: { ...response.data, id: response.id }, status_detail: null },
222
+ };
223
+ }
224
+ statusFromError_(error) {
225
+ const code = this.providerErrorCode_(error);
226
+ const message = error instanceof Error ? error.message : String(error);
227
+ return {
228
+ status: code === types_1.PayoutProviderErrorCode.FINAL ? types_1.PayoutStatus.ABORTED : types_1.PayoutStatus.FAILED,
229
+ status_reason: types_1.PayoutStatusReason.PROVIDER_ERROR,
230
+ data: {
231
+ status_detail: message.slice(0, PayoutModuleService.STATUS_DETAIL_MAX_LENGTH),
232
+ ...(code === types_1.PayoutProviderErrorCode.REFUSED ? { idempotency_key: null } : {}),
233
+ },
234
+ };
235
+ }
236
+ // Read structurally: the error may come from another copy of @mercurjs/types.
237
+ providerErrorCode_(error) {
238
+ const { code, final } = (error ?? {});
239
+ if (final === true || code === types_1.PayoutProviderErrorCode.FINAL) {
240
+ return types_1.PayoutProviderErrorCode.FINAL;
241
+ }
242
+ return code === types_1.PayoutProviderErrorCode.REFUSED ? types_1.PayoutProviderErrorCode.REFUSED : types_1.PayoutProviderErrorCode.UNKNOWN;
243
+ }
244
+ isOnboardingTokenValid_(account) {
245
+ if (!account.onboarding_token || !account.onboarding_token_issued_at) {
246
+ return false;
247
+ }
248
+ const issuedAt = new Date(account.onboarding_token_issued_at).getTime();
249
+ return Date.now() - issuedAt < this.options_.onboarding.tokenTtlSeconds * 1000;
250
+ }
251
+ generateOnboardingToken_() {
252
+ return Array.from(crypto.getRandomValues(new Uint8Array(16)))
253
+ .map((byte) => byte.toString(16).padStart(2, "0"))
254
+ .join("");
255
+ }
256
+ providerAccountRef_(account) {
257
+ return {
258
+ id: account.external_id ?? (account.data?.id ?? ""),
259
+ data: (account.data ?? {}),
260
+ };
261
+ }
262
+ providerAccountInput_(accountId, input) {
263
+ const seller = input.seller;
264
+ const prefill = this.options_.onboarding.prefill && seller;
265
+ return {
266
+ context: { idempotency_key: accountId, ...input.context },
267
+ data: { ...input.data, account_id: accountId },
268
+ country: input.data?.country ??
269
+ seller?.country_code ??
270
+ this.options_.onboarding.defaultCountry ??
271
+ undefined,
272
+ business_type: input.data?.business_type ??
273
+ (prefill ? (seller?.is_company ? "company" : "individual") : undefined),
274
+ business_profile: prefill
275
+ ? {
276
+ name: input.data?.business_name ?? seller?.name ?? null,
277
+ url: input.data?.website ?? seller?.website_url ?? null,
278
+ support_email: input.data?.support_email ?? seller?.email ?? null,
279
+ support_phone: input.data?.support_phone ?? seller?.phone ?? null,
280
+ }
281
+ : undefined,
282
+ metadata: {
283
+ account_id: accountId,
284
+ ...(seller?.id ? { seller_id: seller.id } : {}),
285
+ },
286
+ };
287
+ }
288
+ accountFieldsFromProvider_(account) {
289
+ return {
290
+ external_id: account.id,
291
+ status: this.deriveAccountStatus_(account),
292
+ kyc_status: this.deriveKycStatus_(account.requirements, account.disabled_reason),
293
+ payouts_enabled: account.payouts_enabled,
294
+ charges_enabled: account.charges_enabled,
295
+ details_submitted: account.details_submitted,
296
+ disabled_reason: account.disabled_reason,
297
+ data: account.data,
298
+ last_synced_at: new Date(),
299
+ };
300
+ }
301
+ /**
302
+ * Outstanding requirements beat pending verification, a `rejected.*`
303
+ * disabled reason is final, any other disabled reason is still under review.
304
+ */
305
+ deriveKycStatus_(requirements, disabledReason) {
306
+ if (requirements?.currently_due?.length || requirements?.past_due?.length) {
307
+ return types_1.PayoutKycStatus.PENDING_SUBMISSION;
308
+ }
309
+ if (requirements?.pending_verification?.length) {
310
+ return types_1.PayoutKycStatus.PENDING_APPROVAL;
311
+ }
312
+ if (disabledReason?.startsWith("rejected")) {
313
+ return types_1.PayoutKycStatus.REFUSED;
314
+ }
315
+ return disabledReason ? types_1.PayoutKycStatus.PENDING_APPROVAL : types_1.PayoutKycStatus.APPROVED;
316
+ }
317
+ deriveAccountStatus_(account) {
318
+ if (account.status === types_1.PayoutAccountStatus.REJECTED || account.disabled_reason?.startsWith("rejected")) {
319
+ return types_1.PayoutAccountStatus.REJECTED;
320
+ }
321
+ if (!account.details_submitted) {
322
+ return types_1.PayoutAccountStatus.PENDING;
323
+ }
324
+ if (account.payouts_enabled && account.charges_enabled && !account.disabled_reason) {
325
+ return types_1.PayoutAccountStatus.ACTIVE;
326
+ }
327
+ return types_1.PayoutAccountStatus.RESTRICTED;
152
328
  }
153
329
  }
330
+ PayoutModuleService.PROCESSABLE_STATUSES = [types_1.PayoutStatus.PENDING, types_1.PayoutStatus.FAILED];
331
+ PayoutModuleService.STATUS_DETAIL_MAX_LENGTH = 1024;
154
332
  exports.default = PayoutModuleService;
155
333
  __decorate([
156
334
  (0, utils_1.InjectManager)(),
@@ -161,7 +339,23 @@ __decorate([
161
339
  __metadata("design:returntype", Promise)
162
340
  ], PayoutModuleService.prototype, "createPayoutAccount", null);
163
341
  __decorate([
164
- (0, utils_1.InjectTransactionManager)(),
342
+ (0, utils_1.InjectManager)(),
343
+ (0, utils_1.EmitEvents)(),
344
+ __param(1, (0, utils_1.MedusaContext)()),
345
+ __metadata("design:type", Function),
346
+ __metadata("design:paramtypes", [String, Object]),
347
+ __metadata("design:returntype", Promise)
348
+ ], PayoutModuleService.prototype, "syncPayoutAccount", null);
349
+ __decorate([
350
+ (0, utils_1.InjectManager)(),
351
+ (0, utils_1.EmitEvents)(),
352
+ __param(1, (0, utils_1.MedusaContext)()),
353
+ __metadata("design:type", Function),
354
+ __metadata("design:paramtypes", [String, Object]),
355
+ __metadata("design:returntype", Promise)
356
+ ], PayoutModuleService.prototype, "deletePayoutAccount", null);
357
+ __decorate([
358
+ (0, utils_1.InjectManager)(),
165
359
  (0, utils_1.EmitEvents)(),
166
360
  __param(1, (0, utils_1.MedusaContext)()),
167
361
  __metadata("design:type", Function),
@@ -170,19 +364,32 @@ __decorate([
170
364
  ], PayoutModuleService.prototype, "createOnboarding", null);
171
365
  __decorate([
172
366
  (0, utils_1.InjectManager)(),
173
- (0, utils_1.EmitEvents)()
174
- // @ts-ignore
175
- ,
367
+ (0, utils_1.EmitEvents)(),
176
368
  __param(1, (0, utils_1.MedusaContext)()),
177
369
  __metadata("design:type", Function),
178
- __metadata("design:paramtypes", [Object, Object]),
370
+ __metadata("design:paramtypes", [String, Object]),
179
371
  __metadata("design:returntype", Promise)
180
- ], PayoutModuleService.prototype, "createPayouts", null);
372
+ ], PayoutModuleService.prototype, "processPayout", null);
373
+ __decorate([
374
+ (0, utils_1.InjectManager)(),
375
+ (0, utils_1.EmitEvents)(),
376
+ __param(1, (0, utils_1.MedusaContext)()),
377
+ __metadata("design:type", Function),
378
+ __metadata("design:paramtypes", [String, Object]),
379
+ __metadata("design:returntype", Promise)
380
+ ], PayoutModuleService.prototype, "processPayoutReversal", null);
181
381
  __decorate([
182
382
  (0, utils_1.InjectTransactionManager)(),
183
383
  __param(1, (0, utils_1.MedusaContext)()),
184
384
  __metadata("design:type", Function),
185
- __metadata("design:paramtypes", [Object, Object]),
385
+ __metadata("design:paramtypes", [String, Object]),
386
+ __metadata("design:returntype", Promise)
387
+ ], PayoutModuleService.prototype, "processPayout_", null);
388
+ __decorate([
389
+ (0, utils_1.InjectTransactionManager)(),
390
+ __param(1, (0, utils_1.MedusaContext)()),
391
+ __metadata("design:type", Function),
392
+ __metadata("design:paramtypes", [String, Object]),
186
393
  __metadata("design:returntype", Promise)
187
- ], PayoutModuleService.prototype, "createPayouts_", null);
188
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5b3V0LW1vZHVsZS1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvcGF5b3V0L3NlcnZpY2VzL3BheW91dC1tb2R1bGUtc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBLHFEQU9rQztBQUNsQywyQ0Fjd0I7QUFFeEIsc0NBQTZEO0FBUzdELE1BQXFCLG1CQUFvQixTQUFRLElBQUEscUJBQWEsRUFBQztJQUMzRCxVQUFVLEVBQVYsbUJBQVU7SUFDVixNQUFNLEVBQU4sZUFBTTtJQUNOLGFBQWEsRUFBYixzQkFBYTtDQUNoQixDQUFDO0lBS0UsWUFBWSxFQUFFLHFCQUFxQixFQUFFLGNBQWMsRUFBd0IsRUFBRSxPQUE0QjtRQUNyRyxhQUFhO1FBQ2IsS0FBSyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUE7UUFDbkIsSUFBSSxDQUFDLHNCQUFzQixHQUFHLHFCQUFxQixDQUFBO1FBQ25ELElBQUksQ0FBQyxlQUFlLEdBQUcsY0FBYyxDQUFBO1FBQ3JDLElBQUksQ0FBQyxRQUFRLEdBQUc7WUFDWixHQUFHLHFDQUE2QjtZQUNoQyxHQUFHLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztTQUNyQixDQUFBO0lBQ0wsQ0FBQztJQUVELFVBQVU7UUFDTixPQUFPO1lBQ0gsR0FBRyxxQ0FBNkI7WUFDaEMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDO1NBQzNCLENBQUE7SUFDTCxDQUFDO0lBSUssQUFBTixLQUFLLENBQUMsbUJBQW1CLENBQ3JCLEtBQTZCLEVBQ1osYUFBc0M7UUFFdkQsSUFBSSxhQUFhLEdBQWlELElBQUksQ0FBQTtRQUN0RSxJQUFJLGVBQWUsR0FBdUMsSUFBSSxDQUFBO1FBRTlELElBQUksQ0FBQztZQUNELGFBQWEsR0FBRyxNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FDM0MsRUFBRSxJQUFJLEVBQUUs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
394
+ ], PayoutModuleService.prototype, "processPayoutReversal_", null);
395
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5b3V0LW1vZHVsZS1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvcGF5b3V0L3NlcnZpY2VzL3BheW91dC1tb2R1bGUtc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBLHFEQU9rQztBQUNsQywyQ0FzQndCO0FBRXhCLHNDQUtrQjtBQWlCbEIsTUFBcUIsbUJBQ2pCLFNBQVEsSUFBQSxxQkFBYSxFQUtsQjtJQUNDLFVBQVUsRUFBVixtQkFBVTtJQUNWLE1BQU0sRUFBTixlQUFNO0lBQ04sYUFBYSxFQUFiLHNCQUFhO0lBQ2IsY0FBYyxFQUFkLHVCQUFjO0NBQ2pCLENBQUM7SUFVRixZQUFZLEVBQUUscUJBQXFCLEVBQUUsY0FBYyxFQUF3QixFQUFFLE9BQTRCO1FBQ3JHLGFBQWE7UUFDYixLQUFLLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQTtRQUNuQixJQUFJLENBQUMsc0JBQXNCLEdBQUcscUJBQXFCLENBQUE7UUFDbkQsSUFBSSxDQUFDLGVBQWUsR0FBRyxjQUFjLENBQUE7UUFDckMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFBLGtDQUEwQixFQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3ZELENBQUM7SUFFRCxVQUFVO1FBQ04sT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFBO0lBQ3hCLENBQUM7SUFJSyxBQUFOLEtBQUssQ0FBQyxtQkFBbUIsQ0FDckIsS0FBNkIsRUFDWixhQUF5QztRQUUxRCxNQUFNLGFBQWEsR0FBRyxNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FDakQsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksSUFBSSxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQW1DLEVBQUUsRUFDOUYsYUFBYSxDQUNoQixDQUFBO1FBRUQsSUFBSSxlQUE4QixDQUFBO1FBQ2xDLElBQUksQ0FBQztZQUNELGVBQWUsR0FBRyxNQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxhQUFhLENBQzdELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUN0RCxDQUFBO1FBQ0wsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDYixNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLGFBQWEsQ0FBQyxDQUFBO1lBQ2hFLE1BQU0sS0FBSyxDQUFBO1FBQ2YsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixDQUMzQyxFQUFFLEVBQUUsRUFBRSxhQUFhLENBQUMsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDLGVBQWUsQ0FBQyxFQUFFLEVBQzdFLGFBQWEsQ0FDaEIsQ0FBQTtRQUVELE9BQU8sTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBbUIsT0FBTyxDQUFDLENBQUE7SUFDMUUsQ0FBQztJQUlLLEFBQU4sS0FBSyxDQUFDLGlCQUFpQixDQUNuQixTQUFpQixFQUNBLGFBQXlDO1FBRTFELE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLHFCQUFxQixDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsYUFBYSxDQUFDLENBQUE7UUFFOUUsTUFBTSxlQUFlLEdBQUcsTUFBTSxJQUFJLENBQUMsc0JBQXNCLENBQUMsZUFBZSxDQUFDO1lBQ3RFLE9BQU8sRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDO1NBQzdDLENBQUMsQ0FBQTtRQUVGLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixDQUMzQztZQUNJLEVBQUUsRUFBRSxTQUFTO1lBQ2IsR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQUMsZUFBZSxDQUFDO1lBQ25ELEdBQUcsQ0FBQyxlQUFlLENBQUMsaUJBQWlCO2dCQUNqQyxDQUFDLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsMEJBQTBCLEVBQUUsSUFBSSxFQUFFO2dCQUM5RCxDQUFDLENBQUMsRUFBRSxDQUFDO1NBQ1osRUFDRCxhQUFhLENBQ2hCLENBQUE7UUFFRCxPQUFPLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQW1CLE9BQU8sQ0FBQyxDQUFBO0lBQzFFLENBQUM7SUFJSyxBQUFOLEtBQUssQ0FBQyxtQkFBbUIsQ0FDckIsU0FBaUIsRUFDQSxhQUF5QztRQUUxRCxNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFLGFBQWEsQ0FBQyxDQUFBO1FBRXpHLElBQUksT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sSUFBSSxDQUFDLHNCQUFzQixDQUFDLGFBQWEsQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQ25HLENBQUM7UUFFRCxJQUFJLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNyQixNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxhQUFhLENBQUMsQ0FBQTtRQUN0RSxDQUFDO1FBQ0QsTUFBTSxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQyxDQUFBO0lBQzdELENBQUM7SUFJSyxBQUFOLEtBQUssQ0FBQyxnQkFBZ0IsQ0FDbEIsS0FBMEIsRUFDVCxhQUF5QztRQUUxRCxNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxxQkFBcUIsQ0FDNUMsS0FBSyxDQUFDLFVBQVUsRUFDaEIsRUFBRSxTQUFTLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUM3QixhQUFhLENBQ2hCLENBQUE7UUFFRCxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsaUJBQWlCO1lBQ3ZDLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxlQUFlLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDbkcsQ0FBQyxDQUFDLElBQUksQ0FBQTtRQUVWLElBQUksSUFBNkIsQ0FBQTtRQUNqQyxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ1osSUFBSSxHQUFHLEVBQUUsR0FBRyxTQUFTLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxTQUFTLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsQ0FBQyxVQUFVLElBQUksSUFBSSxFQUFFLENBQUE7UUFDN0csQ0FBQzthQUFNLENBQUM7WUFDSixNQUFNLEtBQUssR0FDUCxLQUFLLENBQUMsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQztnQkFDeEQsQ0FBQyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsRUFBRTtnQkFDakMsQ0FBQyxDQUFFLE9BQU8sQ0FBQyxnQkFBMkIsQ0FBQTtZQUM5QyxJQUFJLEtBQUssS0FBSyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztnQkFDckMsTUFBTSxJQUFJLENBQUMsb0JBQW9CLENBQzNCLEVBQUUsRUFBRSxFQUFFLE9BQU8sQ0FBQyxFQUFFLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLDBCQUEwQixFQUFFLElBQUksSUFBSSxFQUFFLEVBQUUsRUFDbkYsYUFBYSxDQUNoQixDQUFBO1lBQ0wsQ0FBQztZQUVELE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLHNCQUFzQixDQUFDLGdCQUFnQixDQUFDO2dCQUM1RCxPQUFPLEVBQUUsRUFBRSxHQUFHLEtBQUssQ0FBQyxPQUFPLEVBQUUsZUFBZSxFQUFFLEtBQUssQ0FBQyxVQUFVLEVBQUU7Z0JBQ2hFLElBQUksRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUU7Z0JBQ3hDLE9BQU8sRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDO2dCQUMxQyxXQUFXLEVBQ04sS0FBSyxDQUFDLElBQUksRUFBRSxXQUFrQztvQkFDL0MsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxjQUFjLG9DQUFvQyxLQUFLLEVBQUU7Z0JBQ3pGLFVBQVUsRUFBRyxLQUFLLENBQUMsSUFBSSxFQUFFLFVBQWlDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsU0FBUzthQUNuRyxDQUFDLENBQUE7WUFDRixJQUFJLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLEVBQUUsQ0FBQTtRQUNuRyxDQUFDO1FBRUQsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLFVBQVU7WUFDakMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxFQUFFLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLGFBQWEsQ0FBQztZQUNsRixDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQ3hCO2dCQUNJLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVTtnQkFDNUIsSUFBSTtnQkFDSixPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBbUM7YUFDckUsRUFDRCxhQUFhLENBQ2hCLENBQUE7UUFFUCxPQUFPLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQWdCLFVBQVUsQ0FBQyxDQUFBO0lBQzFFLENBQUM7SUFJSyxBQUFOLEtBQUssQ0FBQyxhQUFhLENBQ2YsUUFBZ0IsRUFDQyxhQUF5QztRQUUxRCxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsYUFBYSxDQUFDLENBQUE7UUFFOUUsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNWLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLDBCQUEwQixDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQTtZQUNyRSxNQUFNLElBQUksQ0FBQyxhQUFhLENBQ3BCLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxPQUFPLEVBQUUsR0FBRyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFDMUYsYUFBYSxDQUNoQixDQUFBO1FBQ0wsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFLGFBQWEsQ0FBQyxDQUFBO1FBQ3RFLE9BQU8sTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBWSxPQUFPLENBQUMsQ0FBQTtJQUNuRSxDQUFDO0lBSUssQUFBTixLQUFLLENBQUMscUJBQXFCLENBQ3ZCLFVBQWtCLEVBQ0QsYUFBeUM7UUFFMUQsTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxVQUFVLEVBQUUsYUFBYSxDQUFDLENBQUE7UUFFMUYsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNWLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGtDQUFrQyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQTtZQUMvRSxNQUFNLElBQUksQ0FBQyxxQkFBcUIsQ0FDNUIsRUFBRSxFQUFFLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLE9BQU8sRUFBRSxHQUFHLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUM5RixhQUFhLENBQ2hCLENBQUE7UUFDTCxDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsc0JBQXNCLENBQUMsVUFBVSxFQUFFLEVBQUUsRUFBRSxhQUFhLENBQUMsQ0FBQTtRQUNoRixPQUFPLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQW9CLE9BQU8sQ0FBQyxDQUFBO0lBQzNFLENBQUM7SUFFRCxLQUFLLENBQUMsdUJBQXVCLENBQUMsS0FBK0I7UUFDekQsT0FBTyxNQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUMzRSxDQUFDO0lBR2UsQUFBTixLQUFLLENBQUMsY0FBYyxDQUMxQixRQUFnQixFQUNDLGdCQUEyQyxFQUFFO1FBRTlELE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLGFBQWEsQ0FBQyxDQUFBO1FBRXRELE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLGFBQWEsQ0FBQyxDQUFBO1FBQzdGLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDcEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUE7UUFDcEMsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDekQsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUNwQixFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxvQkFBWSxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLE9BQU8sRUFBRSxFQUFFLEVBQ2hHLGFBQWEsQ0FDaEIsQ0FBQTtRQUVELE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUE7SUFDOUIsQ0FBQztJQUdlLEFBQU4sS0FBSyxDQUFDLHNCQUFzQixDQUNsQyxVQUFrQixFQUNELGdCQUEyQyxFQUFFO1FBRTlELE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsYUFBYSxDQUFDLENBQUE7UUFFakUsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsc0JBQXNCLENBQUMsVUFBVSxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxhQUFhLENBQUMsQ0FBQTtRQUN4RyxJQUFJLENBQUMsbUJBQW1CLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ3RFLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFBO1FBQ3RDLENBQUM7UUFFRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzdELE1BQU0sSUFBSSxDQUFDLHFCQUFxQixDQUM1QjtZQUNJLEVBQUUsRUFBRSxRQUFRLENBQUMsRUFBRTtZQUNmLE1BQU0sRUFBRSxvQkFBWSxDQUFDLFVBQVU7WUFDL0IsSUFBSSxFQUFFLEVBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxPQUFPLEVBQUU7U0FDakQsRUFDRCxhQUFhLENBQ2hCLENBQUE7UUFFRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFBO0lBQ2hDLENBQUM7SUFFRCx1RkFBdUY7SUFDN0UsS0FBSyxDQUFDLDBCQUEwQixDQUN0QyxNQUFpQixFQUNqQixPQUFvQztRQUVwQyxNQUFNLE1BQU0sR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsY0FBYyxJQUFJLElBQUksQ0FBeUQsQ0FBQTtRQUU1RyxJQUFJLENBQUM7WUFDRCxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxZQUFZLENBQUM7Z0JBQzVELE9BQU8sRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7Z0JBQ3ZELE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTTtnQkFDckIsYUFBYSxFQUFFLE1BQU0sQ0FBQyxhQUFhO2dCQUNuQyxjQUFjLEVBQUUsTUFBTTtnQkFDdEIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxRQUFRO2dCQUN0QixRQUFRLEVBQUU7b0JBQ04sU0FBUyxFQUFFLE1BQU0sQ0FBQyxFQUFFO29CQUNwQixHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7aUJBQzVEO2dCQUNELE9BQU8sRUFBRSxFQUFFLGVBQWUsRUFBRSxPQUFPLENBQUMsZUFBZSxFQUFFO2FBQ3hELENBQUMsQ0FBQTtZQUVGLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQzdDLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2IsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDdkMsQ0FBQztJQUNMLENBQUM7SUFFUyxLQUFLLENBQUMsa0NBQWtDLENBQzlDLFFBQTJCLEVBQzNCLE9BQW9DO1FBRXBDLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUFtQixDQUFBO1FBQzNDLE1BQU0sUUFBUSxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxRQUFRLElBQUksRUFBRSxDQUE0QixDQUFBO1FBRXpFLElBQUksQ0FBQztZQUNELE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLHNCQUFzQixDQUFDLGFBQWEsQ0FBQztnQkFDN0QsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLFFBQVEsQ0FBQyxFQUFZLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtnQkFDckQsTUFBTSxFQUFFLFFBQVEsQ0FBQyxNQUFNO2dCQUN2QixhQUFhLEVBQUUsTUFBTSxDQUFDLGFBQWE7Z0JBQ25DLFFBQVEsRUFBRTtvQkFDTixTQUFTLEVBQUUsTUFBTSxDQUFDLEVBQUU7b0JBQ3BCLGtCQUFrQixFQUFFLFFBQVEsQ0FBQyxFQUFFO29CQUMvQixHQUFHLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7aUJBQ25FO2dCQUNELE9BQU8sRUFBRSxFQUFFLGVBQWUsRUFBRSxPQUFPLENBQUMsZUFBZSxFQUFFO2FBQ3hELENBQUMsQ0FBQTtZQUVGLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQzdDLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2IsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDdkMsQ0FBQztJQUNMLENBQUM7SUFFUyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQWEsRUFBRSxFQUFVLEVBQUUsYUFBd0M7UUFDeEYsMEVBQTBFO1FBQzFFLG1EQUFtRDtRQUNuRCxNQUFNLElBQUksR0FBRyxhQUFhLENBQUMsa0JBQWtCLEVBQUUscUJBQXFCLEVBQUUsQ0FBQTtRQUN0RSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDUixNQUFNLElBQUksbUJBQVcsQ0FDakIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQ2xDLGNBQWMsS0FBSyxJQUFJLEVBQUUsaUNBQWlDLENBQzdELENBQUE7UUFDTCxDQUFDO1FBRUQsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLCtCQUErQixDQUFDLENBQUE7UUFDL0MsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDOUQsQ0FBQztJQUVEOzs7O09BSUc7SUFDTyxZQUFZLENBQUMsRUFBVSxFQUFFLElBQW9DO1FBQ25FLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxJQUFJLEVBQUUsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUNoRCxNQUFNLElBQUksR0FBRyxJQUFJLEVBQUUsZUFBNEMsQ0FBQTtRQUUvRCxPQUFPO1lBQ0gsUUFBUTtZQUNSLGVBQWUsRUFBRSxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLFFBQVEsRUFBRSxDQUFDO1NBQ3ZFLENBQUE7SUFDTCxDQUFDO0lBRVMsbUJBQW1CLENBQUMsUUFBc0I7UUFDaEQsT0FBTztZQUNILE1BQU0sRUFBRSxRQUFRLENBQUMsTUFBTTtZQUN2QixhQUFhLEVBQUUsSUFBSTtZQUNuQixJQUFJLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFO1NBQ2pGLENBQUE7SUFDTCxDQUFDO0lBRVMsZ0JBQWdCLENBQUMsS0FBYztRQUNyQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDM0MsTUFBTSxPQUFPLEdBQUcsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBRXRFLE9BQU87WUFDSCxNQUFNLEVBQUUsSUFBSSxLQUFLLCtCQUF1QixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsb0JBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLG9CQUFZLENBQUMsTUFBTTtZQUMzRixhQUFhLEVBQUUsMEJBQWtCLENBQUMsY0FBYztZQUNoRCxJQUFJLEVBQUU7Z0JBQ0YsYUFBYSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLG1CQUFtQixDQUFDLHdCQUF3QixDQUFDO2dCQUM3RSxHQUFHLENBQUMsSUFBSSxLQUFLLCtCQUF1QixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQzthQUNqRjtTQUNKLENBQUE7SUFDTCxDQUFDO0lBRUQsOEVBQThFO0lBQ3BFLGtCQUFrQixDQUFDLEtBQWM7UUFDdkMsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQXdDLENBQUE7UUFDNUUsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSywrQkFBdUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUMzRCxPQUFPLCtCQUF1QixDQUFDLEtBQUssQ0FBQTtRQUN4QyxDQUFDO1FBRUQsT0FBTyxJQUFJLEtBQUssK0JBQXVCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQywrQkFBdUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLCtCQUF1QixDQUFDLE9BQU8sQ0FBQTtJQUN2SCxDQUFDO0lBRVMsdUJBQXVCLENBQUMsT0FBeUI7UUFDdkQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLE9BQU8sQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1lBQ25FLE9BQU8sS0FBSyxDQUFBO1FBQ2hCLENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBRyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtRQUN2RSxPQUFPLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQTtJQUNsRixDQUFDO0lBRVMsd0JBQXdCO1FBQzlCLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLElBQUksVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDeEQsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7YUFDakQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQ2pCLENBQUM7SUFFUyxtQkFBbUIsQ0FBQyxPQUF3QjtRQUNsRCxPQUFPO1lBQ0gsRUFBRSxFQUFFLE9BQU8sQ0FBQyxXQUFXLElBQUksQ0FBRSxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQXlCLElBQUksRUFBRSxDQUFDO1lBQzNFLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUE0QjtTQUN4RCxDQUFBO0lBQ0wsQ0FBQztJQUVTLHFCQUFxQixDQUFDLFNBQWlCLEVBQUUsS0FBNkI7UUFDNUUsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQTtRQUMzQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxPQUFPLElBQUksTUFBTSxDQUFBO1FBRTFELE9BQU87WUFDSCxPQUFPLEVBQUUsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLEdBQUcsS0FBSyxDQUFDLE9BQU8sRUFBRTtZQUN6RCxJQUFJLEVBQUUsRUFBRSxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRTtZQUM5QyxPQUFPLEVBQ0YsS0FBSyxDQUFDLElBQUksRUFBRSxPQUE4QjtnQkFDM0MsTUFBTSxFQUFFLFlBQVk7Z0JBQ3BCLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLGNBQWM7Z0JBQ3ZDLFNBQVM7WUFDYixhQUFhLEVBQ1IsS0FBSyxDQUFDLElBQUksRUFBRSxhQUFzRDtnQkFDbkUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQzNFLGdCQUFnQixFQUFFLE9BQU87Z0JBQ3JCLENBQUMsQ0FBQztvQkFDSSxJQUFJLEVBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxhQUFvQyxJQUFJLE1BQU0sRUFBRSxJQUFJLElBQUksSUFBSTtvQkFDL0UsR0FBRyxFQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsT0FBOEIsSUFBSSxNQUFNLEVBQUUsV0FBVyxJQUFJLElBQUk7b0JBQy9FLGFBQWEsRUFBRyxLQUFLLENBQUMsSUFBSSxFQUFFLGFBQW9DLElBQUksTUFBTSxFQUFFLEtBQUssSUFBSSxJQUFJO29CQUN6RixhQUFhLEVBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxhQUFvQyxJQUFJLE1BQU0sRUFBRSxLQUFLLElBQUksSUFBSTtpQkFDNUY7Z0JBQ0gsQ0FBQyxDQUFDLFNBQVM7WUFDZixRQUFRLEVBQUU7Z0JBQ04sVUFBVSxFQUFFLFNBQVM7Z0JBQ3JCLEdBQUcsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQzthQUNsRDtTQUNKLENBQUE7SUFDTCxDQUFDO0lBRVMsMEJBQTBCLENBQUMsT0FBc0I7UUFDdkQsT0FBTztZQUNILFdBQVcsRUFBRSxPQUFPLENBQUMsRUFBRTtZQUN2QixNQUFNLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQztZQUMxQyxVQUFVLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLGVBQWUsQ0FBQztZQUNoRixlQUFlLEVBQUUsT0FBTyxDQUFDLGVBQWU7WUFDeEMsZUFBZSxFQUFFLE9BQU8sQ0FBQyxlQUFlO1lBQ3hDLGlCQUFpQixFQUFFLE9BQU8sQ0FBQyxpQkFBaUI7WUFDNUMsZUFBZSxFQUFFLE9BQU8sQ0FBQyxlQUFlO1lBQ3hDLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtZQUNsQixjQUFjLEVBQUUsSUFBSSxJQUFJLEVBQUU7U0FDN0IsQ0FBQTtJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDTyxnQkFBZ0IsQ0FDdEIsWUFBMEQsRUFDMUQsY0FBeUM7UUFFekMsSUFBSSxZQUFZLEVBQUUsYUFBYSxFQUFFLE1BQU0sSUFBSSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQ3hFLE9BQU8sdUJBQWUsQ0FBQyxrQkFBa0IsQ0FBQTtRQUM3QyxDQUFDO1FBRUQsSUFBSSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDN0MsT0FBTyx1QkFBZSxDQUFDLGdCQUFnQixDQUFBO1FBQzNDLENBQUM7UUFFRCxJQUFJLGNBQWMsRUFBRSxVQUFVLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUN6QyxPQUFPLHVCQUFlLENBQUMsT0FBTyxDQUFBO1FBQ2xDLENBQUM7UUFFRCxPQUFPLGNBQWMsQ0FBQyxDQUFDLENBQUMsdUJBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsdUJBQWUsQ0FBQyxRQUFRLENBQUE7SUFDdkYsQ0FBQztJQUVTLG9CQUFvQixDQUFDLE9BQXNCO1FBQ2pELElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSywyQkFBbUIsQ0FBQyxRQUFRLElBQUksT0FBTyxDQUFDLGVBQWUsRUFBRSxVQUFVLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUNyRyxPQUFPLDJCQUFtQixDQUFDLFFBQVEsQ0FBQTtRQUN2QyxDQUFDO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzdCLE9BQU8sMkJBQW1CLENBQUMsT0FBTyxDQUFBO1FBQ3RDLENBQUM7UUFFRCxJQUFJLE9BQU8sQ0FBQyxlQUFlLElBQUksT0FBTyxDQUFDLGVBQWUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUNqRixPQUFPLDJCQUFtQixDQUFDLE1BQU0sQ0FBQTtRQUNyQyxDQUFDO1FBRUQsT0FBTywyQkFBbUIsQ0FBQyxVQUFVLENBQUE7SUFDekMsQ0FBQzs7QUF6Y3lCLHdDQUFvQixHQUFHLENBQUMsb0JBQVksQ0FBQyxPQUFPLEVBQUUsb0JBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQTtBQUNsRSw0Q0FBd0IsR0FBRyxJQUFJLENBQUE7a0JBZnhDLG1CQUFtQjtBQW1DOUI7SUFGTCxJQUFBLHFCQUFhLEdBQUU7SUFDZixJQUFBLGtCQUFVLEdBQUU7SUFHUixXQUFBLElBQUEscUJBQWEsR0FBRSxDQUFBOzs7OzhEQXVCbkI7QUFJSztJQUZMLElBQUEscUJBQWEsR0FBRTtJQUNmLElBQUEsa0JBQVUsR0FBRTtJQUdSLFdBQUEsSUFBQSxxQkFBYSxHQUFFLENBQUE7Ozs7NERBb0JuQjtBQUlLO0lBRkwsSUFBQSxxQkFBYSxHQUFFO0lBQ2YsSUFBQSxrQkFBVSxHQUFFO0lBR1IsV0FBQSxJQUFBLHFCQUFhLEdBQUUsQ0FBQTs7Ozs4REFZbkI7QUFJSztJQUZMLElBQUEscUJBQWEsR0FBRTtJQUNmLElBQUEsa0JBQVUsR0FBRTtJQUdSLFdBQUEsSUFBQSxxQkFBYSxHQUFFLENBQUE7Ozs7MkRBbURuQjtBQUlLO0lBRkwsSUFBQSxxQkFBYSxHQUFFO0lBQ2YsSUFBQSxrQkFBVSxHQUFFO0lBR1IsV0FBQSxJQUFBLHFCQUFhLEdBQUUsQ0FBQTs7Ozt3REFjbkI7QUFJSztJQUZMLElBQUEscUJBQWEsR0FBRTtJQUNmLElBQUEsa0JBQVUsR0FBRTtJQUdSLFdBQUEsSUFBQSxxQkFBYSxHQUFFLENBQUE7Ozs7Z0VBY25CO0FBT2U7SUFEZixJQUFBLGdDQUF3QixHQUFFO0lBR3RCLFdBQUEsSUFBQSxxQkFBYSxHQUFFLENBQUE7Ozs7eURBZ0JuQjtBQUdlO0lBRGYsSUFBQSxnQ0FBd0IsR0FBRTtJQUd0QixXQUFBLElBQUEscUJBQWEsR0FBRSxDQUFBOzs7O2lFQW9CbkIifQ==
@@ -1,7 +1,6 @@
1
1
  import { Constructor } from "@medusajs/framework/types";
2
- import { IPayoutProvider, CreatePayoutAccountInput, CreatePayoutAccountResponse, CreatePayoutInput, CreatePayoutResponse, CreateOnboardingInput, CreateOnboardingResponse, PayoutWebhookActionInput, PayoutWebhookResult } from "@mercurjs/types";
3
- export declare const PayoutProviderIdentifierRegistrationName = "payout_providers_identifier";
4
- export declare const PayoutProviderRegistrationPrefix = "payout_";
2
+ import { AccountOutput, CreateAccountInput, CreateLoginLinkInput, CreateOnboardingInput, CreatePayoutInput, DeleteAccountInput, IPayoutProvider, LinkOutput, ListAccountsInput, ListAccountsOutput, PayoutOutput, PayoutWebhookActionInput, PayoutWebhookResult, RetrieveAccountInput, ReversePayoutInput } from "@mercurjs/types";
3
+ export declare const PayoutProviderRegistrationPrefix = "pop_";
5
4
  type InjectedDependencies = {
6
5
  [key: `${typeof PayoutProviderRegistrationPrefix}${string}`]: IPayoutProvider;
7
6
  };
@@ -9,9 +8,14 @@ export default class PayoutProviderService {
9
8
  protected readonly payoutProvider_: IPayoutProvider;
10
9
  constructor(container: InjectedDependencies);
11
10
  static getRegistrationIdentifier(providerClass: Constructor<IPayoutProvider>, optionName?: string): string;
12
- createPayoutAccount(data: CreatePayoutAccountInput): Promise<CreatePayoutAccountResponse>;
13
- createPayout(data: CreatePayoutInput): Promise<CreatePayoutResponse>;
14
- createOnboarding(input: CreateOnboardingInput): Promise<CreateOnboardingResponse>;
15
- getWebhookActionAndData(payload: PayoutWebhookActionInput): Promise<PayoutWebhookResult>;
11
+ createAccount(input: CreateAccountInput): Promise<AccountOutput>;
12
+ retrieveAccount(input: RetrieveAccountInput): Promise<AccountOutput>;
13
+ deleteAccount(input: DeleteAccountInput): Promise<void>;
14
+ listAccounts(input: ListAccountsInput): Promise<ListAccountsOutput | null>;
15
+ createOnboarding(input: CreateOnboardingInput): Promise<LinkOutput>;
16
+ createLoginLink(input: CreateLoginLinkInput): Promise<LinkOutput | null>;
17
+ createPayout(input: CreatePayoutInput): Promise<PayoutOutput>;
18
+ reversePayout(input: ReversePayoutInput): Promise<PayoutOutput>;
19
+ getWebhookActionAndData(input: PayoutWebhookActionInput): Promise<PayoutWebhookResult>;
16
20
  }
17
21
  export {};
@@ -1,32 +1,52 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PayoutProviderRegistrationPrefix = exports.PayoutProviderIdentifierRegistrationName = void 0;
3
+ exports.PayoutProviderRegistrationPrefix = void 0;
4
4
  const utils_1 = require("@medusajs/framework/utils");
5
- exports.PayoutProviderIdentifierRegistrationName = "payout_providers_identifier";
6
- exports.PayoutProviderRegistrationPrefix = "payout_";
5
+ exports.PayoutProviderRegistrationPrefix = "pop_";
7
6
  class PayoutProviderService {
8
7
  constructor(container) {
9
- const payoutProviderKeys = Object.keys(container).filter((k) => k.startsWith(exports.PayoutProviderRegistrationPrefix));
10
- if (payoutProviderKeys.length !== 1) {
8
+ const keys = Object.keys(container).filter((key) => key.startsWith(exports.PayoutProviderRegistrationPrefix));
9
+ if (keys.length !== 1) {
11
10
  throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Payout module should be initialized with exactly one provider`);
12
11
  }
13
- this.payoutProvider_ = container[payoutProviderKeys[0]];
12
+ this.payoutProvider_ = container[keys[0]];
14
13
  }
15
14
  static getRegistrationIdentifier(providerClass, optionName) {
16
15
  return `${providerClass.identifier}_${optionName}`;
17
16
  }
18
- async createPayoutAccount(data) {
19
- return await this.payoutProvider_.createPayoutAccount(data);
17
+ async createAccount(input) {
18
+ return await this.payoutProvider_.createAccount(input);
20
19
  }
21
- async createPayout(data) {
22
- return await this.payoutProvider_.createPayout(data);
20
+ async retrieveAccount(input) {
21
+ return await this.payoutProvider_.retrieveAccount(input);
22
+ }
23
+ async deleteAccount(input) {
24
+ if (this.payoutProvider_.deleteAccount) {
25
+ await this.payoutProvider_.deleteAccount(input);
26
+ }
27
+ }
28
+ async listAccounts(input) {
29
+ return this.payoutProvider_.listAccounts
30
+ ? await this.payoutProvider_.listAccounts(input)
31
+ : null;
23
32
  }
24
33
  async createOnboarding(input) {
25
34
  return await this.payoutProvider_.createOnboarding(input);
26
35
  }
27
- async getWebhookActionAndData(payload) {
28
- return await this.payoutProvider_.getWebhookActionAndData(payload);
36
+ async createLoginLink(input) {
37
+ return this.payoutProvider_.createLoginLink
38
+ ? await this.payoutProvider_.createLoginLink(input)
39
+ : null;
40
+ }
41
+ async createPayout(input) {
42
+ return await this.payoutProvider_.createPayout(input);
43
+ }
44
+ async reversePayout(input) {
45
+ return await this.payoutProvider_.reversePayout(input);
46
+ }
47
+ async getWebhookActionAndData(input) {
48
+ return await this.payoutProvider_.getWebhookActionAndData(input);
29
49
  }
30
50
  }
31
51
  exports.default = PayoutProviderService;
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXItc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL3BheW91dC9zZXJ2aWNlcy9wcm92aWRlci1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFEQUF1RDtBQWMxQyxRQUFBLHdDQUF3QyxHQUNuRCw2QkFBNkIsQ0FBQTtBQUVsQixRQUFBLGdDQUFnQyxHQUFHLFNBQVMsQ0FBQTtBQU16RCxNQUFxQixxQkFBcUI7SUFHeEMsWUFBWSxTQUErQjtRQUN6QyxNQUFNLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDN0QsQ0FBQyxDQUFDLFVBQVUsQ0FBQyx3Q0FBZ0MsQ0FBQyxDQUMvQyxDQUFBO1FBRUQsSUFBSSxrQkFBa0IsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDcEMsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsK0RBQStELENBQ2hFLENBQUE7UUFDSCxDQUFDO1FBRUQsSUFBSSxDQUFDLGVBQWUsR0FBRyxTQUFTLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUN6RCxDQUFDO0lBRUQsTUFBTSxDQUFDLHlCQUF5QixDQUM5QixhQUEyQyxFQUMzQyxVQUFtQjtRQUVuQixPQUFPLEdBQUksYUFBcUIsQ0FBQyxVQUFVLElBQUksVUFBVSxFQUFFLENBQUE7SUFDN0QsQ0FBQztJQUVELEtBQUssQ0FBQyxtQkFBbUIsQ0FDdkIsSUFBOEI7UUFFOUIsT0FBTyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDN0QsQ0FBQztJQUVELEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBdUI7UUFDeEMsT0FBTyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ3RELENBQUM7SUFFRCxLQUFLLENBQUMsZ0JBQWdCLENBQ3BCLEtBQTRCO1FBRTVCLE9BQU8sTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQzNELENBQUM7SUFFRCxLQUFLLENBQUMsdUJBQXVCLENBQzNCLE9BQWlDO1FBRWpDLE9BQU8sTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3BFLENBQUM7Q0FDRjtBQTlDRCx3Q0E4Q0MifQ==
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXItc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL3BheW91dC9zZXJ2aWNlcy9wcm92aWRlci1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFEQUF1RDtBQW9CMUMsUUFBQSxnQ0FBZ0MsR0FBRyxNQUFNLENBQUE7QUFNdEQsTUFBcUIscUJBQXFCO0lBR3hDLFlBQVksU0FBK0I7UUFDekMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUNqRCxHQUFHLENBQUMsVUFBVSxDQUFDLHdDQUFnQyxDQUFDLENBQ2pELENBQUE7UUFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdEIsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsK0RBQStELENBQ2hFLENBQUE7UUFDSCxDQUFDO1FBRUQsSUFBSSxDQUFDLGVBQWUsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDM0MsQ0FBQztJQUVELE1BQU0sQ0FBQyx5QkFBeUIsQ0FDOUIsYUFBMkMsRUFDM0MsVUFBbUI7UUFFbkIsT0FBTyxHQUFJLGFBQW1ELENBQUMsVUFBVSxJQUFJLFVBQVUsRUFBRSxDQUFBO0lBQzNGLENBQUM7SUFFRCxLQUFLLENBQUMsYUFBYSxDQUFDLEtBQXlCO1FBQzNDLE9BQU8sTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUN4RCxDQUFDO0lBRUQsS0FBSyxDQUFDLGVBQWUsQ0FBQyxLQUEyQjtRQUMvQyxPQUFPLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDMUQsQ0FBQztJQUVELEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBeUI7UUFDM0MsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3ZDLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDakQsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQXdCO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZO1lBQ3RDLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQztZQUNoRCxDQUFDLENBQUMsSUFBSSxDQUFBO0lBQ1YsQ0FBQztJQUVELEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxLQUE0QjtRQUNqRCxPQUFPLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUMzRCxDQUFDO0lBRUQsS0FBSyxDQUFDLGVBQWUsQ0FBQyxLQUEyQjtRQUMvQyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZTtZQUN6QyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUM7WUFDbkQsQ0FBQyxDQUFDLElBQUksQ0FBQTtJQUNWLENBQUM7SUFFRCxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQXdCO1FBQ3pDLE9BQU8sTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUN2RCxDQUFDO0lBRUQsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUF5QjtRQUMzQyxPQUFPLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDeEQsQ0FBQztJQUVELEtBQUssQ0FBQyx1QkFBdUIsQ0FDM0IsS0FBK0I7UUFFL0IsT0FBTyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDbEUsQ0FBQztDQUNGO0FBcEVELHdDQW9FQyJ9