@sherwoodagent/cli 0.65.2 → 0.72.3

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 (93) hide show
  1. package/dist/{abis-4HWN2E3H.js → abis-KP7M4IPM.js} +4 -2
  2. package/dist/addresses-YDPUPGWQ.js +45 -0
  3. package/dist/{agent-AETROOEW.js → agent-6IRZUPFT.js} +10 -10
  4. package/dist/{agent-AETROOEW.js.map → agent-6IRZUPFT.js.map} +1 -1
  5. package/dist/{chat-JSSTSE4K.js → chat-G5M3OK6M.js} +37 -36
  6. package/dist/chat-G5M3OK6M.js.map +1 -0
  7. package/dist/{chunk-IL43IMOC.js → chunk-3NMJ4LUL.js} +23 -18
  8. package/dist/chunk-3NMJ4LUL.js.map +1 -0
  9. package/dist/{chunk-UBAX22KA.js → chunk-52U76TRE.js} +4 -4
  10. package/dist/chunk-52U76TRE.js.map +1 -0
  11. package/dist/{chunk-W2ZUPR3W.js → chunk-5DWB5Y7G.js} +9 -9
  12. package/dist/chunk-5DWB5Y7G.js.map +1 -0
  13. package/dist/{chunk-YZHZSBES.js → chunk-BQMOE4FJ.js} +144 -37
  14. package/dist/chunk-BQMOE4FJ.js.map +1 -0
  15. package/dist/{chunk-VYF2TXPX.js → chunk-D4SPHYXA.js} +6 -6
  16. package/dist/{chunk-UCQEEF3Z.js → chunk-FOAX5PGR.js} +6 -6
  17. package/dist/chunk-FOAX5PGR.js.map +1 -0
  18. package/dist/chunk-FOS47623.js +127 -0
  19. package/dist/chunk-FOS47623.js.map +1 -0
  20. package/dist/{chunk-2W4KGGPU.js → chunk-GSC7PVEO.js} +27 -27
  21. package/dist/chunk-GSC7PVEO.js.map +1 -0
  22. package/dist/chunk-HYUUR6SC.js +111 -0
  23. package/dist/chunk-HYUUR6SC.js.map +1 -0
  24. package/dist/{chunk-RO26TXXE.js → chunk-NWY2U753.js} +2 -2
  25. package/dist/chunk-RAITRCM7.js +308 -0
  26. package/dist/chunk-RAITRCM7.js.map +1 -0
  27. package/dist/{chunk-A6TOJEUD.js → chunk-S6XA7PK4.js} +124 -128
  28. package/dist/chunk-S6XA7PK4.js.map +1 -0
  29. package/dist/{chunk-O4G3SBCI.js → chunk-UUHWD7Y3.js} +109 -129
  30. package/dist/chunk-UUHWD7Y3.js.map +1 -0
  31. package/dist/{chunk-YJSCIQUZ.js → chunk-WECQ6NVS.js} +6 -6
  32. package/dist/chunk-WECQ6NVS.js.map +1 -0
  33. package/dist/{chunk-RHRLYVKM.js → chunk-ZYXFKVYF.js} +25 -12
  34. package/dist/chunk-ZYXFKVYF.js.map +1 -0
  35. package/dist/{client-KBBFAMEI.js → client-QN6SA76M.js} +4 -4
  36. package/dist/{config-REASKDIK.js → config-FAQO37S7.js} +10 -10
  37. package/dist/{cron-EOULYO3R.js → cron-QMLRWDJG.js} +19 -17
  38. package/dist/cron-QMLRWDJG.js.map +1 -0
  39. package/dist/{eas-K4ZBACYN.js → eas-HM2AUOEY.js} +7 -7
  40. package/dist/{governor-2CDSMSG7.js → governor-RRBTDGDX.js} +17 -13
  41. package/dist/index.js +2026 -1222
  42. package/dist/index.js.map +1 -1
  43. package/dist/{ipfs-FAYWUCS2.js → ipfs-VGWTUORE.js} +2 -2
  44. package/dist/{network-3ZU7UBDU.js → network-L6JKNYOJ.js} +7 -7
  45. package/dist/{price-LCTECRQP.js → price-AJ4JMHCT.js} +6 -6
  46. package/dist/{research-FUQOQWKK.js → research-6VEEPEPP.js} +22 -22
  47. package/dist/research-6VEEPEPP.js.map +1 -0
  48. package/dist/research-7Z6SFPPX.js +14 -0
  49. package/dist/{session-FJB2RV2X.js → session-PURMITWE.js} +28 -28
  50. package/dist/session-PURMITWE.js.map +1 -0
  51. package/dist/{session-XAW5UIXP.js → session-XBQY7SBJ.js} +2 -2
  52. package/dist/{trade-U7H5IFH6.js → trade-YTGLGCRQ.js} +34 -34
  53. package/dist/trade-YTGLGCRQ.js.map +1 -0
  54. package/dist/vault-NIPA5JV4.js +54 -0
  55. package/dist/vault-NIPA5JV4.js.map +1 -0
  56. package/dist/{xmtp-6NJ4PW6L.js → xmtp-M32JSE4I.js} +13 -12
  57. package/dist/xmtp-M32JSE4I.js.map +1 -0
  58. package/package.json +4 -3
  59. package/dist/addresses-J2LMGUCT.js +0 -35
  60. package/dist/chat-JSSTSE4K.js.map +0 -1
  61. package/dist/chunk-2LRC7I33.js +0 -186
  62. package/dist/chunk-2LRC7I33.js.map +0 -1
  63. package/dist/chunk-2W4KGGPU.js.map +0 -1
  64. package/dist/chunk-A6TOJEUD.js.map +0 -1
  65. package/dist/chunk-GWMTAW6A.js +0 -494
  66. package/dist/chunk-GWMTAW6A.js.map +0 -1
  67. package/dist/chunk-IL43IMOC.js.map +0 -1
  68. package/dist/chunk-O4G3SBCI.js.map +0 -1
  69. package/dist/chunk-RHRLYVKM.js.map +0 -1
  70. package/dist/chunk-UBAX22KA.js.map +0 -1
  71. package/dist/chunk-UCQEEF3Z.js.map +0 -1
  72. package/dist/chunk-W2ZUPR3W.js.map +0 -1
  73. package/dist/chunk-YJSCIQUZ.js.map +0 -1
  74. package/dist/chunk-YZHZSBES.js.map +0 -1
  75. package/dist/cron-EOULYO3R.js.map +0 -1
  76. package/dist/research-FUQOQWKK.js.map +0 -1
  77. package/dist/research-XEXTHDT3.js +0 -14
  78. package/dist/session-FJB2RV2X.js.map +0 -1
  79. package/dist/trade-U7H5IFH6.js.map +0 -1
  80. package/dist/xmtp-6NJ4PW6L.js.map +0 -1
  81. /package/dist/{abis-4HWN2E3H.js.map → abis-KP7M4IPM.js.map} +0 -0
  82. /package/dist/{addresses-J2LMGUCT.js.map → addresses-YDPUPGWQ.js.map} +0 -0
  83. /package/dist/{chunk-VYF2TXPX.js.map → chunk-D4SPHYXA.js.map} +0 -0
  84. /package/dist/{chunk-RO26TXXE.js.map → chunk-NWY2U753.js.map} +0 -0
  85. /package/dist/{client-KBBFAMEI.js.map → client-QN6SA76M.js.map} +0 -0
  86. /package/dist/{config-REASKDIK.js.map → config-FAQO37S7.js.map} +0 -0
  87. /package/dist/{eas-K4ZBACYN.js.map → eas-HM2AUOEY.js.map} +0 -0
  88. /package/dist/{governor-2CDSMSG7.js.map → governor-RRBTDGDX.js.map} +0 -0
  89. /package/dist/{ipfs-FAYWUCS2.js.map → ipfs-VGWTUORE.js.map} +0 -0
  90. /package/dist/{network-3ZU7UBDU.js.map → network-L6JKNYOJ.js.map} +0 -0
  91. /package/dist/{price-LCTECRQP.js.map → price-AJ4JMHCT.js.map} +0 -0
  92. /package/dist/{research-XEXTHDT3.js.map → research-7Z6SFPPX.js.map} +0 -0
  93. /package/dist/{session-XAW5UIXP.js.map → session-XBQY7SBJ.js.map} +0 -0
@@ -200,6 +200,25 @@ var SYNDICATE_VAULT_ABI = [
200
200
  inputs: [],
201
201
  outputs: [{ name: "", type: "bool" }]
202
202
  },
203
+ {
204
+ name: "agentFeeBps",
205
+ type: "function",
206
+ stateMutability: "view",
207
+ inputs: [],
208
+ outputs: [{ name: "", type: "uint256" }]
209
+ },
210
+ {
211
+ name: "setAgentFeeBps",
212
+ type: "function",
213
+ stateMutability: "nonpayable",
214
+ inputs: [{ name: "bps", type: "uint256" }],
215
+ outputs: []
216
+ },
217
+ {
218
+ name: "AgentFeeUpdated",
219
+ type: "event",
220
+ inputs: [{ name: "bps", type: "uint256", indexed: false }]
221
+ },
203
222
  {
204
223
  name: "paused",
205
224
  type: "function",
@@ -244,6 +263,13 @@ var SYNDICATE_VAULT_ABI = [
244
263
  inputs: [{ name: "owner", type: "address" }],
245
264
  outputs: [{ name: "shares", type: "uint256" }]
246
265
  },
266
+ {
267
+ name: "maxDeposit",
268
+ type: "function",
269
+ stateMutability: "view",
270
+ inputs: [{ name: "receiver", type: "address" }],
271
+ outputs: [{ name: "assets", type: "uint256" }]
272
+ },
247
273
  {
248
274
  name: "redeem",
249
275
  type: "function",
@@ -570,6 +596,29 @@ var SYNDICATE_FACTORY_ABI = [
570
596
  inputs: [{ name: "subdomain", type: "string" }],
571
597
  outputs: [{ name: "", type: "bool" }]
572
598
  },
599
+ // Per-vault governor: the factory deploys one governor per vault as a
600
+ // BeaconProxy. `governorOf(vault)` replaces the removed global `governor()`.
601
+ {
602
+ name: "governorOf",
603
+ type: "function",
604
+ stateMutability: "view",
605
+ inputs: [{ name: "vault", type: "address" }],
606
+ outputs: [{ name: "", type: "address" }]
607
+ },
608
+ {
609
+ name: "beacon",
610
+ type: "function",
611
+ stateMutability: "view",
612
+ inputs: [],
613
+ outputs: [{ name: "", type: "address" }]
614
+ },
615
+ {
616
+ name: "protocolConfig",
617
+ type: "function",
618
+ stateMutability: "view",
619
+ inputs: [],
620
+ outputs: [{ name: "", type: "address" }]
621
+ },
573
622
  {
574
623
  name: "SyndicateCreated",
575
624
  type: "event",
@@ -582,6 +631,64 @@ var SYNDICATE_FACTORY_ABI = [
582
631
  ]
583
632
  }
584
633
  ];
634
+ var PROTOCOL_CONFIG_ABI = [
635
+ {
636
+ name: "protocolFeeBps",
637
+ type: "function",
638
+ stateMutability: "view",
639
+ inputs: [],
640
+ outputs: [{ name: "", type: "uint256" }]
641
+ },
642
+ {
643
+ name: "protocolFeeRecipient",
644
+ type: "function",
645
+ stateMutability: "view",
646
+ inputs: [],
647
+ outputs: [{ name: "", type: "address" }]
648
+ },
649
+ {
650
+ name: "guardianFeeBps",
651
+ type: "function",
652
+ stateMutability: "view",
653
+ inputs: [],
654
+ outputs: [{ name: "", type: "uint256" }]
655
+ },
656
+ {
657
+ name: "guardiansFeeRecipient",
658
+ type: "function",
659
+ stateMutability: "view",
660
+ inputs: [],
661
+ outputs: [{ name: "", type: "address" }]
662
+ },
663
+ {
664
+ name: "setProtocolFeeBps",
665
+ type: "function",
666
+ stateMutability: "nonpayable",
667
+ inputs: [{ name: "newProtocolFeeBps", type: "uint256" }],
668
+ outputs: []
669
+ },
670
+ {
671
+ name: "setProtocolFeeRecipient",
672
+ type: "function",
673
+ stateMutability: "nonpayable",
674
+ inputs: [{ name: "newRecipient", type: "address" }],
675
+ outputs: []
676
+ },
677
+ {
678
+ name: "setGuardianFeeBps",
679
+ type: "function",
680
+ stateMutability: "nonpayable",
681
+ inputs: [{ name: "newGuardianFeeBps", type: "uint256" }],
682
+ outputs: []
683
+ },
684
+ {
685
+ name: "setGuardiansFeeRecipient",
686
+ type: "function",
687
+ stateMutability: "nonpayable",
688
+ inputs: [{ name: "newRecipient", type: "address" }],
689
+ outputs: []
690
+ }
691
+ ];
585
692
  var L2_REGISTRY_ABI = [
586
693
  {
587
694
  name: "setText",
@@ -845,7 +952,6 @@ var SYNDICATE_GOVERNOR_ABI = [
845
952
  { name: "vault", type: "address" },
846
953
  { name: "strategy", type: "address" },
847
954
  { name: "metadataURI", type: "string" },
848
- { name: "performanceFeeBps", type: "uint256" },
849
955
  { name: "strategyDuration", type: "uint256" },
850
956
  {
851
957
  name: "executeCalls",
@@ -901,7 +1007,7 @@ var SYNDICATE_GOVERNOR_ABI = [
901
1007
  outputs: []
902
1008
  },
903
1009
  {
904
- name: "emergencySettle",
1010
+ name: "emergencySettleWithCalls",
905
1011
  type: "function",
906
1012
  stateMutability: "nonpayable",
907
1013
  inputs: [
@@ -959,7 +1065,12 @@ var SYNDICATE_GOVERNOR_ABI = [
959
1065
  { name: "executeBy", type: "uint256" },
960
1066
  { name: "executedAt", type: "uint256" },
961
1067
  { name: "state", type: "uint8" },
962
- { name: "vetoThresholdBps", type: "uint256" }
1068
+ { name: "vetoThresholdBps", type: "uint256" },
1069
+ { name: "snapshotProtocolFeeBps", type: "uint256" },
1070
+ { name: "snapshotProtocolFeeRecipient", type: "address" },
1071
+ { name: "snapshotGuardianFeeBps", type: "uint256" },
1072
+ { name: "snapshotGuardiansFeeRecipient", type: "address" },
1073
+ { name: "selfManagesFees", type: "bool" }
963
1074
  ]
964
1075
  }
965
1076
  ]
@@ -1023,56 +1134,46 @@ var SYNDICATE_GOVERNOR_ABI = [
1023
1134
  }
1024
1135
  ]
1025
1136
  },
1026
- {
1027
- name: "getRegisteredVaults",
1028
- type: "function",
1029
- stateMutability: "view",
1030
- inputs: [],
1031
- outputs: [{ name: "", type: "address[]" }]
1032
- },
1137
+ // Per-vault governor: each governor serves exactly one vault, so the
1138
+ // active-proposal / cooldown / open-count views take no vault argument.
1033
1139
  {
1034
1140
  name: "getActiveProposal",
1035
1141
  type: "function",
1036
1142
  stateMutability: "view",
1037
- inputs: [{ name: "vault", type: "address" }],
1143
+ inputs: [],
1038
1144
  outputs: [{ name: "", type: "uint256" }]
1039
1145
  },
1040
1146
  {
1041
1147
  name: "getCooldownEnd",
1042
1148
  type: "function",
1043
1149
  stateMutability: "view",
1044
- inputs: [{ name: "vault", type: "address" }],
1150
+ inputs: [],
1045
1151
  outputs: [{ name: "", type: "uint256" }]
1046
1152
  },
1047
1153
  {
1048
- name: "getCapitalSnapshot",
1154
+ name: "openProposalCount",
1049
1155
  type: "function",
1050
1156
  stateMutability: "view",
1051
- inputs: [{ name: "proposalId", type: "uint256" }],
1157
+ inputs: [],
1052
1158
  outputs: [{ name: "", type: "uint256" }]
1053
1159
  },
1054
1160
  {
1055
- name: "isRegisteredVault",
1161
+ name: "vault",
1056
1162
  type: "function",
1057
1163
  stateMutability: "view",
1058
- inputs: [{ name: "vault", type: "address" }],
1059
- outputs: [{ name: "", type: "bool" }]
1060
- },
1061
- // Vault management
1062
- {
1063
- name: "addVault",
1064
- type: "function",
1065
- stateMutability: "nonpayable",
1066
- inputs: [{ name: "vault", type: "address" }],
1067
- outputs: []
1164
+ inputs: [],
1165
+ outputs: [{ name: "", type: "address" }]
1068
1166
  },
1069
1167
  {
1070
- name: "removeVault",
1168
+ name: "getCapitalSnapshot",
1071
1169
  type: "function",
1072
- stateMutability: "nonpayable",
1073
- inputs: [{ name: "vault", type: "address" }],
1074
- outputs: []
1170
+ stateMutability: "view",
1171
+ inputs: [{ name: "proposalId", type: "uint256" }],
1172
+ outputs: [{ name: "", type: "uint256" }]
1075
1173
  },
1174
+ // Per-vault governor: addVault / removeVault / isRegisteredVault /
1175
+ // getRegisteredVaults were removed — the factory deploys one governor
1176
+ // per vault (BeaconProxy) and binds it at initialize.
1076
1177
  // ── Events ──
1077
1178
  {
1078
1179
  name: "ProposalCreated",
@@ -1088,6 +1189,15 @@ var SYNDICATE_GOVERNOR_ABI = [
1088
1189
  { name: "metadataURI", type: "string", indexed: false }
1089
1190
  ]
1090
1191
  },
1192
+ {
1193
+ name: "FeeClamped",
1194
+ type: "event",
1195
+ inputs: [
1196
+ { name: "proposalId", type: "uint256", indexed: true },
1197
+ { name: "snapshotted", type: "uint256", indexed: true },
1198
+ { name: "clamped", type: "uint256", indexed: true }
1199
+ ]
1200
+ },
1091
1201
  {
1092
1202
  name: "VoteCast",
1093
1203
  type: "event",
@@ -1176,13 +1286,9 @@ var SYNDICATE_GOVERNOR_ABI = [
1176
1286
  inputs: [{ name: "proposalId", type: "uint256" }],
1177
1287
  outputs: []
1178
1288
  },
1179
- {
1180
- name: "setProtocolFeeBps",
1181
- type: "function",
1182
- stateMutability: "nonpayable",
1183
- inputs: [{ name: "newProtocolFeeBps", type: "uint256" }],
1184
- outputs: []
1185
- },
1289
+ // Fee setters (setProtocolFeeBps / setProtocolFeeRecipient / setGuardianFeeBps /
1290
+ // setGuardiansFeeRecipient) moved off the governor to ProtocolConfig — see
1291
+ // PROTOCOL_CONFIG_ABI. Resolve the address via `factory.protocolConfig()`.
1186
1292
  {
1187
1293
  name: "getExecuteCalls",
1188
1294
  type: "function",
@@ -1508,6 +1614,7 @@ export {
1508
1614
  SWAP_ROUTER_EXACT_INPUT_SINGLE_ABI,
1509
1615
  ERC20_ABI,
1510
1616
  SYNDICATE_FACTORY_ABI,
1617
+ PROTOCOL_CONFIG_ABI,
1511
1618
  L2_REGISTRY_ABI,
1512
1619
  STRATEGY_REGISTRY_ABI,
1513
1620
  VENICE_STAKING_ABI,
@@ -1519,4 +1626,4 @@ export {
1519
1626
  PORTFOLIO_STRATEGY_ABI,
1520
1627
  SYNTHRA_QUOTER_ABI
1521
1628
  };
1522
- //# sourceMappingURL=chunk-YZHZSBES.js.map
1629
+ //# sourceMappingURL=chunk-BQMOE4FJ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/abis.ts"],"sourcesContent":["/**\n * Minimal contract ABIs for viem type inference.\n * Extracted from contracts/src/ — keep in sync if contracts change.\n */\n\n// ── SyndicateVault (ERC-4626 + ERC20Votes + governor integration) ──\n\nexport const SYNDICATE_VAULT_ABI = [\n // ERC-4626\n {\n name: \"deposit\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [\n { name: \"assets\", type: \"uint256\" },\n { name: \"receiver\", type: \"address\" },\n ],\n outputs: [{ name: \"shares\", type: \"uint256\" }],\n },\n {\n name: \"totalAssets\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"uint256\" }],\n },\n {\n name: \"asset\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"address\" }],\n },\n // ERC-20\n {\n name: \"balanceOf\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [{ name: \"account\", type: \"address\" }],\n outputs: [{ name: \"\", type: \"uint256\" }],\n },\n // Batch execution (owner-only, via delegatecall to shared executor lib)\n {\n name: \"executeBatch\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [\n {\n name: \"calls\",\n type: \"tuple[]\",\n components: [\n { name: \"target\", type: \"address\" },\n { name: \"data\", type: \"bytes\" },\n { name: \"value\", type: \"uint256\" },\n ],\n },\n ],\n outputs: [],\n },\n // Governor-initiated batch execution (governor-only)\n {\n name: \"executeGovernorBatch\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [\n {\n name: \"calls\",\n type: \"tuple[]\",\n components: [\n { name: \"target\", type: \"address\" },\n { name: \"data\", type: \"bytes\" },\n { name: \"value\", type: \"uint256\" },\n ],\n },\n ],\n outputs: [],\n },\n // Live NAV — resolves through `governor.getProposal(activePid).strategy`.\n // address(0) when no proposal is active or when the proposer opted out\n // by passing strategy=address(0) to propose().\n {\n name: \"activeStrategyAdapter\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"address\" }],\n },\n // Agent management\n {\n name: \"registerAgent\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [\n { name: \"agentId\", type: \"uint256\" },\n { name: \"agentAddress\", type: \"address\" },\n ],\n outputs: [],\n },\n {\n name: \"removeAgent\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [{ name: \"agentAddress\", type: \"address\" }],\n outputs: [],\n },\n // Views\n {\n name: \"getAgentConfig\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [{ name: \"agentAddress\", type: \"address\" }],\n outputs: [\n {\n name: \"\",\n type: \"tuple\",\n components: [\n { name: \"agentId\", type: \"uint256\" },\n { name: \"agentAddress\", type: \"address\" },\n { name: \"active\", type: \"bool\" },\n ],\n },\n ],\n },\n {\n name: \"getAgentCount\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"uint256\" }],\n },\n {\n name: \"isAgent\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [{ name: \"agentAddress\", type: \"address\" }],\n outputs: [{ name: \"\", type: \"bool\" }],\n },\n {\n name: \"totalDeposited\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"uint256\" }],\n },\n {\n name: \"getAgentAddresses\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"address[]\" }],\n },\n {\n name: \"pause\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [],\n outputs: [],\n },\n {\n name: \"unpause\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [],\n outputs: [],\n },\n // Depositor whitelist\n {\n name: \"approveDepositor\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [{ name: \"depositor\", type: \"address\" }],\n outputs: [],\n },\n {\n name: \"removeDepositor\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [{ name: \"depositor\", type: \"address\" }],\n outputs: [],\n },\n {\n name: \"approveDepositors\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [{ name: \"depositors\", type: \"address[]\" }],\n outputs: [],\n },\n {\n name: \"isApprovedDepositor\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [{ name: \"depositor\", type: \"address\" }],\n outputs: [{ name: \"\", type: \"bool\" }],\n },\n {\n name: \"setOpenDeposits\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [{ name: \"open\", type: \"bool\" }],\n outputs: [],\n },\n {\n name: \"openDeposits\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"bool\" }],\n },\n {\n name: \"agentFeeBps\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"uint256\" }],\n },\n {\n name: \"setAgentFeeBps\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [{ name: \"bps\", type: \"uint256\" }],\n outputs: [],\n },\n {\n name: \"AgentFeeUpdated\",\n type: \"event\",\n inputs: [{ name: \"bps\", type: \"uint256\", indexed: false }],\n },\n {\n name: \"paused\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"bool\" }],\n },\n // OwnableUpgradeable\n {\n name: \"owner\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"address\" }],\n },\n // ERC-4626 views for LP balance\n {\n name: \"convertToAssets\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [{ name: \"shares\", type: \"uint256\" }],\n outputs: [{ name: \"assets\", type: \"uint256\" }],\n },\n {\n name: \"totalSupply\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"uint256\" }],\n },\n {\n name: \"previewRedeem\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [{ name: \"shares\", type: \"uint256\" }],\n outputs: [{ name: \"assets\", type: \"uint256\" }],\n },\n {\n name: \"maxRedeem\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [{ name: \"owner\", type: \"address\" }],\n outputs: [{ name: \"shares\", type: \"uint256\" }],\n },\n {\n name: \"maxDeposit\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [{ name: \"receiver\", type: \"address\" }],\n outputs: [{ name: \"assets\", type: \"uint256\" }],\n },\n {\n name: \"redeem\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [\n { name: \"shares\", type: \"uint256\" },\n { name: \"receiver\", type: \"address\" },\n { name: \"owner\", type: \"address\" },\n ],\n outputs: [{ name: \"assets\", type: \"uint256\" }],\n },\n // ── Events ──\n {\n name: \"AgentRegistered\",\n type: \"event\",\n inputs: [\n { name: \"agentId\", type: \"uint256\", indexed: true },\n { name: \"agentAddress\", type: \"address\", indexed: true },\n ],\n },\n {\n name: \"AgentRemoved\",\n type: \"event\",\n inputs: [{ name: \"agentAddress\", type: \"address\", indexed: true }],\n },\n {\n name: \"DepositorApproved\",\n type: \"event\",\n inputs: [{ name: \"depositor\", type: \"address\", indexed: true }],\n },\n {\n name: \"DepositorRemoved\",\n type: \"event\",\n inputs: [{ name: \"depositor\", type: \"address\", indexed: true }],\n },\n // Governor integration\n {\n name: \"governor\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"address\" }],\n },\n {\n name: \"redemptionsLocked\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"bool\" }],\n },\n {\n name: \"managementFeeBps\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"uint256\" }],\n },\n] as const;\n\n// ── Uniswap Quoter V2 ──\n\nexport const UNISWAP_QUOTER_V2_ABI = [\n {\n name: \"quoteExactInputSingle\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [\n {\n name: \"params\",\n type: \"tuple\",\n components: [\n { name: \"tokenIn\", type: \"address\" },\n { name: \"tokenOut\", type: \"address\" },\n { name: \"amountIn\", type: \"uint256\" },\n { name: \"fee\", type: \"uint24\" },\n { name: \"sqrtPriceLimitX96\", type: \"uint160\" },\n ],\n },\n ],\n outputs: [\n { name: \"amountOut\", type: \"uint256\" },\n { name: \"sqrtPriceX96After\", type: \"uint160\" },\n { name: \"initializedTicksCrossed\", type: \"uint32\" },\n { name: \"gasEstimate\", type: \"uint256\" },\n ],\n },\n {\n name: \"quoteExactInput\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [\n { name: \"path\", type: \"bytes\" },\n { name: \"amountIn\", type: \"uint256\" },\n ],\n outputs: [\n { name: \"amountOut\", type: \"uint256\" },\n { name: \"sqrtPriceX96AfterList\", type: \"uint160[]\" },\n { name: \"initializedTicksCrossedList\", type: \"uint32[]\" },\n { name: \"gasEstimate\", type: \"uint256\" },\n ],\n },\n] as const;\n\n// ── Uniswap SwapRouter (multi-hop) ──\n\nexport const SWAP_ROUTER_ABI = [\n {\n name: \"exactInput\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [\n {\n name: \"params\",\n type: \"tuple\",\n components: [\n { name: \"path\", type: \"bytes\" },\n { name: \"recipient\", type: \"address\" },\n { name: \"amountIn\", type: \"uint256\" },\n { name: \"amountOutMinimum\", type: \"uint256\" },\n ],\n },\n ],\n outputs: [{ name: \"amountOut\", type: \"uint256\" }],\n },\n] as const;\n\n// ── Uniswap SwapRouter (single-hop) ──\n\nexport const SWAP_ROUTER_EXACT_INPUT_SINGLE_ABI = [\n {\n name: \"exactInputSingle\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [\n {\n name: \"params\",\n type: \"tuple\",\n components: [\n { name: \"tokenIn\", type: \"address\" },\n { name: \"tokenOut\", type: \"address\" },\n { name: \"fee\", type: \"uint24\" },\n { name: \"recipient\", type: \"address\" },\n { name: \"amountIn\", type: \"uint256\" },\n { name: \"amountOutMinimum\", type: \"uint256\" },\n { name: \"sqrtPriceLimitX96\", type: \"uint160\" },\n ],\n },\n ],\n outputs: [{ name: \"amountOut\", type: \"uint256\" }],\n },\n] as const;\n\n// ── ERC20 ──\n\nexport const ERC20_ABI = [\n {\n name: \"approve\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [\n { name: \"spender\", type: \"address\" },\n { name: \"amount\", type: \"uint256\" },\n ],\n outputs: [{ name: \"\", type: \"bool\" }],\n },\n {\n name: \"balanceOf\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [{ name: \"account\", type: \"address\" }],\n outputs: [{ name: \"\", type: \"uint256\" }],\n },\n {\n name: \"allowance\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [\n { name: \"owner\", type: \"address\" },\n { name: \"spender\", type: \"address\" },\n ],\n outputs: [{ name: \"\", type: \"uint256\" }],\n },\n {\n name: \"decimals\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"uint8\" }],\n },\n {\n name: \"symbol\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"string\" }],\n },\n {\n name: \"transfer\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [\n { name: \"to\", type: \"address\" },\n { name: \"amount\", type: \"uint256\" },\n ],\n outputs: [{ name: \"\", type: \"bool\" }],\n },\n {\n name: \"transferFrom\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [\n { name: \"from\", type: \"address\" },\n { name: \"to\", type: \"address\" },\n { name: \"amount\", type: \"uint256\" },\n ],\n outputs: [{ name: \"\", type: \"bool\" }],\n },\n] as const;\n\n// ── SyndicateFactory ──\n\nexport const SYNDICATE_FACTORY_ABI = [\n {\n name: \"createSyndicate\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [\n { name: \"creatorAgentId\", type: \"uint256\" },\n {\n name: \"config\",\n type: \"tuple\",\n components: [\n { name: \"metadataURI\", type: \"string\" },\n { name: \"asset\", type: \"address\" },\n { name: \"name\", type: \"string\" },\n { name: \"symbol\", type: \"string\" },\n { name: \"openDeposits\", type: \"bool\" },\n { name: \"subdomain\", type: \"string\" },\n ],\n },\n ],\n outputs: [\n { name: \"syndicateId\", type: \"uint256\" },\n { name: \"vault\", type: \"address\" },\n ],\n },\n {\n name: \"syndicates\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [{ name: \"\", type: \"uint256\" }],\n outputs: [\n { name: \"id\", type: \"uint256\" },\n { name: \"vault\", type: \"address\" },\n { name: \"creator\", type: \"address\" },\n { name: \"metadataURI\", type: \"string\" },\n { name: \"createdAt\", type: \"uint256\" },\n { name: \"active\", type: \"bool\" },\n { name: \"subdomain\", type: \"string\" },\n ],\n },\n {\n name: \"getAllActiveSyndicates\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [\n {\n name: \"\",\n type: \"tuple[]\",\n components: [\n { name: \"id\", type: \"uint256\" },\n { name: \"vault\", type: \"address\" },\n { name: \"creator\", type: \"address\" },\n { name: \"metadataURI\", type: \"string\" },\n { name: \"createdAt\", type: \"uint256\" },\n { name: \"active\", type: \"bool\" },\n { name: \"subdomain\", type: \"string\" },\n ],\n },\n ],\n },\n {\n name: \"syndicateCount\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"uint256\" }],\n },\n {\n name: \"vaultToSyndicate\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [{ name: \"\", type: \"address\" }],\n outputs: [{ name: \"\", type: \"uint256\" }],\n },\n {\n name: \"updateMetadata\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [\n { name: \"syndicateId\", type: \"uint256\" },\n { name: \"metadataURI\", type: \"string\" },\n ],\n outputs: [],\n },\n {\n name: \"deactivate\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [{ name: \"syndicateId\", type: \"uint256\" }],\n outputs: [],\n },\n {\n name: \"executorImpl\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"address\" }],\n },\n {\n name: \"vaultImpl\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"address\" }],\n },\n {\n name: \"subdomainToSyndicate\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [{ name: \"subdomain\", type: \"string\" }],\n outputs: [{ name: \"\", type: \"uint256\" }],\n },\n {\n name: \"isSubdomainAvailable\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [{ name: \"subdomain\", type: \"string\" }],\n outputs: [{ name: \"\", type: \"bool\" }],\n },\n // Per-vault governor: the factory deploys one governor per vault as a\n // BeaconProxy. `governorOf(vault)` replaces the removed global `governor()`.\n {\n name: \"governorOf\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [{ name: \"vault\", type: \"address\" }],\n outputs: [{ name: \"\", type: \"address\" }],\n },\n {\n name: \"beacon\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"address\" }],\n },\n {\n name: \"protocolConfig\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"address\" }],\n },\n {\n name: \"SyndicateCreated\",\n type: \"event\",\n inputs: [\n { name: \"id\", type: \"uint256\", indexed: true },\n { name: \"vault\", type: \"address\", indexed: true },\n { name: \"creator\", type: \"address\", indexed: true },\n { name: \"metadataURI\", type: \"string\", indexed: false },\n { name: \"subdomain\", type: \"string\", indexed: false },\n ],\n },\n] as const;\n\n// ── ProtocolConfig (protocol-wide fee parameters) ──\n//\n// Per-vault governor refactor: the protocol/guardian fee setters moved off\n// the governor onto a single owner-governed ProtocolConfig contract. Resolve\n// its address at runtime via `factory.protocolConfig()`.\n\nexport const PROTOCOL_CONFIG_ABI = [\n {\n name: \"protocolFeeBps\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"uint256\" }],\n },\n {\n name: \"protocolFeeRecipient\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"address\" }],\n },\n {\n name: \"guardianFeeBps\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"uint256\" }],\n },\n {\n name: \"guardiansFeeRecipient\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"address\" }],\n },\n {\n name: \"setProtocolFeeBps\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [{ name: \"newProtocolFeeBps\", type: \"uint256\" }],\n outputs: [],\n },\n {\n name: \"setProtocolFeeRecipient\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [{ name: \"newRecipient\", type: \"address\" }],\n outputs: [],\n },\n {\n name: \"setGuardianFeeBps\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [{ name: \"newGuardianFeeBps\", type: \"uint256\" }],\n outputs: [],\n },\n {\n name: \"setGuardiansFeeRecipient\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [{ name: \"newRecipient\", type: \"address\" }],\n outputs: [],\n },\n] as const;\n\n// ── L2 Registry (Durin ENS — text records) ──\n\nexport const L2_REGISTRY_ABI = [\n {\n name: \"setText\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [\n { name: \"node\", type: \"bytes32\" },\n { name: \"key\", type: \"string\" },\n { name: \"value\", type: \"string\" },\n ],\n outputs: [],\n },\n {\n name: \"text\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [\n { name: \"node\", type: \"bytes32\" },\n { name: \"key\", type: \"string\" },\n ],\n outputs: [{ name: \"\", type: \"string\" }],\n },\n] as const;\n\n// ── StrategyRegistry ──\n\nexport const STRATEGY_REGISTRY_ABI = [\n {\n name: \"registerStrategy\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [\n { name: \"implementation\", type: \"address\" },\n { name: \"strategyTypeId\", type: \"uint256\" },\n { name: \"name\", type: \"string\" },\n { name: \"metadataURI\", type: \"string\" },\n ],\n outputs: [{ name: \"strategyId\", type: \"uint256\" }],\n },\n {\n name: \"getStrategy\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [{ name: \"strategyId\", type: \"uint256\" }],\n outputs: [\n {\n name: \"\",\n type: \"tuple\",\n components: [\n { name: \"implementation\", type: \"address\" },\n { name: \"creator\", type: \"address\" },\n { name: \"strategyTypeId\", type: \"uint256\" },\n { name: \"active\", type: \"bool\" },\n { name: \"name\", type: \"string\" },\n { name: \"metadataURI\", type: \"string\" },\n ],\n },\n ],\n },\n {\n name: \"getStrategiesByType\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [{ name: \"strategyTypeId\", type: \"uint256\" }],\n outputs: [{ name: \"\", type: \"uint256[]\" }],\n },\n {\n name: \"getStrategiesByCreator\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [{ name: \"creator\", type: \"address\" }],\n outputs: [{ name: \"\", type: \"uint256[]\" }],\n },\n {\n name: \"strategyCount\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"uint256\" }],\n },\n {\n name: \"isStrategyActive\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [{ name: \"strategyId\", type: \"uint256\" }],\n outputs: [{ name: \"\", type: \"bool\" }],\n },\n {\n name: \"deactivateStrategy\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [{ name: \"strategyId\", type: \"uint256\" }],\n outputs: [],\n },\n] as const;\n\n// ── Venice Staking (sVVV = staking contract ERC-20) ──\n\nexport const VENICE_STAKING_ABI = [\n {\n name: \"stake\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [\n { name: \"recipient\", type: \"address\" },\n { name: \"amount\", type: \"uint256\" },\n ],\n outputs: [],\n },\n {\n name: \"initiateUnstake\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [{ name: \"amount\", type: \"uint256\" }],\n outputs: [],\n },\n {\n name: \"finalizeUnstake\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [],\n outputs: [],\n },\n {\n name: \"mintDiem\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [\n { name: \"sVVVAmountToLock\", type: \"uint256\" },\n { name: \"minDiemAmountOut\", type: \"uint256\" },\n ],\n outputs: [],\n },\n {\n name: \"balanceOf\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [{ name: \"account\", type: \"address\" }],\n outputs: [{ name: \"\", type: \"uint256\" }],\n },\n {\n name: \"pendingRewards\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [{ name: \"_user\", type: \"address\" }],\n outputs: [{ name: \"\", type: \"uint256\" }],\n },\n {\n name: \"cooldownDuration\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"uint256\" }],\n },\n {\n name: \"getDiemAmountOut\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [{ name: \"sVVVAmountToLock\", type: \"uint256\" }],\n outputs: [{ name: \"\", type: \"uint256\" }],\n },\n {\n name: \"claim\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [],\n outputs: [],\n },\n {\n name: \"burnDiem\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [{ name: \"diemAmountToBurn\", type: \"uint256\" }],\n outputs: [],\n },\n {\n name: \"balanceOfUnlocked\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [{ name: \"user\", type: \"address\" }],\n outputs: [{ name: \"\", type: \"uint256\" }],\n },\n] as const;\n\n// ── EAS (Ethereum Attestation Service) ──\n\nexport const EAS_ABI = [\n {\n name: \"attest\",\n type: \"function\",\n stateMutability: \"payable\",\n inputs: [\n {\n name: \"request\",\n type: \"tuple\",\n components: [\n { name: \"schema\", type: \"bytes32\" },\n {\n name: \"data\",\n type: \"tuple\",\n components: [\n { name: \"recipient\", type: \"address\" },\n { name: \"expirationTime\", type: \"uint64\" },\n { name: \"revocable\", type: \"bool\" },\n { name: \"refUID\", type: \"bytes32\" },\n { name: \"data\", type: \"bytes\" },\n { name: \"value\", type: \"uint256\" },\n ],\n },\n ],\n },\n ],\n outputs: [{ name: \"\", type: \"bytes32\" }],\n },\n {\n name: \"revoke\",\n type: \"function\",\n stateMutability: \"payable\",\n inputs: [\n {\n name: \"request\",\n type: \"tuple\",\n components: [\n { name: \"schema\", type: \"bytes32\" },\n {\n name: \"data\",\n type: \"tuple\",\n components: [\n { name: \"uid\", type: \"bytes32\" },\n { name: \"value\", type: \"uint256\" },\n ],\n },\n ],\n },\n ],\n outputs: [],\n },\n {\n name: \"getAttestation\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [{ name: \"uid\", type: \"bytes32\" }],\n outputs: [\n {\n name: \"\",\n type: \"tuple\",\n components: [\n { name: \"uid\", type: \"bytes32\" },\n { name: \"schema\", type: \"bytes32\" },\n { name: \"time\", type: \"uint64\" },\n { name: \"expirationTime\", type: \"uint64\" },\n { name: \"revocationTime\", type: \"uint64\" },\n { name: \"refUID\", type: \"bytes32\" },\n { name: \"recipient\", type: \"address\" },\n { name: \"attester\", type: \"address\" },\n { name: \"revocable\", type: \"bool\" },\n { name: \"data\", type: \"bytes\" },\n ],\n },\n ],\n },\n] as const;\n\n// ── SyndicateGovernor ──\n\nexport const SYNDICATE_GOVERNOR_ABI = [\n // Proposal lifecycle\n {\n name: \"propose\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [\n { name: \"vault\", type: \"address\" },\n { name: \"strategy\", type: \"address\" },\n { name: \"metadataURI\", type: \"string\" },\n { name: \"strategyDuration\", type: \"uint256\" },\n {\n name: \"executeCalls\",\n type: \"tuple[]\",\n components: [\n { name: \"target\", type: \"address\" },\n { name: \"data\", type: \"bytes\" },\n { name: \"value\", type: \"uint256\" },\n ],\n },\n {\n name: \"settlementCalls\",\n type: \"tuple[]\",\n components: [\n { name: \"target\", type: \"address\" },\n { name: \"data\", type: \"bytes\" },\n { name: \"value\", type: \"uint256\" },\n ],\n },\n {\n name: \"coProposers\",\n type: \"tuple[]\",\n components: [\n { name: \"agent\", type: \"address\" },\n { name: \"splitBps\", type: \"uint256\" },\n ],\n },\n ],\n outputs: [{ name: \"proposalId\", type: \"uint256\" }],\n },\n {\n name: \"vote\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [\n { name: \"proposalId\", type: \"uint256\" },\n { name: \"support\", type: \"uint8\" },\n ],\n outputs: [],\n },\n {\n name: \"executeProposal\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [{ name: \"proposalId\", type: \"uint256\" }],\n outputs: [],\n },\n {\n name: \"settleProposal\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [{ name: \"proposalId\", type: \"uint256\" }],\n outputs: [],\n },\n {\n name: \"emergencySettleWithCalls\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [\n { name: \"proposalId\", type: \"uint256\" },\n {\n name: \"calls\",\n type: \"tuple[]\",\n components: [\n { name: \"target\", type: \"address\" },\n { name: \"data\", type: \"bytes\" },\n { name: \"value\", type: \"uint256\" },\n ],\n },\n ],\n outputs: [],\n },\n {\n name: \"cancelProposal\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [{ name: \"proposalId\", type: \"uint256\" }],\n outputs: [],\n },\n {\n name: \"emergencyCancel\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [{ name: \"proposalId\", type: \"uint256\" }],\n outputs: [],\n },\n // Views\n {\n name: \"getProposal\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [{ name: \"proposalId\", type: \"uint256\" }],\n outputs: [\n {\n name: \"\",\n type: \"tuple\",\n components: [\n { name: \"id\", type: \"uint256\" },\n { name: \"proposer\", type: \"address\" },\n { name: \"vault\", type: \"address\" },\n { name: \"strategy\", type: \"address\" },\n { name: \"metadataURI\", type: \"string\" },\n { name: \"performanceFeeBps\", type: \"uint256\" },\n { name: \"strategyDuration\", type: \"uint256\" },\n { name: \"votesFor\", type: \"uint256\" },\n { name: \"votesAgainst\", type: \"uint256\" },\n { name: \"votesAbstain\", type: \"uint256\" },\n { name: \"snapshotTimestamp\", type: \"uint256\" },\n { name: \"voteEnd\", type: \"uint256\" },\n { name: \"reviewEnd\", type: \"uint256\" },\n { name: \"executeBy\", type: \"uint256\" },\n { name: \"executedAt\", type: \"uint256\" },\n { name: \"state\", type: \"uint8\" },\n { name: \"vetoThresholdBps\", type: \"uint256\" },\n { name: \"snapshotProtocolFeeBps\", type: \"uint256\" },\n { name: \"snapshotProtocolFeeRecipient\", type: \"address\" },\n { name: \"snapshotGuardianFeeBps\", type: \"uint256\" },\n { name: \"snapshotGuardiansFeeRecipient\", type: \"address\" },\n { name: \"selfManagesFees\", type: \"bool\" },\n ],\n },\n ],\n },\n {\n name: \"getProposalState\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [{ name: \"proposalId\", type: \"uint256\" }],\n outputs: [{ name: \"\", type: \"uint8\" }],\n },\n // V1.5: `getProposalCalls` dropped to reclaim governor bytecode under\n // EIP-170. Off-chain consumers call `getExecuteCalls + getSettlementCalls`.\n {\n name: \"getVoteWeight\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [\n { name: \"proposalId\", type: \"uint256\" },\n { name: \"voter\", type: \"address\" },\n ],\n outputs: [{ name: \"\", type: \"uint256\" }],\n },\n {\n name: \"hasVoted\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [\n { name: \"proposalId\", type: \"uint256\" },\n { name: \"voter\", type: \"address\" },\n ],\n outputs: [{ name: \"\", type: \"bool\" }],\n },\n {\n name: \"proposalCount\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"uint256\" }],\n },\n {\n name: \"getGovernorParams\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [\n {\n name: \"\",\n type: \"tuple\",\n components: [\n { name: \"votingPeriod\", type: \"uint256\" },\n { name: \"executionWindow\", type: \"uint256\" },\n { name: \"vetoThresholdBps\", type: \"uint256\" },\n { name: \"maxPerformanceFeeBps\", type: \"uint256\" },\n { name: \"cooldownPeriod\", type: \"uint256\" },\n { name: \"collaborationWindow\", type: \"uint256\" },\n { name: \"maxCoProposers\", type: \"uint256\" },\n { name: \"minStrategyDuration\", type: \"uint256\" },\n { name: \"maxStrategyDuration\", type: \"uint256\" },\n ],\n },\n ],\n },\n // Per-vault governor: each governor serves exactly one vault, so the\n // active-proposal / cooldown / open-count views take no vault argument.\n {\n name: \"getActiveProposal\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"uint256\" }],\n },\n {\n name: \"getCooldownEnd\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"uint256\" }],\n },\n {\n name: \"openProposalCount\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"uint256\" }],\n },\n {\n name: \"vault\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"address\" }],\n },\n {\n name: \"getCapitalSnapshot\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [{ name: \"proposalId\", type: \"uint256\" }],\n outputs: [{ name: \"\", type: \"uint256\" }],\n },\n // Per-vault governor: addVault / removeVault / isRegisteredVault /\n // getRegisteredVaults were removed — the factory deploys one governor\n // per vault (BeaconProxy) and binds it at initialize.\n // ── Events ──\n {\n name: \"ProposalCreated\",\n type: \"event\",\n inputs: [\n { name: \"proposalId\", type: \"uint256\", indexed: true },\n { name: \"proposer\", type: \"address\", indexed: true },\n { name: \"vault\", type: \"address\", indexed: true },\n { name: \"performanceFeeBps\", type: \"uint256\", indexed: false },\n { name: \"strategyDuration\", type: \"uint256\", indexed: false },\n { name: \"executeCallCount\", type: \"uint256\", indexed: false },\n { name: \"settlementCallCount\", type: \"uint256\", indexed: false },\n { name: \"metadataURI\", type: \"string\", indexed: false },\n ],\n },\n {\n name: \"FeeClamped\",\n type: \"event\",\n inputs: [\n { name: \"proposalId\", type: \"uint256\", indexed: true },\n { name: \"snapshotted\", type: \"uint256\", indexed: true },\n { name: \"clamped\", type: \"uint256\", indexed: true },\n ],\n },\n {\n name: \"VoteCast\",\n type: \"event\",\n inputs: [\n { name: \"proposalId\", type: \"uint256\", indexed: true },\n { name: \"voter\", type: \"address\", indexed: true },\n { name: \"support\", type: \"uint8\", indexed: false },\n { name: \"weight\", type: \"uint256\", indexed: false },\n ],\n },\n {\n name: \"ProposalExecuted\",\n type: \"event\",\n inputs: [\n { name: \"proposalId\", type: \"uint256\", indexed: true },\n { name: \"vault\", type: \"address\", indexed: true },\n { name: \"capitalSnapshot\", type: \"uint256\", indexed: false },\n ],\n },\n {\n name: \"ProposalSettled\",\n type: \"event\",\n inputs: [\n { name: \"proposalId\", type: \"uint256\", indexed: true },\n { name: \"vault\", type: \"address\", indexed: true },\n { name: \"pnl\", type: \"int256\", indexed: false },\n { name: \"performanceFee\", type: \"uint256\", indexed: false },\n { name: \"duration\", type: \"uint256\", indexed: false },\n ],\n },\n {\n name: \"ProposalCancelled\",\n type: \"event\",\n inputs: [\n { name: \"proposalId\", type: \"uint256\", indexed: true },\n { name: \"cancelledBy\", type: \"address\", indexed: true },\n ],\n },\n // Parameter setters (owner-only)\n {\n name: \"setVotingPeriod\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [{ name: \"newVotingPeriod\", type: \"uint256\" }],\n outputs: [],\n },\n {\n name: \"setExecutionWindow\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [{ name: \"newExecutionWindow\", type: \"uint256\" }],\n outputs: [],\n },\n {\n name: \"setVetoThresholdBps\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [{ name: \"newVetoThresholdBps\", type: \"uint256\" }],\n outputs: [],\n },\n {\n name: \"setMaxPerformanceFeeBps\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [{ name: \"newMaxPerformanceFeeBps\", type: \"uint256\" }],\n outputs: [],\n },\n {\n name: \"setMaxStrategyDuration\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [{ name: \"newMaxStrategyDuration\", type: \"uint256\" }],\n outputs: [],\n },\n {\n name: \"setCooldownPeriod\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [{ name: \"newCooldownPeriod\", type: \"uint256\" }],\n outputs: [],\n },\n {\n name: \"vetoProposal\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [{ name: \"proposalId\", type: \"uint256\" }],\n outputs: [],\n },\n // Fee setters (setProtocolFeeBps / setProtocolFeeRecipient / setGuardianFeeBps /\n // setGuardiansFeeRecipient) moved off the governor to ProtocolConfig — see\n // PROTOCOL_CONFIG_ABI. Resolve the address via `factory.protocolConfig()`.\n {\n name: \"getExecuteCalls\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [{ name: \"proposalId\", type: \"uint256\" }],\n outputs: [\n {\n name: \"\",\n type: \"tuple[]\",\n components: [\n { name: \"target\", type: \"address\" },\n { name: \"data\", type: \"bytes\" },\n { name: \"value\", type: \"uint256\" },\n ],\n },\n ],\n },\n {\n name: \"getSettlementCalls\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [{ name: \"proposalId\", type: \"uint256\" }],\n outputs: [\n {\n name: \"\",\n type: \"tuple[]\",\n components: [\n { name: \"target\", type: \"address\" },\n { name: \"data\", type: \"bytes\" },\n { name: \"value\", type: \"uint256\" },\n ],\n },\n ],\n },\n] as const;\n\n// ── EAS Schema Registry ──\n\nexport const SCHEMA_REGISTRY_ABI = [\n {\n name: \"register\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [\n { name: \"schema\", type: \"string\" },\n { name: \"resolver\", type: \"address\" },\n { name: \"revocable\", type: \"bool\" },\n ],\n outputs: [{ name: \"\", type: \"bytes32\" }],\n },\n {\n name: \"Registered\",\n type: \"event\",\n inputs: [\n { name: \"uid\", type: \"bytes32\", indexed: true },\n { name: \"registerer\", type: \"address\", indexed: true },\n ],\n },\n] as const;\n\n// ── BaseStrategy (IStrategy + lifecycle views) ──\n\nexport const BASE_STRATEGY_ABI = [\n {\n name: \"initialize\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [\n { name: \"vault\", type: \"address\" },\n { name: \"proposer\", type: \"address\" },\n { name: \"data\", type: \"bytes\" },\n ],\n outputs: [],\n },\n {\n name: \"execute\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [],\n outputs: [],\n },\n {\n name: \"settle\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [],\n outputs: [],\n },\n {\n name: \"updateParams\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [{ name: \"data\", type: \"bytes\" }],\n outputs: [],\n },\n {\n name: \"name\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"string\" }],\n },\n {\n name: \"vault\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"address\" }],\n },\n {\n name: \"proposer\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"address\" }],\n },\n {\n name: \"executed\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"bool\" }],\n },\n {\n name: \"state\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"uint8\" }],\n },\n {\n // Canonical mid-strategy position value view added in #218.\n // Returns (value, valid) — `valid=false` means the frontend should\n // hide the live P&L chip rather than render a misleading $0.\n name: \"positionValue\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [\n { name: \"value\", type: \"uint256\" },\n { name: \"valid\", type: \"bool\" },\n ],\n },\n] as const;\n\n// ── HyperliquidPerpStrategy (extends BaseStrategy with sweepToVault) ──\n\nexport const HYPERLIQUID_PERP_STRATEGY_ABI = [\n ...BASE_STRATEGY_ABI,\n {\n name: \"sweepToVault\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [],\n outputs: [],\n },\n {\n name: \"settled\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"bool\" }],\n },\n {\n name: \"swept\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"bool\" }],\n },\n {\n name: \"hasActiveStopLoss\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"bool\" }],\n },\n {\n name: \"finalizeForHyperCore\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [\n { name: \"token\", type: \"uint64\" },\n { name: \"variant\", type: \"uint8\" },\n { name: \"createNonce\", type: \"uint64\" },\n ],\n outputs: [],\n },\n {\n name: \"hyperCoreFinalized\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"bool\" }],\n },\n] as const;\n\n// ── PortfolioStrategy (extends BaseStrategy with rebalancing + views) ──\n\nexport const PORTFOLIO_STRATEGY_ABI = [\n // Inherited from BaseStrategy\n ...BASE_STRATEGY_ABI,\n // Rebalancing\n {\n name: \"rebalance\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [],\n outputs: [],\n },\n {\n name: \"rebalanceDelta\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [{ name: \"priceReports\", type: \"bytes[]\" }],\n outputs: [],\n },\n // View functions\n {\n name: \"getAllocations\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [\n {\n name: \"\",\n type: \"tuple[]\",\n components: [\n { name: \"token\", type: \"address\" },\n { name: \"targetWeightBps\", type: \"uint256\" },\n { name: \"tokenAmount\", type: \"uint256\" },\n { name: \"investedAmount\", type: \"uint256\" },\n ],\n },\n ],\n },\n {\n name: \"allocationCount\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"uint256\" }],\n },\n {\n name: \"asset\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"address\" }],\n },\n {\n name: \"totalAmount\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"uint256\" }],\n },\n {\n name: \"maxSlippageBps\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"uint256\" }],\n },\n {\n name: \"swapAdapter\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"address\" }],\n },\n {\n name: \"getSwapExtraData\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"bytes[]\" }],\n },\n // Events\n {\n name: \"WeightsUpdated\",\n type: \"event\",\n inputs: [\n { name: \"tokens\", type: \"address[]\", indexed: false },\n { name: \"oldWeights\", type: \"uint256[]\", indexed: false },\n { name: \"newWeights\", type: \"uint256[]\", indexed: false },\n ],\n },\n {\n name: \"Rebalanced\",\n type: \"event\",\n inputs: [\n { name: \"tokens\", type: \"address[]\", indexed: false },\n { name: \"oldWeights\", type: \"uint256[]\", indexed: false },\n { name: \"newWeights\", type: \"uint256[]\", indexed: false },\n { name: \"oldBalances\", type: \"uint256[]\", indexed: false },\n { name: \"newBalances\", type: \"uint256[]\", indexed: false },\n { name: \"totalAssetValue\", type: \"uint256\", indexed: false },\n ],\n },\n {\n name: \"RebalancedDelta\",\n type: \"event\",\n inputs: [\n { name: \"tokens\", type: \"address[]\", indexed: false },\n { name: \"oldWeights\", type: \"uint256[]\", indexed: false },\n { name: \"newWeights\", type: \"uint256[]\", indexed: false },\n { name: \"oldBalances\", type: \"uint256[]\", indexed: false },\n { name: \"newBalances\", type: \"uint256[]\", indexed: false },\n { name: \"totalAssetValue\", type: \"uint256\", indexed: false },\n { name: \"swapsExecuted\", type: \"uint256\", indexed: false },\n ],\n },\n] as const;\n\n// ── Synthra QuoterV2 (Robinhood testnet — different ABI from Uniswap) ──\n// Flat params (not struct), returns only amountOut (not 4-tuple).\n// Confirmed by ISynthraQuoter in contracts/src/adapters/SynthraSwapAdapter.sol:33-41.\n\nexport const SYNTHRA_QUOTER_ABI = [\n {\n name: \"quoteExactInputSingle\",\n type: \"function\",\n stateMutability: \"nonpayable\",\n inputs: [\n { name: \"tokenIn\", type: \"address\" },\n { name: \"tokenOut\", type: \"address\" },\n { name: \"fee\", type: \"uint24\" },\n { name: \"amountIn\", type: \"uint256\" },\n { name: \"sqrtPriceLimitX96\", type: \"uint160\" },\n ],\n outputs: [{ name: \"amountOut\", type: \"uint256\" }],\n },\n] as const;\n"],"mappings":";AAOO,IAAM,sBAAsB;AAAA;AAAA,EAEjC;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ;AAAA,MACN,EAAE,MAAM,UAAU,MAAM,UAAU;AAAA,MAClC,EAAE,MAAM,YAAY,MAAM,UAAU;AAAA,IACtC;AAAA,IACA,SAAS,CAAC,EAAE,MAAM,UAAU,MAAM,UAAU,CAAC;AAAA,EAC/C;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,EACzC;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,EACzC;AAAA;AAAA,EAEA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC,EAAE,MAAM,WAAW,MAAM,UAAU,CAAC;AAAA,IAC7C,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,EACzC;AAAA;AAAA,EAEA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ;AAAA,MACN;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,QACN,YAAY;AAAA,UACV,EAAE,MAAM,UAAU,MAAM,UAAU;AAAA,UAClC,EAAE,MAAM,QAAQ,MAAM,QAAQ;AAAA,UAC9B,EAAE,MAAM,SAAS,MAAM,UAAU;AAAA,QACnC;AAAA,MACF;AAAA,IACF;AAAA,IACA,SAAS,CAAC;AAAA,EACZ;AAAA;AAAA,EAEA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ;AAAA,MACN;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,QACN,YAAY;AAAA,UACV,EAAE,MAAM,UAAU,MAAM,UAAU;AAAA,UAClC,EAAE,MAAM,QAAQ,MAAM,QAAQ;AAAA,UAC9B,EAAE,MAAM,SAAS,MAAM,UAAU;AAAA,QACnC;AAAA,MACF;AAAA,IACF;AAAA,IACA,SAAS,CAAC;AAAA,EACZ;AAAA;AAAA;AAAA;AAAA,EAIA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,EACzC;AAAA;AAAA,EAEA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ;AAAA,MACN,EAAE,MAAM,WAAW,MAAM,UAAU;AAAA,MACnC,EAAE,MAAM,gBAAgB,MAAM,UAAU;AAAA,IAC1C;AAAA,IACA,SAAS,CAAC;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC,EAAE,MAAM,gBAAgB,MAAM,UAAU,CAAC;AAAA,IAClD,SAAS,CAAC;AAAA,EACZ;AAAA;AAAA,EAEA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC,EAAE,MAAM,gBAAgB,MAAM,UAAU,CAAC;AAAA,IAClD,SAAS;AAAA,MACP;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,QACN,YAAY;AAAA,UACV,EAAE,MAAM,WAAW,MAAM,UAAU;AAAA,UACnC,EAAE,MAAM,gBAAgB,MAAM,UAAU;AAAA,UACxC,EAAE,MAAM,UAAU,MAAM,OAAO;AAAA,QACjC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,EACzC;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC,EAAE,MAAM,gBAAgB,MAAM,UAAU,CAAC;AAAA,IAClD,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,OAAO,CAAC;AAAA,EACtC;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,EACzC;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,YAAY,CAAC;AAAA,EAC3C;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC;AAAA,EACZ;AAAA;AAAA,EAEA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC,EAAE,MAAM,aAAa,MAAM,UAAU,CAAC;AAAA,IAC/C,SAAS,CAAC;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC,EAAE,MAAM,aAAa,MAAM,UAAU,CAAC;AAAA,IAC/C,SAAS,CAAC;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC,EAAE,MAAM,cAAc,MAAM,YAAY,CAAC;AAAA,IAClD,SAAS,CAAC;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC,EAAE,MAAM,aAAa,MAAM,UAAU,CAAC;AAAA,IAC/C,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,OAAO,CAAC;AAAA,EACtC;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC,EAAE,MAAM,QAAQ,MAAM,OAAO,CAAC;AAAA,IACvC,SAAS,CAAC;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,OAAO,CAAC;AAAA,EACtC;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,EACzC;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC,EAAE,MAAM,OAAO,MAAM,UAAU,CAAC;AAAA,IACzC,SAAS,CAAC;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ,CAAC,EAAE,MAAM,OAAO,MAAM,WAAW,SAAS,MAAM,CAAC;AAAA,EAC3D;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,OAAO,CAAC;AAAA,EACtC;AAAA;AAAA,EAEA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,EACzC;AAAA;AAAA,EAEA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC,EAAE,MAAM,UAAU,MAAM,UAAU,CAAC;AAAA,IAC5C,SAAS,CAAC,EAAE,MAAM,UAAU,MAAM,UAAU,CAAC;AAAA,EAC/C;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,EACzC;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC,EAAE,MAAM,UAAU,MAAM,UAAU,CAAC;AAAA,IAC5C,SAAS,CAAC,EAAE,MAAM,UAAU,MAAM,UAAU,CAAC;AAAA,EAC/C;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC,EAAE,MAAM,SAAS,MAAM,UAAU,CAAC;AAAA,IAC3C,SAAS,CAAC,EAAE,MAAM,UAAU,MAAM,UAAU,CAAC;AAAA,EAC/C;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC,EAAE,MAAM,YAAY,MAAM,UAAU,CAAC;AAAA,IAC9C,SAAS,CAAC,EAAE,MAAM,UAAU,MAAM,UAAU,CAAC;AAAA,EAC/C;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ;AAAA,MACN,EAAE,MAAM,UAAU,MAAM,UAAU;AAAA,MAClC,EAAE,MAAM,YAAY,MAAM,UAAU;AAAA,MACpC,EAAE,MAAM,SAAS,MAAM,UAAU;AAAA,IACnC;AAAA,IACA,SAAS,CAAC,EAAE,MAAM,UAAU,MAAM,UAAU,CAAC;AAAA,EAC/C;AAAA;AAAA,EAEA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,MACN,EAAE,MAAM,WAAW,MAAM,WAAW,SAAS,KAAK;AAAA,MAClD,EAAE,MAAM,gBAAgB,MAAM,WAAW,SAAS,KAAK;AAAA,IACzD;AAAA,EACF;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ,CAAC,EAAE,MAAM,gBAAgB,MAAM,WAAW,SAAS,KAAK,CAAC;AAAA,EACnE;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ,CAAC,EAAE,MAAM,aAAa,MAAM,WAAW,SAAS,KAAK,CAAC;AAAA,EAChE;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ,CAAC,EAAE,MAAM,aAAa,MAAM,WAAW,SAAS,KAAK,CAAC;AAAA,EAChE;AAAA;AAAA,EAEA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,EACzC;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,OAAO,CAAC;AAAA,EACtC;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,EACzC;AACF;AAIO,IAAM,wBAAwB;AAAA,EACnC;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ;AAAA,MACN;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,QACN,YAAY;AAAA,UACV,EAAE,MAAM,WAAW,MAAM,UAAU;AAAA,UACnC,EAAE,MAAM,YAAY,MAAM,UAAU;AAAA,UACpC,EAAE,MAAM,YAAY,MAAM,UAAU;AAAA,UACpC,EAAE,MAAM,OAAO,MAAM,SAAS;AAAA,UAC9B,EAAE,MAAM,qBAAqB,MAAM,UAAU;AAAA,QAC/C;AAAA,MACF;AAAA,IACF;AAAA,IACA,SAAS;AAAA,MACP,EAAE,MAAM,aAAa,MAAM,UAAU;AAAA,MACrC,EAAE,MAAM,qBAAqB,MAAM,UAAU;AAAA,MAC7C,EAAE,MAAM,2BAA2B,MAAM,SAAS;AAAA,MAClD,EAAE,MAAM,eAAe,MAAM,UAAU;AAAA,IACzC;AAAA,EACF;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ;AAAA,MACN,EAAE,MAAM,QAAQ,MAAM,QAAQ;AAAA,MAC9B,EAAE,MAAM,YAAY,MAAM,UAAU;AAAA,IACtC;AAAA,IACA,SAAS;AAAA,MACP,EAAE,MAAM,aAAa,MAAM,UAAU;AAAA,MACrC,EAAE,MAAM,yBAAyB,MAAM,YAAY;AAAA,MACnD,EAAE,MAAM,+BAA+B,MAAM,WAAW;AAAA,MACxD,EAAE,MAAM,eAAe,MAAM,UAAU;AAAA,IACzC;AAAA,EACF;AACF;AAIO,IAAM,kBAAkB;AAAA,EAC7B;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ;AAAA,MACN;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,QACN,YAAY;AAAA,UACV,EAAE,MAAM,QAAQ,MAAM,QAAQ;AAAA,UAC9B,EAAE,MAAM,aAAa,MAAM,UAAU;AAAA,UACrC,EAAE,MAAM,YAAY,MAAM,UAAU;AAAA,UACpC,EAAE,MAAM,oBAAoB,MAAM,UAAU;AAAA,QAC9C;AAAA,MACF;AAAA,IACF;AAAA,IACA,SAAS,CAAC,EAAE,MAAM,aAAa,MAAM,UAAU,CAAC;AAAA,EAClD;AACF;AAIO,IAAM,qCAAqC;AAAA,EAChD;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ;AAAA,MACN;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,QACN,YAAY;AAAA,UACV,EAAE,MAAM,WAAW,MAAM,UAAU;AAAA,UACnC,EAAE,MAAM,YAAY,MAAM,UAAU;AAAA,UACpC,EAAE,MAAM,OAAO,MAAM,SAAS;AAAA,UAC9B,EAAE,MAAM,aAAa,MAAM,UAAU;AAAA,UACrC,EAAE,MAAM,YAAY,MAAM,UAAU;AAAA,UACpC,EAAE,MAAM,oBAAoB,MAAM,UAAU;AAAA,UAC5C,EAAE,MAAM,qBAAqB,MAAM,UAAU;AAAA,QAC/C;AAAA,MACF;AAAA,IACF;AAAA,IACA,SAAS,CAAC,EAAE,MAAM,aAAa,MAAM,UAAU,CAAC;AAAA,EAClD;AACF;AAIO,IAAM,YAAY;AAAA,EACvB;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ;AAAA,MACN,EAAE,MAAM,WAAW,MAAM,UAAU;AAAA,MACnC,EAAE,MAAM,UAAU,MAAM,UAAU;AAAA,IACpC;AAAA,IACA,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,OAAO,CAAC;AAAA,EACtC;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC,EAAE,MAAM,WAAW,MAAM,UAAU,CAAC;AAAA,IAC7C,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,EACzC;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ;AAAA,MACN,EAAE,MAAM,SAAS,MAAM,UAAU;AAAA,MACjC,EAAE,MAAM,WAAW,MAAM,UAAU;AAAA,IACrC;AAAA,IACA,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,EACzC;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,QAAQ,CAAC;AAAA,EACvC;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,SAAS,CAAC;AAAA,EACxC;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ;AAAA,MACN,EAAE,MAAM,MAAM,MAAM,UAAU;AAAA,MAC9B,EAAE,MAAM,UAAU,MAAM,UAAU;AAAA,IACpC;AAAA,IACA,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,OAAO,CAAC;AAAA,EACtC;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ;AAAA,MACN,EAAE,MAAM,QAAQ,MAAM,UAAU;AAAA,MAChC,EAAE,MAAM,MAAM,MAAM,UAAU;AAAA,MAC9B,EAAE,MAAM,UAAU,MAAM,UAAU;AAAA,IACpC;AAAA,IACA,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,OAAO,CAAC;AAAA,EACtC;AACF;AAIO,IAAM,wBAAwB;AAAA,EACnC;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ;AAAA,MACN,EAAE,MAAM,kBAAkB,MAAM,UAAU;AAAA,MAC1C;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,QACN,YAAY;AAAA,UACV,EAAE,MAAM,eAAe,MAAM,SAAS;AAAA,UACtC,EAAE,MAAM,SAAS,MAAM,UAAU;AAAA,UACjC,EAAE,MAAM,QAAQ,MAAM,SAAS;AAAA,UAC/B,EAAE,MAAM,UAAU,MAAM,SAAS;AAAA,UACjC,EAAE,MAAM,gBAAgB,MAAM,OAAO;AAAA,UACrC,EAAE,MAAM,aAAa,MAAM,SAAS;AAAA,QACtC;AAAA,MACF;AAAA,IACF;AAAA,IACA,SAAS;AAAA,MACP,EAAE,MAAM,eAAe,MAAM,UAAU;AAAA,MACvC,EAAE,MAAM,SAAS,MAAM,UAAU;AAAA,IACnC;AAAA,EACF;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC,EAAE,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IACtC,SAAS;AAAA,MACP,EAAE,MAAM,MAAM,MAAM,UAAU;AAAA,MAC9B,EAAE,MAAM,SAAS,MAAM,UAAU;AAAA,MACjC,EAAE,MAAM,WAAW,MAAM,UAAU;AAAA,MACnC,EAAE,MAAM,eAAe,MAAM,SAAS;AAAA,MACtC,EAAE,MAAM,aAAa,MAAM,UAAU;AAAA,MACrC,EAAE,MAAM,UAAU,MAAM,OAAO;AAAA,MAC/B,EAAE,MAAM,aAAa,MAAM,SAAS;AAAA,IACtC;AAAA,EACF;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,SAAS;AAAA,MACP;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,QACN,YAAY;AAAA,UACV,EAAE,MAAM,MAAM,MAAM,UAAU;AAAA,UAC9B,EAAE,MAAM,SAAS,MAAM,UAAU;AAAA,UACjC,EAAE,MAAM,WAAW,MAAM,UAAU;AAAA,UACnC,EAAE,MAAM,eAAe,MAAM,SAAS;AAAA,UACtC,EAAE,MAAM,aAAa,MAAM,UAAU;AAAA,UACrC,EAAE,MAAM,UAAU,MAAM,OAAO;AAAA,UAC/B,EAAE,MAAM,aAAa,MAAM,SAAS;AAAA,QACtC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,EACzC;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC,EAAE,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IACtC,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,EACzC;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ;AAAA,MACN,EAAE,MAAM,eAAe,MAAM,UAAU;AAAA,MACvC,EAAE,MAAM,eAAe,MAAM,SAAS;AAAA,IACxC;AAAA,IACA,SAAS,CAAC;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC,EAAE,MAAM,eAAe,MAAM,UAAU,CAAC;AAAA,IACjD,SAAS,CAAC;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,EACzC;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,EACzC;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC,EAAE,MAAM,aAAa,MAAM,SAAS,CAAC;AAAA,IAC9C,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,EACzC;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC,EAAE,MAAM,aAAa,MAAM,SAAS,CAAC;AAAA,IAC9C,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,OAAO,CAAC;AAAA,EACtC;AAAA;AAAA;AAAA,EAGA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC,EAAE,MAAM,SAAS,MAAM,UAAU,CAAC;AAAA,IAC3C,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,EACzC;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,EACzC;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,EACzC;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,MACN,EAAE,MAAM,MAAM,MAAM,WAAW,SAAS,KAAK;AAAA,MAC7C,EAAE,MAAM,SAAS,MAAM,WAAW,SAAS,KAAK;AAAA,MAChD,EAAE,MAAM,WAAW,MAAM,WAAW,SAAS,KAAK;AAAA,MAClD,EAAE,MAAM,eAAe,MAAM,UAAU,SAAS,MAAM;AAAA,MACtD,EAAE,MAAM,aAAa,MAAM,UAAU,SAAS,MAAM;AAAA,IACtD;AAAA,EACF;AACF;AAQO,IAAM,sBAAsB;AAAA,EACjC;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,EACzC;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,EACzC;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,EACzC;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,EACzC;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC,EAAE,MAAM,qBAAqB,MAAM,UAAU,CAAC;AAAA,IACvD,SAAS,CAAC;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC,EAAE,MAAM,gBAAgB,MAAM,UAAU,CAAC;AAAA,IAClD,SAAS,CAAC;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC,EAAE,MAAM,qBAAqB,MAAM,UAAU,CAAC;AAAA,IACvD,SAAS,CAAC;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC,EAAE,MAAM,gBAAgB,MAAM,UAAU,CAAC;AAAA,IAClD,SAAS,CAAC;AAAA,EACZ;AACF;AAIO,IAAM,kBAAkB;AAAA,EAC7B;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ;AAAA,MACN,EAAE,MAAM,QAAQ,MAAM,UAAU;AAAA,MAChC,EAAE,MAAM,OAAO,MAAM,SAAS;AAAA,MAC9B,EAAE,MAAM,SAAS,MAAM,SAAS;AAAA,IAClC;AAAA,IACA,SAAS,CAAC;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ;AAAA,MACN,EAAE,MAAM,QAAQ,MAAM,UAAU;AAAA,MAChC,EAAE,MAAM,OAAO,MAAM,SAAS;AAAA,IAChC;AAAA,IACA,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,SAAS,CAAC;AAAA,EACxC;AACF;AAIO,IAAM,wBAAwB;AAAA,EACnC;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ;AAAA,MACN,EAAE,MAAM,kBAAkB,MAAM,UAAU;AAAA,MAC1C,EAAE,MAAM,kBAAkB,MAAM,UAAU;AAAA,MAC1C,EAAE,MAAM,QAAQ,MAAM,SAAS;AAAA,MAC/B,EAAE,MAAM,eAAe,MAAM,SAAS;AAAA,IACxC;AAAA,IACA,SAAS,CAAC,EAAE,MAAM,cAAc,MAAM,UAAU,CAAC;AAAA,EACnD;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC,EAAE,MAAM,cAAc,MAAM,UAAU,CAAC;AAAA,IAChD,SAAS;AAAA,MACP;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,QACN,YAAY;AAAA,UACV,EAAE,MAAM,kBAAkB,MAAM,UAAU;AAAA,UAC1C,EAAE,MAAM,WAAW,MAAM,UAAU;AAAA,UACnC,EAAE,MAAM,kBAAkB,MAAM,UAAU;AAAA,UAC1C,EAAE,MAAM,UAAU,MAAM,OAAO;AAAA,UAC/B,EAAE,MAAM,QAAQ,MAAM,SAAS;AAAA,UAC/B,EAAE,MAAM,eAAe,MAAM,SAAS;AAAA,QACxC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC,EAAE,MAAM,kBAAkB,MAAM,UAAU,CAAC;AAAA,IACpD,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,YAAY,CAAC;AAAA,EAC3C;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC,EAAE,MAAM,WAAW,MAAM,UAAU,CAAC;AAAA,IAC7C,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,YAAY,CAAC;AAAA,EAC3C;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,EACzC;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC,EAAE,MAAM,cAAc,MAAM,UAAU,CAAC;AAAA,IAChD,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,OAAO,CAAC;AAAA,EACtC;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC,EAAE,MAAM,cAAc,MAAM,UAAU,CAAC;AAAA,IAChD,SAAS,CAAC;AAAA,EACZ;AACF;AAIO,IAAM,qBAAqB;AAAA,EAChC;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ;AAAA,MACN,EAAE,MAAM,aAAa,MAAM,UAAU;AAAA,MACrC,EAAE,MAAM,UAAU,MAAM,UAAU;AAAA,IACpC;AAAA,IACA,SAAS,CAAC;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC,EAAE,MAAM,UAAU,MAAM,UAAU,CAAC;AAAA,IAC5C,SAAS,CAAC;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ;AAAA,MACN,EAAE,MAAM,oBAAoB,MAAM,UAAU;AAAA,MAC5C,EAAE,MAAM,oBAAoB,MAAM,UAAU;AAAA,IAC9C;AAAA,IACA,SAAS,CAAC;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC,EAAE,MAAM,WAAW,MAAM,UAAU,CAAC;AAAA,IAC7C,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,EACzC;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC,EAAE,MAAM,SAAS,MAAM,UAAU,CAAC;AAAA,IAC3C,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,EACzC;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,EACzC;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC,EAAE,MAAM,oBAAoB,MAAM,UAAU,CAAC;AAAA,IACtD,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,EACzC;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC,EAAE,MAAM,oBAAoB,MAAM,UAAU,CAAC;AAAA,IACtD,SAAS,CAAC;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC,EAAE,MAAM,QAAQ,MAAM,UAAU,CAAC;AAAA,IAC1C,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,EACzC;AACF;AAIO,IAAM,UAAU;AAAA,EACrB;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ;AAAA,MACN;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,QACN,YAAY;AAAA,UACV,EAAE,MAAM,UAAU,MAAM,UAAU;AAAA,UAClC;AAAA,YACE,MAAM;AAAA,YACN,MAAM;AAAA,YACN,YAAY;AAAA,cACV,EAAE,MAAM,aAAa,MAAM,UAAU;AAAA,cACrC,EAAE,MAAM,kBAAkB,MAAM,SAAS;AAAA,cACzC,EAAE,MAAM,aAAa,MAAM,OAAO;AAAA,cAClC,EAAE,MAAM,UAAU,MAAM,UAAU;AAAA,cAClC,EAAE,MAAM,QAAQ,MAAM,QAAQ;AAAA,cAC9B,EAAE,MAAM,SAAS,MAAM,UAAU;AAAA,YACnC;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,EACzC;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ;AAAA,MACN;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,QACN,YAAY;AAAA,UACV,EAAE,MAAM,UAAU,MAAM,UAAU;AAAA,UAClC;AAAA,YACE,MAAM;AAAA,YACN,MAAM;AAAA,YACN,YAAY;AAAA,cACV,EAAE,MAAM,OAAO,MAAM,UAAU;AAAA,cAC/B,EAAE,MAAM,SAAS,MAAM,UAAU;AAAA,YACnC;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,SAAS,CAAC;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC,EAAE,MAAM,OAAO,MAAM,UAAU,CAAC;AAAA,IACzC,SAAS;AAAA,MACP;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,QACN,YAAY;AAAA,UACV,EAAE,MAAM,OAAO,MAAM,UAAU;AAAA,UAC/B,EAAE,MAAM,UAAU,MAAM,UAAU;AAAA,UAClC,EAAE,MAAM,QAAQ,MAAM,SAAS;AAAA,UAC/B,EAAE,MAAM,kBAAkB,MAAM,SAAS;AAAA,UACzC,EAAE,MAAM,kBAAkB,MAAM,SAAS;AAAA,UACzC,EAAE,MAAM,UAAU,MAAM,UAAU;AAAA,UAClC,EAAE,MAAM,aAAa,MAAM,UAAU;AAAA,UACrC,EAAE,MAAM,YAAY,MAAM,UAAU;AAAA,UACpC,EAAE,MAAM,aAAa,MAAM,OAAO;AAAA,UAClC,EAAE,MAAM,QAAQ,MAAM,QAAQ;AAAA,QAChC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAIO,IAAM,yBAAyB;AAAA;AAAA,EAEpC;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ;AAAA,MACN,EAAE,MAAM,SAAS,MAAM,UAAU;AAAA,MACjC,EAAE,MAAM,YAAY,MAAM,UAAU;AAAA,MACpC,EAAE,MAAM,eAAe,MAAM,SAAS;AAAA,MACtC,EAAE,MAAM,oBAAoB,MAAM,UAAU;AAAA,MAC5C;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,QACN,YAAY;AAAA,UACV,EAAE,MAAM,UAAU,MAAM,UAAU;AAAA,UAClC,EAAE,MAAM,QAAQ,MAAM,QAAQ;AAAA,UAC9B,EAAE,MAAM,SAAS,MAAM,UAAU;AAAA,QACnC;AAAA,MACF;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,QACN,YAAY;AAAA,UACV,EAAE,MAAM,UAAU,MAAM,UAAU;AAAA,UAClC,EAAE,MAAM,QAAQ,MAAM,QAAQ;AAAA,UAC9B,EAAE,MAAM,SAAS,MAAM,UAAU;AAAA,QACnC;AAAA,MACF;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,QACN,YAAY;AAAA,UACV,EAAE,MAAM,SAAS,MAAM,UAAU;AAAA,UACjC,EAAE,MAAM,YAAY,MAAM,UAAU;AAAA,QACtC;AAAA,MACF;AAAA,IACF;AAAA,IACA,SAAS,CAAC,EAAE,MAAM,cAAc,MAAM,UAAU,CAAC;AAAA,EACnD;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ;AAAA,MACN,EAAE,MAAM,cAAc,MAAM,UAAU;AAAA,MACtC,EAAE,MAAM,WAAW,MAAM,QAAQ;AAAA,IACnC;AAAA,IACA,SAAS,CAAC;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC,EAAE,MAAM,cAAc,MAAM,UAAU,CAAC;AAAA,IAChD,SAAS,CAAC;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC,EAAE,MAAM,cAAc,MAAM,UAAU,CAAC;AAAA,IAChD,SAAS,CAAC;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ;AAAA,MACN,EAAE,MAAM,cAAc,MAAM,UAAU;AAAA,MACtC;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,QACN,YAAY;AAAA,UACV,EAAE,MAAM,UAAU,MAAM,UAAU;AAAA,UAClC,EAAE,MAAM,QAAQ,MAAM,QAAQ;AAAA,UAC9B,EAAE,MAAM,SAAS,MAAM,UAAU;AAAA,QACnC;AAAA,MACF;AAAA,IACF;AAAA,IACA,SAAS,CAAC;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC,EAAE,MAAM,cAAc,MAAM,UAAU,CAAC;AAAA,IAChD,SAAS,CAAC;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC,EAAE,MAAM,cAAc,MAAM,UAAU,CAAC;AAAA,IAChD,SAAS,CAAC;AAAA,EACZ;AAAA;AAAA,EAEA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC,EAAE,MAAM,cAAc,MAAM,UAAU,CAAC;AAAA,IAChD,SAAS;AAAA,MACP;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,QACN,YAAY;AAAA,UACV,EAAE,MAAM,MAAM,MAAM,UAAU;AAAA,UAC9B,EAAE,MAAM,YAAY,MAAM,UAAU;AAAA,UACpC,EAAE,MAAM,SAAS,MAAM,UAAU;AAAA,UACjC,EAAE,MAAM,YAAY,MAAM,UAAU;AAAA,UACpC,EAAE,MAAM,eAAe,MAAM,SAAS;AAAA,UACtC,EAAE,MAAM,qBAAqB,MAAM,UAAU;AAAA,UAC7C,EAAE,MAAM,oBAAoB,MAAM,UAAU;AAAA,UAC5C,EAAE,MAAM,YAAY,MAAM,UAAU;AAAA,UACpC,EAAE,MAAM,gBAAgB,MAAM,UAAU;AAAA,UACxC,EAAE,MAAM,gBAAgB,MAAM,UAAU;AAAA,UACxC,EAAE,MAAM,qBAAqB,MAAM,UAAU;AAAA,UAC7C,EAAE,MAAM,WAAW,MAAM,UAAU;AAAA,UACnC,EAAE,MAAM,aAAa,MAAM,UAAU;AAAA,UACrC,EAAE,MAAM,aAAa,MAAM,UAAU;AAAA,UACrC,EAAE,MAAM,cAAc,MAAM,UAAU;AAAA,UACtC,EAAE,MAAM,SAAS,MAAM,QAAQ;AAAA,UAC/B,EAAE,MAAM,oBAAoB,MAAM,UAAU;AAAA,UAC5C,EAAE,MAAM,0BAA0B,MAAM,UAAU;AAAA,UAClD,EAAE,MAAM,gCAAgC,MAAM,UAAU;AAAA,UACxD,EAAE,MAAM,0BAA0B,MAAM,UAAU;AAAA,UAClD,EAAE,MAAM,iCAAiC,MAAM,UAAU;AAAA,UACzD,EAAE,MAAM,mBAAmB,MAAM,OAAO;AAAA,QAC1C;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC,EAAE,MAAM,cAAc,MAAM,UAAU,CAAC;AAAA,IAChD,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,QAAQ,CAAC;AAAA,EACvC;AAAA;AAAA;AAAA,EAGA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ;AAAA,MACN,EAAE,MAAM,cAAc,MAAM,UAAU;AAAA,MACtC,EAAE,MAAM,SAAS,MAAM,UAAU;AAAA,IACnC;AAAA,IACA,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,EACzC;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ;AAAA,MACN,EAAE,MAAM,cAAc,MAAM,UAAU;AAAA,MACtC,EAAE,MAAM,SAAS,MAAM,UAAU;AAAA,IACnC;AAAA,IACA,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,OAAO,CAAC;AAAA,EACtC;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,EACzC;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,SAAS;AAAA,MACP;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,QACN,YAAY;AAAA,UACV,EAAE,MAAM,gBAAgB,MAAM,UAAU;AAAA,UACxC,EAAE,MAAM,mBAAmB,MAAM,UAAU;AAAA,UAC3C,EAAE,MAAM,oBAAoB,MAAM,UAAU;AAAA,UAC5C,EAAE,MAAM,wBAAwB,MAAM,UAAU;AAAA,UAChD,EAAE,MAAM,kBAAkB,MAAM,UAAU;AAAA,UAC1C,EAAE,MAAM,uBAAuB,MAAM,UAAU;AAAA,UAC/C,EAAE,MAAM,kBAAkB,MAAM,UAAU;AAAA,UAC1C,EAAE,MAAM,uBAAuB,MAAM,UAAU;AAAA,UAC/C,EAAE,MAAM,uBAAuB,MAAM,UAAU;AAAA,QACjD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA,EAGA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,EACzC;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,EACzC;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,EACzC;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,EACzC;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC,EAAE,MAAM,cAAc,MAAM,UAAU,CAAC;AAAA,IAChD,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,EACzC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,MACN,EAAE,MAAM,cAAc,MAAM,WAAW,SAAS,KAAK;AAAA,MACrD,EAAE,MAAM,YAAY,MAAM,WAAW,SAAS,KAAK;AAAA,MACnD,EAAE,MAAM,SAAS,MAAM,WAAW,SAAS,KAAK;AAAA,MAChD,EAAE,MAAM,qBAAqB,MAAM,WAAW,SAAS,MAAM;AAAA,MAC7D,EAAE,MAAM,oBAAoB,MAAM,WAAW,SAAS,MAAM;AAAA,MAC5D,EAAE,MAAM,oBAAoB,MAAM,WAAW,SAAS,MAAM;AAAA,MAC5D,EAAE,MAAM,uBAAuB,MAAM,WAAW,SAAS,MAAM;AAAA,MAC/D,EAAE,MAAM,eAAe,MAAM,UAAU,SAAS,MAAM;AAAA,IACxD;AAAA,EACF;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,MACN,EAAE,MAAM,cAAc,MAAM,WAAW,SAAS,KAAK;AAAA,MACrD,EAAE,MAAM,eAAe,MAAM,WAAW,SAAS,KAAK;AAAA,MACtD,EAAE,MAAM,WAAW,MAAM,WAAW,SAAS,KAAK;AAAA,IACpD;AAAA,EACF;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,MACN,EAAE,MAAM,cAAc,MAAM,WAAW,SAAS,KAAK;AAAA,MACrD,EAAE,MAAM,SAAS,MAAM,WAAW,SAAS,KAAK;AAAA,MAChD,EAAE,MAAM,WAAW,MAAM,SAAS,SAAS,MAAM;AAAA,MACjD,EAAE,MAAM,UAAU,MAAM,WAAW,SAAS,MAAM;AAAA,IACpD;AAAA,EACF;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,MACN,EAAE,MAAM,cAAc,MAAM,WAAW,SAAS,KAAK;AAAA,MACrD,EAAE,MAAM,SAAS,MAAM,WAAW,SAAS,KAAK;AAAA,MAChD,EAAE,MAAM,mBAAmB,MAAM,WAAW,SAAS,MAAM;AAAA,IAC7D;AAAA,EACF;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,MACN,EAAE,MAAM,cAAc,MAAM,WAAW,SAAS,KAAK;AAAA,MACrD,EAAE,MAAM,SAAS,MAAM,WAAW,SAAS,KAAK;AAAA,MAChD,EAAE,MAAM,OAAO,MAAM,UAAU,SAAS,MAAM;AAAA,MAC9C,EAAE,MAAM,kBAAkB,MAAM,WAAW,SAAS,MAAM;AAAA,MAC1D,EAAE,MAAM,YAAY,MAAM,WAAW,SAAS,MAAM;AAAA,IACtD;AAAA,EACF;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,MACN,EAAE,MAAM,cAAc,MAAM,WAAW,SAAS,KAAK;AAAA,MACrD,EAAE,MAAM,eAAe,MAAM,WAAW,SAAS,KAAK;AAAA,IACxD;AAAA,EACF;AAAA;AAAA,EAEA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC,EAAE,MAAM,mBAAmB,MAAM,UAAU,CAAC;AAAA,IACrD,SAAS,CAAC;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC,EAAE,MAAM,sBAAsB,MAAM,UAAU,CAAC;AAAA,IACxD,SAAS,CAAC;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC,EAAE,MAAM,uBAAuB,MAAM,UAAU,CAAC;AAAA,IACzD,SAAS,CAAC;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC,EAAE,MAAM,2BAA2B,MAAM,UAAU,CAAC;AAAA,IAC7D,SAAS,CAAC;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC,EAAE,MAAM,0BAA0B,MAAM,UAAU,CAAC;AAAA,IAC5D,SAAS,CAAC;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC,EAAE,MAAM,qBAAqB,MAAM,UAAU,CAAC;AAAA,IACvD,SAAS,CAAC;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC,EAAE,MAAM,cAAc,MAAM,UAAU,CAAC;AAAA,IAChD,SAAS,CAAC;AAAA,EACZ;AAAA;AAAA;AAAA;AAAA,EAIA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC,EAAE,MAAM,cAAc,MAAM,UAAU,CAAC;AAAA,IAChD,SAAS;AAAA,MACP;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,QACN,YAAY;AAAA,UACV,EAAE,MAAM,UAAU,MAAM,UAAU;AAAA,UAClC,EAAE,MAAM,QAAQ,MAAM,QAAQ;AAAA,UAC9B,EAAE,MAAM,SAAS,MAAM,UAAU;AAAA,QACnC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC,EAAE,MAAM,cAAc,MAAM,UAAU,CAAC;AAAA,IAChD,SAAS;AAAA,MACP;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,QACN,YAAY;AAAA,UACV,EAAE,MAAM,UAAU,MAAM,UAAU;AAAA,UAClC,EAAE,MAAM,QAAQ,MAAM,QAAQ;AAAA,UAC9B,EAAE,MAAM,SAAS,MAAM,UAAU;AAAA,QACnC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAIO,IAAM,sBAAsB;AAAA,EACjC;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ;AAAA,MACN,EAAE,MAAM,UAAU,MAAM,SAAS;AAAA,MACjC,EAAE,MAAM,YAAY,MAAM,UAAU;AAAA,MACpC,EAAE,MAAM,aAAa,MAAM,OAAO;AAAA,IACpC;AAAA,IACA,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,EACzC;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,MACN,EAAE,MAAM,OAAO,MAAM,WAAW,SAAS,KAAK;AAAA,MAC9C,EAAE,MAAM,cAAc,MAAM,WAAW,SAAS,KAAK;AAAA,IACvD;AAAA,EACF;AACF;AAIO,IAAM,oBAAoB;AAAA,EAC/B;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ;AAAA,MACN,EAAE,MAAM,SAAS,MAAM,UAAU;AAAA,MACjC,EAAE,MAAM,YAAY,MAAM,UAAU;AAAA,MACpC,EAAE,MAAM,QAAQ,MAAM,QAAQ;AAAA,IAChC;AAAA,IACA,SAAS,CAAC;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC,EAAE,MAAM,QAAQ,MAAM,QAAQ,CAAC;AAAA,IACxC,SAAS,CAAC;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,SAAS,CAAC;AAAA,EACxC;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,EACzC;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,EACzC;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,OAAO,CAAC;AAAA,EACtC;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,QAAQ,CAAC;AAAA,EACvC;AAAA,EACA;AAAA;AAAA;AAAA;AAAA,IAIE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,SAAS;AAAA,MACP,EAAE,MAAM,SAAS,MAAM,UAAU;AAAA,MACjC,EAAE,MAAM,SAAS,MAAM,OAAO;AAAA,IAChC;AAAA,EACF;AACF;AAIO,IAAM,gCAAgC;AAAA,EAC3C,GAAG;AAAA,EACH;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,OAAO,CAAC;AAAA,EACtC;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,OAAO,CAAC;AAAA,EACtC;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,OAAO,CAAC;AAAA,EACtC;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ;AAAA,MACN,EAAE,MAAM,SAAS,MAAM,SAAS;AAAA,MAChC,EAAE,MAAM,WAAW,MAAM,QAAQ;AAAA,MACjC,EAAE,MAAM,eAAe,MAAM,SAAS;AAAA,IACxC;AAAA,IACA,SAAS,CAAC;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,OAAO,CAAC;AAAA,EACtC;AACF;AAIO,IAAM,yBAAyB;AAAA;AAAA,EAEpC,GAAG;AAAA;AAAA,EAEH;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC;AAAA,EACZ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC,EAAE,MAAM,gBAAgB,MAAM,UAAU,CAAC;AAAA,IAClD,SAAS,CAAC;AAAA,EACZ;AAAA;AAAA,EAEA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,SAAS;AAAA,MACP;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,QACN,YAAY;AAAA,UACV,EAAE,MAAM,SAAS,MAAM,UAAU;AAAA,UACjC,EAAE,MAAM,mBAAmB,MAAM,UAAU;AAAA,UAC3C,EAAE,MAAM,eAAe,MAAM,UAAU;AAAA,UACvC,EAAE,MAAM,kBAAkB,MAAM,UAAU;AAAA,QAC5C;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,EACzC;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,EACzC;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,EACzC;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,EACzC;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,EACzC;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,EACzC;AAAA;AAAA,EAEA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,MACN,EAAE,MAAM,UAAU,MAAM,aAAa,SAAS,MAAM;AAAA,MACpD,EAAE,MAAM,cAAc,MAAM,aAAa,SAAS,MAAM;AAAA,MACxD,EAAE,MAAM,cAAc,MAAM,aAAa,SAAS,MAAM;AAAA,IAC1D;AAAA,EACF;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,MACN,EAAE,MAAM,UAAU,MAAM,aAAa,SAAS,MAAM;AAAA,MACpD,EAAE,MAAM,cAAc,MAAM,aAAa,SAAS,MAAM;AAAA,MACxD,EAAE,MAAM,cAAc,MAAM,aAAa,SAAS,MAAM;AAAA,MACxD,EAAE,MAAM,eAAe,MAAM,aAAa,SAAS,MAAM;AAAA,MACzD,EAAE,MAAM,eAAe,MAAM,aAAa,SAAS,MAAM;AAAA,MACzD,EAAE,MAAM,mBAAmB,MAAM,WAAW,SAAS,MAAM;AAAA,IAC7D;AAAA,EACF;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,MACN,EAAE,MAAM,UAAU,MAAM,aAAa,SAAS,MAAM;AAAA,MACpD,EAAE,MAAM,cAAc,MAAM,aAAa,SAAS,MAAM;AAAA,MACxD,EAAE,MAAM,cAAc,MAAM,aAAa,SAAS,MAAM;AAAA,MACxD,EAAE,MAAM,eAAe,MAAM,aAAa,SAAS,MAAM;AAAA,MACzD,EAAE,MAAM,eAAe,MAAM,aAAa,SAAS,MAAM;AAAA,MACzD,EAAE,MAAM,mBAAmB,MAAM,WAAW,SAAS,MAAM;AAAA,MAC3D,EAAE,MAAM,iBAAiB,MAAM,WAAW,SAAS,MAAM;AAAA,IAC3D;AAAA,EACF;AACF;AAMO,IAAM,qBAAqB;AAAA,EAChC;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,iBAAiB;AAAA,IACjB,QAAQ;AAAA,MACN,EAAE,MAAM,WAAW,MAAM,UAAU;AAAA,MACnC,EAAE,MAAM,YAAY,MAAM,UAAU;AAAA,MACpC,EAAE,MAAM,OAAO,MAAM,SAAS;AAAA,MAC9B,EAAE,MAAM,YAAY,MAAM,UAAU;AAAA,MACpC,EAAE,MAAM,qBAAqB,MAAM,UAAU;AAAA,IAC/C;AAAA,IACA,SAAS,CAAC,EAAE,MAAM,aAAa,MAAM,UAAU,CAAC;AAAA,EAClD;AACF;","names":[]}
@@ -1,21 +1,21 @@
1
1
  import {
2
2
  UNISWAP
3
- } from "./chunk-GWMTAW6A.js";
3
+ } from "./chunk-RAITRCM7.js";
4
4
  import {
5
5
  getAccount,
6
6
  getPublicClient,
7
7
  sendTxWithRetry,
8
8
  waitForReceipt
9
- } from "./chunk-YJSCIQUZ.js";
9
+ } from "./chunk-WECQ6NVS.js";
10
10
  import {
11
11
  getChain
12
- } from "./chunk-2LRC7I33.js";
12
+ } from "./chunk-HYUUR6SC.js";
13
13
  import {
14
14
  getUniswapApiKey
15
- } from "./chunk-2W4KGGPU.js";
15
+ } from "./chunk-GSC7PVEO.js";
16
16
  import {
17
17
  UNISWAP_QUOTER_V2_ABI
18
- } from "./chunk-YZHZSBES.js";
18
+ } from "./chunk-BQMOE4FJ.js";
19
19
 
20
20
  // src/providers/uniswap.ts
21
21
  import { isAddress } from "viem";
@@ -322,4 +322,4 @@ export {
322
322
  encodeSwapPath,
323
323
  getMultiHopQuote
324
324
  };
325
- //# sourceMappingURL=chunk-VYF2TXPX.js.map
325
+ //# sourceMappingURL=chunk-D4SPHYXA.js.map
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  EAS_CONTRACTS,
3
3
  EAS_SCHEMAS
4
- } from "./chunk-GWMTAW6A.js";
4
+ } from "./chunk-RAITRCM7.js";
5
5
  import {
6
6
  getAccount,
7
7
  getPublicClient,
8
8
  waitForReceipt,
9
9
  writeContractWithRetry
10
- } from "./chunk-YJSCIQUZ.js";
10
+ } from "./chunk-WECQ6NVS.js";
11
11
  import {
12
12
  CHAIN_REGISTRY,
13
13
  getChain,
@@ -15,10 +15,10 @@ import {
15
15
  getNetwork,
16
16
  isTestnet,
17
17
  withNetwork
18
- } from "./chunk-2LRC7I33.js";
18
+ } from "./chunk-HYUUR6SC.js";
19
19
  import {
20
20
  EAS_ABI
21
- } from "./chunk-YZHZSBES.js";
21
+ } from "./chunk-BQMOE4FJ.js";
22
22
 
23
23
  // src/lib/eas.ts
24
24
  import { encodeAbiParameters, parseAbiParameters, decodeAbiParameters } from "viem";
@@ -40,7 +40,7 @@ function assertSchemasRegistered() {
40
40
  }
41
41
  }
42
42
  function getEasNetwork() {
43
- return isTestnet() ? "base-sepolia" : "base";
43
+ return getNetwork();
44
44
  }
45
45
  function getEasGraphqlUrl() {
46
46
  const url = getChainConfig().easGraphqlUrl;
@@ -453,4 +453,4 @@ export {
453
453
  queryApprovals,
454
454
  queryJoinRequests
455
455
  };
456
- //# sourceMappingURL=chunk-UCQEEF3Z.js.map
456
+ //# sourceMappingURL=chunk-FOAX5PGR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/eas.ts"],"sourcesContent":["/**\n * EAS (Ethereum Attestation Service) wrapper for fund join requests and approvals.\n *\n * Uses viem for on-chain writes and the EAS GraphQL API for queries.\n * No ethers dependency — attestation data is encoded with viem's encodeAbiParameters.\n */\n\nimport type { Address, Hex } from \"viem\";\nimport { encodeAbiParameters, parseAbiParameters, decodeAbiParameters } from \"viem\";\nimport { getPublicClient, getAccount, writeContractWithRetry, waitForReceipt } from \"./client.js\";\nimport { getChain, getNetwork, getChainConfig, withNetwork, isTestnet, CHAIN_REGISTRY, type Network } from \"./network.js\";\nimport { EAS_CONTRACTS, EAS_SCHEMAS } from \"./addresses.js\";\nimport { EAS_ABI } from \"./abis.js\";\n\n// ── Schema definitions ──\n\nconst ZERO_BYTES32 = \"0x0000000000000000000000000000000000000000000000000000000000000000\" as Hex;\n\n// keccak256(\"Attested(address,address,bytes32,bytes32)\")\nconst ATTESTED_TOPIC = \"0x8bf46bf4cfd674fa735a3d63ec1c9ad4153f033c290341f3a588b75685141b35\" as Hex;\n\nconst JOIN_REQUEST_PARAMS = parseAbiParameters(\"uint256, uint256, address, string\");\nconst AGENT_APPROVED_PARAMS = parseAbiParameters(\"uint256, uint256, address\");\nconst X402_RESEARCH_PARAMS = parseAbiParameters(\"string, string, string, string, string\");\nconst VENICE_PROVISION_PARAMS = parseAbiParameters(\"address, string\");\nconst VENICE_INFERENCE_PARAMS = parseAbiParameters(\"string, uint256, uint256, string\");\nconst TRADE_EXECUTED_PARAMS = parseAbiParameters(\"address, address, uint256, string, string, string\");\n\nfunction assertSchemasRegistered() {\n const schemas = EAS_SCHEMAS();\n if (schemas.SYNDICATE_JOIN_REQUEST === ZERO_BYTES32 || schemas.AGENT_APPROVED === ZERO_BYTES32) {\n const flag = isTestnet() ? \" --testnet\" : \"\";\n throw new Error(\n `EAS schemas not registered on ${getNetwork()}. Run: cd cli && npx tsx scripts/register-eas-schemas.ts${flag}`,\n );\n }\n}\n\n/**\n * The chain where fund-coordination attestations live. EAS is not deployed\n * on the current deployment target (robinhood-testnet), so this returns the\n * active network — downstream `getEasGraphqlUrl` / `EAS_CONTRACTS()` then fail\n * with a clear \"EAS not available\" error. When an EAS-bearing chain is added\n * back, route coordination attestations to it here.\n */\nexport function getEasNetwork(): Network {\n return getNetwork();\n}\n\n// ── GraphQL ──\n\nfunction getEasGraphqlUrl(): string {\n const url = getChainConfig().easGraphqlUrl;\n if (!url) {\n throw new Error(\n `EAS is not available on ${getNetwork()}. Attestation operations require a chain with EAS (e.g. base, base-sepolia).`,\n );\n }\n return url;\n}\n\nexport function getEasScanUrl(uid: Hex): string {\n // Always use the EAS chain's scan host — attestations live on Base, even\n // for HyperEVM funds. Read the registry directly rather than mutating\n // the singleton, since this is a pure URL build.\n const host = CHAIN_REGISTRY[getEasNetwork()].easScanHost;\n if (!host) {\n throw new Error(`EAS scan host is not configured on ${getEasNetwork()}.`);\n }\n return `https://${host}/attestation/view/${uid}`;\n}\n\n/**\n * The block-explorer URL for a tx that ran on the EAS chain. Use this for\n * attestation create/revoke txs so the link points to base(-sepolia) scan\n * even when the active --chain is HyperEVM / Robinhood.\n */\nexport function getEasExplorerUrl(txHash: string): string {\n const host = CHAIN_REGISTRY[getEasNetwork()].explorerHost;\n return `https://${host}/tx/${txHash}`;\n}\n\n// ── Attestation Creation ──\n\n/**\n * Extract the attestation UID from a transaction receipt.\n * The EAS contract emits: event Attested(address indexed recipient, address indexed attester, bytes32 uid, bytes32 indexed schemaUID)\n * uid is a non-indexed parameter in the event data.\n */\nfunction extractAttestationUid(receipt: { logs: readonly { topics: readonly Hex[]; data: Hex }[] }): Hex {\n for (const log of receipt.logs) {\n // Match the Attested event signature to avoid false positives from other events\n if (log.topics[0] !== ATTESTED_TOPIC) continue;\n // Attested event has 4 topics (sig + 3 indexed) and data contains the uid (bytes32)\n if (log.topics.length === 4 && log.data.length >= 66) {\n return (\"0x\" + log.data.slice(2, 66)) as Hex;\n }\n }\n throw new Error(\"Could not extract attestation UID from transaction receipt\");\n}\n\n// ── Message Prefix Helpers ──\n//\n// Join-request messages can carry CLI metadata as bracketed prefixes. Order\n// is `[chain:<network>] [ref:<id>] body` — chain outer because the chain\n// disambiguates the fund, ref inner because it's optional and per-user.\n// Both prefixes are stripped before display.\n\nconst CHAIN_PREFIX_RE = /^\\[chain:([a-z0-9-]+)\\]\\s*/;\n// Tolerate an optional leading [chain:...] prefix so parseReferrer keeps\n// working when both metadata fields are encoded.\nconst REF_PREFIX_RE = /^(?:\\[chain:[a-z0-9-]+\\]\\s*)?\\[ref:(\\d+)\\]\\s*/;\n\n/**\n * Format a message with an optional referrer prefix.\n * e.g. formatMessageWithRef(\"Hello\", 42) → \"[ref:42] Hello\"\n */\nexport function formatMessageWithRef(message: string, referrerAgentId?: number): string {\n if (referrerAgentId == null) return message;\n return `[ref:${referrerAgentId}] ${message}`;\n}\n\n/**\n * Parse a referrer agentId from a message, if present.\n * e.g. parseReferrer(\"[ref:42] Hello\") → 42\n * parseReferrer(\"[chain:hyperevm] [ref:42] Hello\") → 42\n */\nexport function parseReferrer(message: string): number | null {\n const match = message.match(REF_PREFIX_RE);\n return match ? parseInt(match[1], 10) : null;\n}\n\n/**\n * Format a message with a `[chain:<network>]` prefix when the fund\n * lives on a chain other than the EAS chain (Base / Base-Sepolia). Skipped\n * when source matches the EAS chain to avoid noise on the common case.\n */\nexport function formatMessageWithChain(\n message: string,\n sourceNetwork: Network,\n easNetwork: Network,\n): string {\n if (sourceNetwork === easNetwork) return message;\n return `[chain:${sourceNetwork}] ${message}`;\n}\n\n/**\n * Parse the source-chain prefix from a message, if present.\n * Returns null when no `[chain:<network>]` prefix is found, which means the\n * attestation was created from the EAS chain itself (e.g. base attestation\n * for a base fund).\n */\nexport function parseChain(message: string): string | null {\n const match = message.match(CHAIN_PREFIX_RE);\n return match ? match[1] : null;\n}\n\n/**\n * Strip both `[chain:...]` and `[ref:...]` prefixes from a message,\n * returning the clean human-facing body. Name kept for backward compat.\n */\nexport function stripReferrerPrefix(message: string): string {\n // REF_PREFIX_RE already swallows an optional leading chain prefix when ref\n // is present; the second replace handles a chain prefix without ref.\n return message.replace(REF_PREFIX_RE, \"\").replace(CHAIN_PREFIX_RE, \"\");\n}\n\n/**\n * Create a SYNDICATE_JOIN_REQUEST attestation.\n * Attester: the calling agent. Recipient: the fund creator.\n * If referrerAgentId is provided, it's embedded in the message as a [ref:N] prefix.\n */\nexport async function createJoinRequest(\n syndicateId: bigint,\n agentId: bigint,\n vault: Address,\n creatorAddress: Address,\n message: string,\n referrerAgentId?: number,\n): Promise<{ uid: Hex; hash: Hex }> {\n // Capture the fund's source chain BEFORE switching to the EAS chain\n // so we can encode it in the message prefix.\n const sourceNetwork = getNetwork();\n const easNetwork = getEasNetwork();\n const messageWithRef = formatMessageWithRef(message, referrerAgentId);\n const encodedMessage = formatMessageWithChain(messageWithRef, sourceNetwork, easNetwork);\n\n return withNetwork(easNetwork, async () => {\n assertSchemasRegistered();\n\n const data = encodeAbiParameters(JOIN_REQUEST_PARAMS, [\n syndicateId, agentId, vault, encodedMessage,\n ]);\n\n const hash = await writeContractWithRetry({\n account: getAccount(),\n chain: getChain(),\n address: EAS_CONTRACTS().EAS,\n abi: EAS_ABI,\n functionName: \"attest\",\n args: [{\n schema: EAS_SCHEMAS().SYNDICATE_JOIN_REQUEST,\n data: {\n recipient: creatorAddress,\n expirationTime: 0n,\n revocable: true,\n refUID: ZERO_BYTES32,\n data,\n value: 0n,\n },\n }],\n value: 0n,\n });\n\n const receipt = await waitForReceipt(hash);\n const uid = extractAttestationUid(receipt);\n\n return { uid, hash };\n });\n}\n\n/**\n * Create an AGENT_APPROVED attestation.\n * Attester: the fund creator. Recipient: the agent wallet.\n */\nexport async function createApproval(\n syndicateId: bigint,\n agentId: bigint,\n vault: Address,\n agentAddress: Address,\n): Promise<{ uid: Hex; hash: Hex }> {\n return withNetwork(getEasNetwork(), async () => {\n assertSchemasRegistered();\n\n const data = encodeAbiParameters(AGENT_APPROVED_PARAMS, [\n syndicateId, agentId, vault,\n ]);\n\n const hash = await writeContractWithRetry({\n account: getAccount(),\n chain: getChain(),\n address: EAS_CONTRACTS().EAS,\n abi: EAS_ABI,\n functionName: \"attest\",\n args: [{\n schema: EAS_SCHEMAS().AGENT_APPROVED,\n data: {\n recipient: agentAddress,\n expirationTime: 0n,\n revocable: true,\n refUID: ZERO_BYTES32,\n data,\n value: 0n,\n },\n }],\n value: 0n,\n });\n\n const receipt = await waitForReceipt(hash);\n const uid = extractAttestationUid(receipt);\n\n return { uid, hash };\n });\n}\n\n/**\n * Revoke an attestation. Only the original attester can revoke. Uses the\n * active chain's EAS — call sites that revoke fund-coordination\n * attestations (join requests, approvals) should go through\n * `revokeJoinRequest` / `revokeApproval` so the revoke lands on the same\n * chain as the original attestation (Base / Base-Sepolia).\n */\nexport async function revokeAttestation(\n schemaUid: Hex,\n attestationUid: Hex,\n): Promise<Hex> {\n return writeContractWithRetry({\n account: getAccount(),\n chain: getChain(),\n address: EAS_CONTRACTS().EAS,\n abi: EAS_ABI,\n functionName: \"revoke\",\n args: [{\n schema: schemaUid,\n data: {\n uid: attestationUid,\n value: 0n,\n },\n }],\n value: 0n,\n });\n}\n\n/** Revoke a SYNDICATE_JOIN_REQUEST on the EAS chain (Base / Base-Sepolia). */\nexport async function revokeJoinRequest(attestationUid: Hex): Promise<Hex> {\n return withNetwork(getEasNetwork(), () =>\n revokeAttestation(EAS_SCHEMAS().SYNDICATE_JOIN_REQUEST, attestationUid),\n );\n}\n\n/**\n * Create an X402_RESEARCH attestation — records a research query on-chain.\n * Attester: the agent. Recipient: vault address (links to fund) or agent itself.\n * Schema: \"string provider, string queryType, string prompt, string costUsdc, string resultUri\"\n */\nexport async function createResearchAttestation(\n provider: string,\n queryType: string,\n prompt: string,\n costUsdc: string,\n resultUri: string,\n recipient?: Address,\n): Promise<{ uid: Hex; hash: Hex }> {\n const schemas = EAS_SCHEMAS();\n if (schemas.X402_RESEARCH === ZERO_BYTES32) {\n throw new Error(\n \"X402_RESEARCH schema not registered. Run: npx tsx scripts/register-eas-schemas.ts --testnet\",\n );\n }\n\n const client = getPublicClient();\n const account = getAccount();\n\n const data = encodeAbiParameters(X402_RESEARCH_PARAMS, [\n provider, queryType, prompt, costUsdc, resultUri,\n ]);\n\n const hash = await writeContractWithRetry({\n account,\n chain: getChain(),\n address: EAS_CONTRACTS().EAS,\n abi: EAS_ABI,\n functionName: \"attest\",\n args: [{\n schema: schemas.X402_RESEARCH,\n data: {\n recipient: recipient ?? account.address,\n expirationTime: 0n,\n revocable: false,\n refUID: ZERO_BYTES32,\n data,\n value: 0n,\n },\n }],\n value: 0n,\n });\n\n const receipt = await waitForReceipt(hash);\n const uid = extractAttestationUid(receipt);\n\n return { uid, hash };\n}\n\n/**\n * Create a VENICE_PROVISION attestation — records that an agent provisioned a Venice API key.\n * Schema: \"address agent, string status\"\n */\nexport async function createVeniceProvisionAttestation(\n agent: Address,\n): Promise<{ uid: Hex; hash: Hex }> {\n const schemas = EAS_SCHEMAS();\n if (schemas.VENICE_PROVISION === ZERO_BYTES32) return skipAttestation(\"VENICE_PROVISION\");\n\n const client = getPublicClient();\n const account = getAccount();\n\n const data = encodeAbiParameters(VENICE_PROVISION_PARAMS, [agent, \"provisioned\"]);\n\n const hash = await writeContractWithRetry({\n account,\n chain: getChain(),\n address: EAS_CONTRACTS().EAS,\n abi: EAS_ABI,\n functionName: \"attest\",\n args: [{\n schema: schemas.VENICE_PROVISION,\n data: {\n recipient: agent,\n expirationTime: 0n,\n revocable: false,\n refUID: ZERO_BYTES32,\n data,\n value: 0n,\n },\n }],\n value: 0n,\n });\n\n const receipt = await waitForReceipt(hash);\n const uid = extractAttestationUid(receipt);\n return { uid, hash };\n}\n\n/**\n * Create a VENICE_INFERENCE attestation — records an inference call.\n * Attester: the agent. Recipient: vault address (links to fund) or agent itself.\n * Schema: \"string model, uint256 promptTokens, uint256 completionTokens, string promptHash\"\n */\nexport async function createVeniceInferenceAttestation(\n model: string,\n promptTokens: number,\n completionTokens: number,\n promptHash: string,\n recipient?: Address,\n): Promise<{ uid: Hex; hash: Hex }> {\n const schemas = EAS_SCHEMAS();\n if (schemas.VENICE_INFERENCE === ZERO_BYTES32) return skipAttestation(\"VENICE_INFERENCE\");\n\n const client = getPublicClient();\n const account = getAccount();\n\n const data = encodeAbiParameters(VENICE_INFERENCE_PARAMS, [\n model,\n BigInt(promptTokens),\n BigInt(completionTokens),\n promptHash,\n ]);\n\n const hash = await writeContractWithRetry({\n account,\n chain: getChain(),\n address: EAS_CONTRACTS().EAS,\n abi: EAS_ABI,\n functionName: \"attest\",\n args: [{\n schema: schemas.VENICE_INFERENCE,\n data: {\n recipient: recipient ?? account.address,\n expirationTime: 0n,\n revocable: false,\n refUID: ZERO_BYTES32,\n data,\n value: 0n,\n },\n }],\n value: 0n,\n });\n\n const receipt = await waitForReceipt(hash);\n const uid = extractAttestationUid(receipt);\n return { uid, hash };\n}\n\n/**\n * Create a TRADE_EXECUTED attestation — records a swap on-chain.\n * Attester: the agent. Recipient: vault address (links to fund) or agent itself.\n * Schema: \"address tokenIn, address tokenOut, uint256 amountIn, string amountOut, string txHash, string routing\"\n */\nexport async function createTradeAttestation(\n tokenIn: Address,\n tokenOut: Address,\n amountIn: bigint,\n amountOut: string,\n txHash: string,\n routing: string,\n recipient?: Address,\n): Promise<{ uid: Hex; hash: Hex }> {\n const schemas = EAS_SCHEMAS();\n if (schemas.TRADE_EXECUTED === ZERO_BYTES32) return skipAttestation(\"TRADE_EXECUTED\");\n\n const client = getPublicClient();\n const account = getAccount();\n\n const data = encodeAbiParameters(TRADE_EXECUTED_PARAMS, [\n tokenIn, tokenOut, amountIn, amountOut, txHash, routing,\n ]);\n\n const hash = await writeContractWithRetry({\n account,\n chain: getChain(),\n address: EAS_CONTRACTS().EAS,\n abi: EAS_ABI,\n functionName: \"attest\",\n args: [{\n schema: schemas.TRADE_EXECUTED,\n data: {\n recipient: recipient ?? account.address,\n expirationTime: 0n,\n revocable: false,\n refUID: ZERO_BYTES32,\n data,\n value: 0n,\n },\n }],\n value: 0n,\n });\n\n const receipt = await waitForReceipt(hash);\n const uid = extractAttestationUid(receipt);\n return { uid, hash };\n}\n\n/** Skip attestation gracefully when schema isn't registered on this chain. */\nfunction skipAttestation(name: string): { uid: Hex; hash: Hex } {\n return { uid: ZERO_BYTES32, hash: ZERO_BYTES32 };\n}\n\n// ── Attestation Queries ──\n\nexport interface JoinRequestAttestation {\n uid: Hex;\n attester: Address;\n recipient: Address;\n time: number;\n decoded: {\n syndicateId: bigint;\n agentId: bigint;\n vault: Address;\n message: string;\n };\n}\n\n/**\n * Query pending (non-revoked) join requests for a given recipient (creator address).\n * Uses the EAS GraphQL API.\n */\nexport interface ApprovalAttestation {\n uid: Hex;\n attester: Address;\n recipient: Address;\n time: number;\n decoded: {\n syndicateId: bigint;\n agentId: bigint;\n vault: Address;\n };\n}\n\n/**\n * Query existing (non-revoked) AGENT_APPROVED attestations created by a given attester (creator).\n * Used to check for duplicates before creating a new approval and to filter already-approved agents from requests.\n */\nexport async function queryApprovals(\n attester: Address,\n): Promise<ApprovalAttestation[]> {\n return withNetwork(getEasNetwork(), () => queryApprovalsImpl(attester));\n}\n\nasync function queryApprovalsImpl(attester: Address): Promise<ApprovalAttestation[]> {\n assertSchemasRegistered();\n const schemaUid = EAS_SCHEMAS().AGENT_APPROVED;\n const url = getEasGraphqlUrl();\n\n const query = `\n query Approvals($schemaId: String!, $attester: String!) {\n attestations(\n where: {\n schemaId: { equals: $schemaId }\n attester: { equals: $attester }\n revoked: { equals: false }\n }\n orderBy: [{ time: desc }]\n ) {\n id\n attester\n recipient\n time\n data\n }\n }\n `;\n\n const response = await fetch(url, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n query,\n variables: { schemaId: schemaUid, attester },\n }),\n });\n\n if (!response.ok) {\n throw new Error(`EAS GraphQL query failed: ${response.statusText}`);\n }\n\n const json = await response.json() as {\n data?: {\n attestations: Array<{\n id: string;\n attester: string;\n recipient: string;\n time: number;\n data: string;\n }>;\n };\n };\n\n if (!json.data?.attestations) return [];\n\n return json.data.attestations.map((a) => {\n const decoded = decodeAbiParameters(AGENT_APPROVED_PARAMS, a.data as Hex);\n return {\n uid: a.id as Hex,\n attester: a.attester as Address,\n recipient: a.recipient as Address,\n time: a.time,\n decoded: {\n syndicateId: decoded[0],\n agentId: decoded[1],\n vault: decoded[2],\n },\n };\n });\n}\n\nexport async function queryJoinRequests(\n recipient: Address,\n): Promise<JoinRequestAttestation[]> {\n return withNetwork(getEasNetwork(), () => queryJoinRequestsImpl(recipient));\n}\n\nasync function queryJoinRequestsImpl(recipient: Address): Promise<JoinRequestAttestation[]> {\n assertSchemasRegistered();\n const schemaUid = EAS_SCHEMAS().SYNDICATE_JOIN_REQUEST;\n const url = getEasGraphqlUrl();\n\n const query = `\n query JoinRequests($schemaId: String!, $recipient: String!) {\n attestations(\n where: {\n schemaId: { equals: $schemaId }\n recipient: { equals: $recipient }\n revoked: { equals: false }\n }\n orderBy: [{ time: desc }]\n ) {\n id\n attester\n recipient\n time\n data\n }\n }\n `;\n\n const response = await fetch(url, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n query,\n variables: { schemaId: schemaUid, recipient },\n }),\n });\n\n if (!response.ok) {\n throw new Error(`EAS GraphQL query failed: ${response.statusText}`);\n }\n\n const json = await response.json() as {\n data?: {\n attestations: Array<{\n id: string;\n attester: string;\n recipient: string;\n time: number;\n data: string;\n }>;\n };\n };\n\n if (!json.data?.attestations) return [];\n\n return json.data.attestations.map((a) => {\n const decoded = decodeAbiParameters(JOIN_REQUEST_PARAMS, a.data as Hex);\n return {\n uid: a.id as Hex,\n attester: a.attester as Address,\n recipient: a.recipient as Address,\n time: a.time,\n decoded: {\n syndicateId: decoded[0],\n agentId: decoded[1],\n vault: decoded[2],\n message: decoded[3],\n },\n };\n });\n}\n"],"mappings":"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","names":[]}