@stake-dao/reader 0.1.0 → 0.1.2

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 (210) hide show
  1. package/dist/esm/batches/buildYearnStrats.js +39 -0
  2. package/dist/esm/batches/buildYearnStrats.js.map +1 -0
  3. package/dist/esm/batches/curveStrats.js +4 -6
  4. package/dist/esm/batches/curveStrats.js.map +1 -1
  5. package/dist/esm/batches/fetchYearnGauges.js +76 -0
  6. package/dist/esm/batches/fetchYearnGauges.js.map +1 -0
  7. package/dist/esm/batches/index.js +2 -0
  8. package/dist/esm/batches/index.js.map +1 -1
  9. package/dist/esm/index.js +2 -0
  10. package/dist/esm/index.js.map +1 -1
  11. package/dist/esm/lockers/abis/MulticallLockers.json +591 -0
  12. package/dist/esm/lockers/fetch/index.js +306 -0
  13. package/dist/esm/lockers/fetch/index.js.map +1 -0
  14. package/dist/esm/lockers/utils/cakeLockerAirdrop.js +46 -0
  15. package/dist/esm/lockers/utils/cakeLockerAirdrop.js.map +1 -0
  16. package/dist/esm/lockers/utils/callsForLockers/depositorCalls.js +20 -0
  17. package/dist/esm/lockers/utils/callsForLockers/depositorCalls.js.map +1 -0
  18. package/dist/esm/lockers/utils/callsForLockers/feeCalls.js +94 -0
  19. package/dist/esm/lockers/utils/callsForLockers/feeCalls.js.map +1 -0
  20. package/dist/esm/lockers/utils/callsForLockers/gaugeCalls.js +6 -0
  21. package/dist/esm/lockers/utils/callsForLockers/gaugeCalls.js.map +1 -0
  22. package/dist/esm/lockers/utils/callsForLockers/gaugeControllerCalls.js +8 -0
  23. package/dist/esm/lockers/utils/callsForLockers/gaugeControllerCalls.js.map +1 -0
  24. package/dist/esm/lockers/utils/callsForLockers/index.js +29 -0
  25. package/dist/esm/lockers/utils/callsForLockers/index.js.map +1 -0
  26. package/dist/esm/lockers/utils/callsForLockers/pegCalls.js +38 -0
  27. package/dist/esm/lockers/utils/callsForLockers/pegCalls.js.map +1 -0
  28. package/dist/esm/lockers/utils/callsForLockers/veCalls.js +26 -0
  29. package/dist/esm/lockers/utils/callsForLockers/veCalls.js.map +1 -0
  30. package/dist/esm/lockers/utils/callsForLockers/veSdtCalls.js +14 -0
  31. package/dist/esm/lockers/utils/callsForLockers/veSdtCalls.js.map +1 -0
  32. package/dist/esm/lockers/utils/endpoints.js +23 -0
  33. package/dist/esm/lockers/utils/endpoints.js.map +1 -0
  34. package/dist/esm/lockers/utils/getBribesRewardsData.js +46 -0
  35. package/dist/esm/lockers/utils/getBribesRewardsData.js.map +1 -0
  36. package/dist/esm/lockers/utils/getCherriesLeaderBoard.js +22 -0
  37. package/dist/esm/lockers/utils/getCherriesLeaderBoard.js.map +1 -0
  38. package/dist/esm/lockers/utils/getFees.js +30 -0
  39. package/dist/esm/lockers/utils/getFees.js.map +1 -0
  40. package/dist/esm/lockers/utils/getHttpCalls.js +44 -0
  41. package/dist/esm/lockers/utils/getHttpCalls.js.map +1 -0
  42. package/dist/esm/lockers/utils/getSdtInflationData.js +38 -0
  43. package/dist/esm/lockers/utils/getSdtInflationData.js.map +1 -0
  44. package/dist/esm/lockers/utils/index.js +157 -0
  45. package/dist/esm/lockers/utils/index.js.map +1 -0
  46. package/dist/esm/lockers/utils/substractFees.js +22 -0
  47. package/dist/esm/lockers/utils/substractFees.js.map +1 -0
  48. package/dist/esm/strategies/curve/build.js +10 -7
  49. package/dist/esm/strategies/curve/build.js.map +1 -1
  50. package/dist/esm/strategies/curve/fetch/curveApiData/abi.js +1 -1
  51. package/dist/esm/strategies/curve/fetch/curveApiData/abi.js.map +1 -1
  52. package/dist/esm/strategies/curve/fetch/curveApiData/bytecode.js +3 -3
  53. package/dist/esm/strategies/curve/fetch/curveApiData/bytecode.js.map +1 -1
  54. package/dist/esm/strategies/curve/fetch/curveApiData/config.js +1 -1
  55. package/dist/esm/strategies/curve/fetch/curveApiData/getCurveApiData.js +3 -6
  56. package/dist/esm/strategies/curve/fetch/curveApiData/getCurveApiData.js.map +1 -1
  57. package/dist/esm/strategies/curve/fetch/curveApiData/getGaugesWeights.js +1 -0
  58. package/dist/esm/strategies/curve/fetch/curveApiData/getGaugesWeights.js.map +1 -1
  59. package/dist/esm/strategies/curve/fetch/getStratsWithApr.js +26 -58
  60. package/dist/esm/strategies/curve/fetch/getStratsWithApr.js.map +1 -1
  61. package/dist/esm/strategies/curve/fetch/index.js +7 -23
  62. package/dist/esm/strategies/curve/fetch/index.js.map +1 -1
  63. package/dist/esm/strategies/curve/httpCalls.js +8 -24
  64. package/dist/esm/strategies/curve/httpCalls.js.map +1 -1
  65. package/dist/esm/strategies/utils/abis/MulticallYearnStratsAbi.json +107 -0
  66. package/dist/esm/strategies/{curve/fetch → utils}/getAprBreakdown.js +18 -8
  67. package/dist/esm/strategies/utils/getAprBreakdown.js.map +1 -0
  68. package/dist/esm/strategies/utils/index.js +1 -0
  69. package/dist/esm/strategies/utils/index.js.map +1 -1
  70. package/dist/esm/strategies/utils/sdt.js +17 -0
  71. package/dist/esm/strategies/utils/sdt.js.map +1 -1
  72. package/dist/esm/strategies/yearn/build.js +97 -0
  73. package/dist/esm/strategies/yearn/build.js.map +1 -0
  74. package/dist/esm/strategies/yearn/fetch/computeYearnApr.js +28 -0
  75. package/dist/esm/strategies/yearn/fetch/computeYearnApr.js.map +1 -0
  76. package/dist/esm/strategies/yearn/fetch/fetchAllYearnGauges.js +61 -0
  77. package/dist/esm/strategies/yearn/fetch/fetchAllYearnGauges.js.map +1 -0
  78. package/dist/esm/strategies/yearn/fetch/index.js +169 -0
  79. package/dist/esm/strategies/yearn/fetch/index.js.map +1 -0
  80. package/dist/esm/tsconfig.build.tsbuildinfo +1 -1
  81. package/dist/esm/utils.js +33 -1
  82. package/dist/esm/utils.js.map +1 -1
  83. package/dist/types/batches/buildYearnStrats.d.ts +4 -0
  84. package/dist/types/batches/buildYearnStrats.d.ts.map +1 -0
  85. package/dist/types/batches/curveStrats.d.ts.map +1 -1
  86. package/dist/types/batches/fetchYearnGauges.d.ts +4 -0
  87. package/dist/types/batches/fetchYearnGauges.d.ts.map +1 -0
  88. package/dist/types/batches/index.d.ts +2 -0
  89. package/dist/types/batches/index.d.ts.map +1 -1
  90. package/dist/types/index.d.ts +2 -0
  91. package/dist/types/index.d.ts.map +1 -1
  92. package/dist/types/lockers/fetch/index.d.ts +11 -0
  93. package/dist/types/lockers/fetch/index.d.ts.map +1 -0
  94. package/dist/types/lockers/utils/cakeLockerAirdrop.d.ts +8 -0
  95. package/dist/types/lockers/utils/cakeLockerAirdrop.d.ts.map +1 -0
  96. package/dist/types/lockers/utils/callsForLockers/depositorCalls.d.ts +3 -0
  97. package/dist/types/lockers/utils/callsForLockers/depositorCalls.d.ts.map +1 -0
  98. package/dist/types/lockers/utils/callsForLockers/feeCalls.d.ts +11 -0
  99. package/dist/types/lockers/utils/callsForLockers/feeCalls.d.ts.map +1 -0
  100. package/dist/types/lockers/utils/callsForLockers/gaugeCalls.d.ts +6 -0
  101. package/dist/types/lockers/utils/callsForLockers/gaugeCalls.d.ts.map +1 -0
  102. package/dist/types/lockers/utils/callsForLockers/gaugeControllerCalls.d.ts +11 -0
  103. package/dist/types/lockers/utils/callsForLockers/gaugeControllerCalls.d.ts.map +1 -0
  104. package/dist/types/lockers/utils/callsForLockers/index.d.ts +3 -0
  105. package/dist/types/lockers/utils/callsForLockers/index.d.ts.map +1 -0
  106. package/dist/types/lockers/utils/callsForLockers/pegCalls.d.ts +15 -0
  107. package/dist/types/lockers/utils/callsForLockers/pegCalls.d.ts.map +1 -0
  108. package/dist/types/lockers/utils/callsForLockers/veCalls.d.ts +3 -0
  109. package/dist/types/lockers/utils/callsForLockers/veCalls.d.ts.map +1 -0
  110. package/dist/types/lockers/utils/callsForLockers/veSdtCalls.d.ts +11 -0
  111. package/dist/types/lockers/utils/callsForLockers/veSdtCalls.d.ts.map +1 -0
  112. package/dist/types/lockers/utils/endpoints.d.ts +3 -0
  113. package/dist/types/lockers/utils/endpoints.d.ts.map +1 -0
  114. package/dist/types/lockers/utils/getBribesRewardsData.d.ts +18 -0
  115. package/dist/types/lockers/utils/getBribesRewardsData.d.ts.map +1 -0
  116. package/dist/types/lockers/utils/getCherriesLeaderBoard.d.ts +2 -0
  117. package/dist/types/lockers/utils/getCherriesLeaderBoard.d.ts.map +1 -0
  118. package/dist/types/lockers/utils/getFees.d.ts +4 -0
  119. package/dist/types/lockers/utils/getFees.d.ts.map +1 -0
  120. package/dist/types/lockers/utils/getHttpCalls.d.ts +11 -0
  121. package/dist/types/lockers/utils/getHttpCalls.d.ts.map +1 -0
  122. package/dist/types/lockers/utils/getSdtInflationData.d.ts +8 -0
  123. package/dist/types/lockers/utils/getSdtInflationData.d.ts.map +1 -0
  124. package/dist/types/lockers/utils/index.d.ts +30 -0
  125. package/dist/types/lockers/utils/index.d.ts.map +1 -0
  126. package/dist/types/lockers/utils/substractFees.d.ts +3 -0
  127. package/dist/types/lockers/utils/substractFees.d.ts.map +1 -0
  128. package/dist/types/strategies/curve/build.d.ts +2 -31
  129. package/dist/types/strategies/curve/build.d.ts.map +1 -1
  130. package/dist/types/strategies/curve/fetch/curveApiData/abi.d.ts.map +1 -1
  131. package/dist/types/strategies/curve/fetch/curveApiData/bytecode.d.ts +1 -1
  132. package/dist/types/strategies/curve/fetch/curveApiData/bytecode.d.ts.map +1 -1
  133. package/dist/types/strategies/curve/fetch/curveApiData/config.d.ts +1 -1
  134. package/dist/types/strategies/curve/fetch/curveApiData/getCurveApiData.d.ts.map +1 -1
  135. package/dist/types/strategies/curve/fetch/curveApiData/getGaugesWeights.d.ts +1 -0
  136. package/dist/types/strategies/curve/fetch/curveApiData/getGaugesWeights.d.ts.map +1 -1
  137. package/dist/types/strategies/curve/fetch/getStratsWithApr.d.ts +0 -4
  138. package/dist/types/strategies/curve/fetch/getStratsWithApr.d.ts.map +1 -1
  139. package/dist/types/strategies/curve/fetch/index.d.ts +2 -7
  140. package/dist/types/strategies/curve/fetch/index.d.ts.map +1 -1
  141. package/dist/types/strategies/curve/httpCalls.d.ts +3 -6
  142. package/dist/types/strategies/curve/httpCalls.d.ts.map +1 -1
  143. package/dist/types/strategies/types.d.ts +49 -6
  144. package/dist/types/strategies/types.d.ts.map +1 -1
  145. package/dist/types/strategies/utils/getAprBreakdown.d.ts +15 -0
  146. package/dist/types/strategies/utils/getAprBreakdown.d.ts.map +1 -0
  147. package/dist/types/strategies/utils/index.d.ts +1 -0
  148. package/dist/types/strategies/utils/index.d.ts.map +1 -1
  149. package/dist/types/strategies/utils/sdt.d.ts +1 -0
  150. package/dist/types/strategies/utils/sdt.d.ts.map +1 -1
  151. package/dist/types/strategies/yearn/build.d.ts +8 -0
  152. package/dist/types/strategies/yearn/build.d.ts.map +1 -0
  153. package/dist/types/strategies/yearn/fetch/computeYearnApr.d.ts +9 -0
  154. package/dist/types/strategies/yearn/fetch/computeYearnApr.d.ts.map +1 -0
  155. package/dist/types/strategies/yearn/fetch/fetchAllYearnGauges.d.ts +2 -0
  156. package/dist/types/strategies/yearn/fetch/fetchAllYearnGauges.d.ts.map +1 -0
  157. package/dist/types/strategies/yearn/fetch/index.d.ts +5 -0
  158. package/dist/types/strategies/yearn/fetch/index.d.ts.map +1 -0
  159. package/dist/types/utils.d.ts +5 -0
  160. package/dist/types/utils.d.ts.map +1 -1
  161. package/package.json +4 -3
  162. package/src/batches/buildYearnStrats.ts +41 -0
  163. package/src/batches/curveStrats.ts +4 -6
  164. package/src/batches/fetchYearnGauges.ts +78 -0
  165. package/src/batches/index.ts +2 -0
  166. package/src/index.ts +2 -0
  167. package/src/lockers/fetch/index.ts +407 -0
  168. package/src/lockers/utils/cakeLockerAirdrop.ts +73 -0
  169. package/src/lockers/utils/callsForLockers/depositorCalls.ts +25 -0
  170. package/src/lockers/utils/callsForLockers/feeCalls.ts +118 -0
  171. package/src/lockers/utils/callsForLockers/gaugeCalls.ts +6 -0
  172. package/src/lockers/utils/callsForLockers/gaugeControllerCalls.ts +8 -0
  173. package/src/lockers/utils/callsForLockers/index.ts +44 -0
  174. package/src/lockers/utils/callsForLockers/pegCalls.ts +40 -0
  175. package/src/lockers/utils/callsForLockers/veCalls.ts +31 -0
  176. package/src/lockers/utils/callsForLockers/veSdtCalls.ts +15 -0
  177. package/src/lockers/utils/endpoints.ts +24 -0
  178. package/src/lockers/utils/getBribesRewardsData.ts +64 -0
  179. package/src/lockers/utils/getCherriesLeaderBoard.ts +34 -0
  180. package/src/lockers/utils/getFees.ts +34 -0
  181. package/src/lockers/utils/getHttpCalls.ts +55 -0
  182. package/src/lockers/utils/getSdtInflationData.ts +54 -0
  183. package/src/lockers/utils/index.ts +200 -0
  184. package/src/lockers/utils/substractFees.ts +26 -0
  185. package/src/strategies/curve/build.ts +49 -44
  186. package/src/strategies/curve/fetch/curveApiData/abi.ts +1 -1
  187. package/src/strategies/curve/fetch/curveApiData/bytecode.ts +3 -3
  188. package/src/strategies/curve/fetch/curveApiData/config.ts +1 -1
  189. package/src/strategies/curve/fetch/curveApiData/getCurveApiData.ts +2 -2
  190. package/src/strategies/curve/fetch/curveApiData/getGaugesWeights.ts +2 -0
  191. package/src/strategies/curve/fetch/getStratsWithApr.ts +27 -81
  192. package/src/strategies/curve/fetch/index.ts +10 -29
  193. package/src/strategies/curve/httpCalls.ts +8 -24
  194. package/src/strategies/types.ts +52 -6
  195. package/src/strategies/{curve/fetch → utils}/getAprBreakdown.ts +26 -9
  196. package/src/strategies/utils/index.ts +1 -0
  197. package/src/strategies/utils/sdt.ts +24 -0
  198. package/src/strategies/yearn/build.ts +156 -0
  199. package/src/strategies/yearn/fetch/computeYearnApr.ts +47 -0
  200. package/src/strategies/yearn/fetch/fetchAllYearnGauges.ts +78 -0
  201. package/src/strategies/yearn/fetch/index.ts +225 -0
  202. package/src/utils.ts +43 -1
  203. package/dist/esm/strategies/curve/fetch/getAprBreakdown.js.map +0 -1
  204. package/dist/esm/strategies/curve/fetch/types.js +0 -2
  205. package/dist/esm/strategies/curve/fetch/types.js.map +0 -1
  206. package/dist/types/strategies/curve/fetch/getAprBreakdown.d.ts +0 -17
  207. package/dist/types/strategies/curve/fetch/getAprBreakdown.d.ts.map +0 -1
  208. package/dist/types/strategies/curve/fetch/types.d.ts +0 -11
  209. package/dist/types/strategies/curve/fetch/types.d.ts.map +0 -1
  210. package/src/strategies/curve/fetch/types.ts +0 -11
@@ -0,0 +1,306 @@
1
+ import { formatUnits, parseAbi, parseUnits, zeroAddress } from 'viem';
2
+ import { mainnet } from 'viem/chains';
3
+ import { ONE_YEAR, lockers, tokenWithId } from '@stake-dao/constants';
4
+ import { delegationWithId } from '@stake-dao/constants';
5
+ import { OneEther, Zero } from '../../index.js';
6
+ import {} from '../../prices.js';
7
+ import { multicall } from '../../utils.js';
8
+ import { lockedAmountCallSideChain } from '../utils/index.js';
9
+ import { multichainMulticall } from '../../utils.js';
10
+ import lockersMulticallAbi from '../abis/MulticallLockers.json';
11
+ import { getCherriesLeaderBoard } from '../utils/getCherriesLeaderBoard.js';
12
+ import { extractFees, feeCalls } from '../utils/callsForLockers/feeCalls.js';
13
+ import callsForLockers from '../utils/callsForLockers/index.js';
14
+ import getBribesRewardsData from '../utils/getBribesRewardsData.js';
15
+ import getFees from '../utils/getFees.js';
16
+ import getHttpCalls from '../utils/getHttpCalls.js';
17
+ import getSdtInflationData from '../utils/getSdtInflationData.js';
18
+ import substractFees from '../utils/substractFees.js';
19
+ const callsForRewards = (gauge, rewards) => rewards.map((r) => ({ address: gauge, name: 'reward_data', params: [r.address] }));
20
+ const callsForLockersSideChains = (lockerId, sideChains) => {
21
+ return sideChains.reduce((acc, value) => {
22
+ return acc.concat([
23
+ lockedAmountCallSideChain(lockerId, value.veToken, value.locker, value.chainId),
24
+ { address: value.veToken, name: 'balanceOf', params: [value.locker], chainId: value.chainId },
25
+ { address: value.veToken, name: 'totalSupply', chainId: value.chainId },
26
+ ]);
27
+ }, []);
28
+ };
29
+ export const fetchLockers = async (provider, chainId, prices) => {
30
+ const chainLockers = lockers.filter((l) => l.chainId === chainId);
31
+ const httpCalls = await getHttpCalls(chainId);
32
+ const lockersCalls = [];
33
+ const lockersRewardsCalls = [];
34
+ const lockersFeeCalls = [];
35
+ const lockersSideChainsCalls = [];
36
+ for (const locker of chainLockers) {
37
+ lockersCalls.push(...callsForLockers(locker.id, locker.token.address, locker.sdToken.address, locker.extensions.veToken, locker.extensions.depositor, locker.extensions.gaugeController, locker.extensions.gauge, locker.extensions.locker, locker.extensions.pool, locker.pegCalculator, locker.extensions.secondaryMarket, locker.extensions.voteBooster));
38
+ lockersRewardsCalls.push(...callsForRewards(locker.extensions.gauge, locker.rewards));
39
+ if (locker.extensions.sideChains) {
40
+ lockersSideChainsCalls.push(...callsForLockersSideChains(locker.id, locker.extensions.sideChains));
41
+ }
42
+ // Add fee calls into another array
43
+ // We will concat it with #lockersRewardsCalls to do only one multicall, the concat will push all fee calls at the end
44
+ lockersFeeCalls.push(...feeCalls(locker.id, locker.extensions.accumulator));
45
+ }
46
+ const [rawLockersData, rawLockersSideChainData] = (await Promise.allSettled([
47
+ multicall(provider, lockersCalls.concat(lockersFeeCalls), lockersMulticallAbi),
48
+ multichainMulticall(lockersSideChainsCalls, lockersMulticallAbi),
49
+ ])).map((result) => (result.status === 'fulfilled' ? result.value : result.reason));
50
+ const lockersFees = extractFees(chainLockers, rawLockersData);
51
+ const [sdtInflationData, rawLockersRewardsData] = await Promise.all([
52
+ getSdtInflationData(provider),
53
+ multicall(provider, lockersRewardsCalls, parseAbi([
54
+ 'function reward_data(address) external view returns (address,address,uint256,uint256,uint256,uint256)',
55
+ ])),
56
+ ]);
57
+ const lockerData = chainLockers.map(async (locker) => {
58
+ const lockerCallsLength = callsForLockers(locker.id, locker.token.address, locker.sdToken.address, locker.extensions.veToken, locker.extensions.depositor, locker.extensions.gaugeController, locker.extensions.gauge, locker.extensions.locker, locker.extensions.pool, locker.pegCalculator, locker.extensions.secondaryMarket, locker.extensions.voteBooster).length;
59
+ const chunkedRawLockersData = rawLockersData.splice(0, lockerCallsLength);
60
+ let gaugeRelativeWeight = '0';
61
+ let gaugeTotalWeight = '0';
62
+ let gaugeWeight = '0';
63
+ let nextEffectiveTimestamp = '0';
64
+ let airdropGraph = undefined;
65
+ if (locker.id === 'cake') {
66
+ airdropGraph = await getCherriesLeaderBoard();
67
+ }
68
+ const lockerFee = lockersFees.find((l) => l.lockerId === locker.id);
69
+ const fees = getFees(locker, lockerFee);
70
+ const tokenLocked = formatUnits(chunkedRawLockersData[0].result[0], 0);
71
+ const veBalanceOfLockerBN = chunkedRawLockersData[1].result;
72
+ const veBalanceOfLocker = formatUnits(veBalanceOfLockerBN, locker.token.decimals);
73
+ const totalTokenLocked = formatUnits(chunkedRawLockersData[2].result, 0);
74
+ const veTotalSupplyBN = chunkedRawLockersData[3].result;
75
+ const veTotalSupply = formatUnits(veTotalSupplyBN, locker.token.decimals);
76
+ const lockIncentive = formatUnits(chunkedRawLockersData[4].result, 0);
77
+ const incentiveAmountInToken = formatUnits(chunkedRawLockersData[5].result, 0);
78
+ if (chainId === mainnet.id) {
79
+ gaugeRelativeWeight = formatUnits(chunkedRawLockersData[6].result, 0);
80
+ gaugeTotalWeight = formatUnits(chunkedRawLockersData[7].result, 0);
81
+ gaugeWeight = formatUnits(chunkedRawLockersData[8].result, 0);
82
+ nextEffectiveTimestamp = formatUnits(chunkedRawLockersData[9].result, 0);
83
+ }
84
+ const totalSupplyStakedStr = locker.extensions.gauge !== zeroAddress ? formatUnits(chunkedRawLockersData[10].result, 0) : '0';
85
+ const totalSupplyStaked = locker.extensions.gauge !== zeroAddress
86
+ ? formatUnits(chunkedRawLockersData[10].result, locker.token.decimals)
87
+ : '0';
88
+ const gaugeWorkingSupplyStr = locker.chainId === mainnet.id && locker.extensions.gauge !== zeroAddress
89
+ ? formatUnits(chunkedRawLockersData[11].result, 0)
90
+ : '0';
91
+ const gaugeWorkingSupply = locker.chainId === mainnet.id && locker.extensions.gauge !== zeroAddress
92
+ ? formatUnits(chunkedRawLockersData[11].result, locker.token.decimals)
93
+ : '0';
94
+ const amountTokenNotLock = formatUnits(chunkedRawLockersData[12].result, 0);
95
+ const veSdtTotalSupply = chainId === mainnet.id ? chunkedRawLockersData[13].result : '0';
96
+ const voteBoosterBalance = locker.extensions.voteBooster
97
+ ? {
98
+ token: formatUnits(chunkedRawLockersData[14].result, locker.token.decimals),
99
+ sdToken: formatUnits(chunkedRawLockersData[15].result, locker.sdToken.decimals),
100
+ staked: locker.extensions.gauge !== zeroAddress
101
+ ? formatUnits(chunkedRawLockersData[16].result, locker.sdToken.decimals)
102
+ : '0',
103
+ working: locker.chainId === mainnet.id && locker.extensions.gauge !== zeroAddress
104
+ ? formatUnits(chunkedRawLockersData[17].result, locker.sdToken.decimals)
105
+ : '0',
106
+ }
107
+ : undefined;
108
+ const voteBoosterBoost = locker.extensions.voteBooster
109
+ ? Number(voteBoosterBalance.working) > 0 && Number(voteBoosterBalance.staked) > 0
110
+ ? Number(voteBoosterBalance.working) / (Number(voteBoosterBalance.staked) * 0.4)
111
+ : 1
112
+ : undefined;
113
+ const voteBooster = locker.extensions.voteBooster
114
+ ? { balance: voteBoosterBalance, boost: voteBoosterBoost }
115
+ : undefined;
116
+ const rawPeg = locker.extensions.pool !== zeroAddress
117
+ ? chunkedRawLockersData[locker.extensions.voteBooster ? 18 : 14].result
118
+ : undefined;
119
+ const veTokenRate = locker.id === 'mav' ? formatUnits(chunkedRawLockersData[15].result[0], locker.token.decimals) : '4';
120
+ const futureWeight = BigInt(gaugeTotalWeight) > Zero ? (BigInt(gaugeWeight) * OneEther * OneEther) / BigInt(gaugeTotalWeight) : Zero;
121
+ const sideChains = locker.extensions.sideChains?.map((sideChain) => {
122
+ const tokenLocked = rawLockersSideChainData[sideChain.chainId].shift().result;
123
+ return {
124
+ ...sideChain,
125
+ tokenLocked: formatUnits(locker.id === 'mav' ? tokenLocked[0] : tokenLocked, 0),
126
+ veBalanceOfLocker: formatUnits(rawLockersSideChainData[sideChain.chainId].shift().result, 0),
127
+ veTotalSupply: formatUnits(rawLockersSideChainData[sideChain.chainId].shift().result, locker.token.decimals),
128
+ };
129
+ });
130
+ let parsedPeg = rawPeg;
131
+ switch (locker.id) {
132
+ case 'bal': {
133
+ parsedPeg = rawPeg[1] * BigInt(-1);
134
+ break;
135
+ }
136
+ case 'cake': {
137
+ parsedPeg = rawPeg[0];
138
+ break;
139
+ }
140
+ }
141
+ const peg = rawPeg && parsedPeg ? formatUnits(parsedPeg / parseUnits(locker.pegCalculator.basedOn.toString(), 0), 18) : '-';
142
+ const tokenPrice = prices.find((p) => p.address === locker.token.address);
143
+ const tokenPriceInUsd = tokenPrice ? tokenPrice.usdPrice : 0;
144
+ const sdTokenPriceInUsd = peg !== '-' ? tokenPriceInUsd * Number(peg) : tokenPriceInUsd;
145
+ const tvl = totalSupplyStaked ? Number(totalSupplyStaked) * sdTokenPriceInUsd : undefined;
146
+ // Rewards APR
147
+ const rewardsData = locker.rewards.map((r) => {
148
+ const rawData = rawLockersRewardsData.shift().result;
149
+ const rewardPrice = prices.find((p) => p.address === r.address)?.usdPrice || 0;
150
+ const periodFinish = rawData ? rawData[2] : Zero;
151
+ const isFinished = Math.floor(Date.now() / 1000) > Number(periodFinish);
152
+ const rate = rawData ? rawData[3] : Zero;
153
+ const oneYearRate = rate * BigInt(ONE_YEAR);
154
+ const oneYearRewardInUsd = parseUnits(`${rewardPrice}`, locker.token.decimals) * oneYearRate;
155
+ let maxApr = 0;
156
+ switch (locker.id) {
157
+ case 'mav': {
158
+ const MAV_AIRDROP = 10_000_000;
159
+ const veMavBalanceOfLocker = Number(veBalanceOfLocker) + sideChains?.reduce((acc, value) => acc + Number(value.veBalanceOfLocker), 0);
160
+ const veMavTotalSupply = Number(veTotalSupply) + sideChains?.reduce((acc, value) => acc + Number(value.veTotalSupply), 0);
161
+ const mavAirdropStakeDaoShare = MAV_AIRDROP * (veMavBalanceOfLocker / veMavTotalSupply);
162
+ const airdropPerSdMav = mavAirdropStakeDaoShare / (veMavBalanceOfLocker / Number(veTokenRate));
163
+ maxApr = airdropPerSdMav;
164
+ break;
165
+ }
166
+ default: {
167
+ if (isFinished) {
168
+ maxApr = 0;
169
+ }
170
+ else {
171
+ maxApr =
172
+ rewardPrice && (tvl || 0) > 0
173
+ ? ((Number(formatUnits(oneYearRate, r.decimals)) * rewardPrice) / tvl) * 100
174
+ : 0;
175
+ }
176
+ break;
177
+ }
178
+ }
179
+ // Remove fees from APR
180
+ maxApr = substractFees(locker.id, maxApr, lockerFee);
181
+ if (r.id === 'sdt' && locker.id !== 'cake') {
182
+ maxApr = isFinished ? 0 : maxApr;
183
+ }
184
+ const minApr = maxApr / (locker.id !== 'cake' && r.address === tokenWithId('sdt').address ? 2.5 : 1);
185
+ let futureMinApr = minApr;
186
+ let futureMaxApr = maxApr;
187
+ if (r.id === 'sdt' && locker.id !== 'cake') {
188
+ const futureRate = (sdtInflationData.lockersSdtPerSecond * futureWeight) / OneEther;
189
+ const futureOneYearRate = futureRate * BigInt(ONE_YEAR);
190
+ const futureOneYearRewardInUsd = rewardPrice * Number(formatUnits(futureOneYearRate, locker.token.decimals));
191
+ futureMaxApr = rewardPrice && (tvl || 0) > 0 ? (futureOneYearRewardInUsd / tvl) * 100 : 0;
192
+ futureMinApr = futureMaxApr / 2.5;
193
+ }
194
+ return {
195
+ token: r.address,
196
+ distributor: rawData ? rawData[1] : zeroAddress,
197
+ periodFinish: formatUnits(periodFinish, 0),
198
+ rate: formatUnits(rate, 0),
199
+ oneYearRate: formatUnits(oneYearRate, 0),
200
+ oneYearRewardInUsd: formatUnits(oneYearRewardInUsd, 0),
201
+ lastUpdate: rawData ? Number(formatUnits(rawData[4], 0)) : 0,
202
+ integral: rawData ? formatUnits(rawData[5], 0) : '0',
203
+ minApr: minApr,
204
+ maxApr: maxApr,
205
+ futureMinApr,
206
+ futureMaxApr,
207
+ rewardPrice,
208
+ isFinished,
209
+ isAirdrop: r.isAirdrop,
210
+ };
211
+ });
212
+ let bribeMinApr = 0;
213
+ let bribeMaxApr = 0;
214
+ let bribeRewards = undefined;
215
+ if (chainId === mainnet.id) {
216
+ const data = getBribesRewardsData(locker, httpCalls?.bribesData, veSdtTotalSupply, totalSupplyStaked, veBalanceOfLocker, gaugeWorkingSupply);
217
+ bribeMinApr = data.bribeMinApr;
218
+ bribeMaxApr = data.bribeMaxApr;
219
+ bribeRewards = data.bribeRewards;
220
+ }
221
+ else if (locker.id === 'cake') {
222
+ const apr = (httpCalls?.bribesData?.[delegationWithId('cake')] || 0) *
223
+ (Number.parseFloat(veBalanceOfLocker) / Number.parseFloat(totalSupplyStaked));
224
+ bribeMinApr = apr;
225
+ bribeMaxApr = apr;
226
+ bribeRewards = {
227
+ bribeMinApr: apr,
228
+ bribeMaxApr: apr,
229
+ bribeAverageApr: apr,
230
+ average: apr,
231
+ minBoost: 0,
232
+ maxBoost: 0,
233
+ hideBoostTab: true,
234
+ token: 'sdcake',
235
+ };
236
+ }
237
+ // Total APR
238
+ const minRewardsAprs = rewardsData.reduce((x, y) => x + y.minApr, 0) + bribeMinApr;
239
+ const maxRewardsAprs = rewardsData.reduce((x, y) => x + y.maxApr, 0) + bribeMaxApr;
240
+ // Streaming status
241
+ const streaming = rewardsData.some((r) => !r.isFinished);
242
+ const alternativeYields = JSON.parse(JSON.stringify(locker.alternativeYields || {})); // parse and stringify to avoid extensible issue
243
+ if (httpCalls?.cvgAprs?.[locker.extensions.gauge]) {
244
+ alternativeYields.convergenceSdToken = {
245
+ label: locker.sdToken.symbol,
246
+ platform: 'Convergence',
247
+ href: 'https://app.cvg.finance/',
248
+ apr: httpCalls.cvgAprs[locker.extensions.gauge].totalApr,
249
+ };
250
+ }
251
+ if (httpCalls?.cvgAprs?.[locker.extensions.strategyGauge]) {
252
+ alternativeYields[`convergence${locker.sdToken.symbol}Pool`] = {
253
+ label: `${locker.sdToken.symbol}/${locker.token.symbol}`,
254
+ platform: 'Convergence',
255
+ href: 'https://app.cvg.finance/',
256
+ apr: httpCalls.cvgAprs[locker.extensions.strategyGauge].totalApr,
257
+ };
258
+ }
259
+ return {
260
+ ...locker,
261
+ fees,
262
+ tokenLocked: tokenLocked,
263
+ veBalanceOfLocker: formatUnits(veBalanceOfLockerBN, 0),
264
+ totalTokenLocked: totalTokenLocked,
265
+ veTotalSupply: formatUnits(veTotalSupplyBN, 0),
266
+ lockIncentive: lockIncentive,
267
+ incentiveAmountInToken: incentiveAmountInToken,
268
+ gaugeRelativeWeight: gaugeRelativeWeight,
269
+ gaugeTotalWeight: gaugeTotalWeight,
270
+ gaugeWeight: gaugeWeight,
271
+ futureWeight: formatUnits(futureWeight, 16),
272
+ gaugeWorkingSupply: gaugeWorkingSupplyStr,
273
+ nextEffectiveTimestamp: nextEffectiveTimestamp,
274
+ totalSupplyStaked: totalSupplyStakedStr,
275
+ amountTokenNotLock: amountTokenNotLock,
276
+ rewardsData,
277
+ bribeRewards,
278
+ apr: [minRewardsAprs, maxRewardsAprs],
279
+ streaming,
280
+ veTokenRate,
281
+ tvl,
282
+ peg,
283
+ tokenPriceInUsd,
284
+ sdTokenPriceInUsd,
285
+ voteBooster,
286
+ alternativeYields,
287
+ extensions: {
288
+ ...locker.extensions,
289
+ sideChains,
290
+ ...(locker.id === 'cake' ? { airdropGraph } : {}),
291
+ },
292
+ };
293
+ });
294
+ return {
295
+ parsed: (await Promise.allSettled(lockerData)).map((r) => (r.status === 'fulfilled' ? r.value : r.reason)),
296
+ sdt: chainId === mainnet.id
297
+ ? {
298
+ lockersSdtPerBlock: formatUnits(sdtInflationData.lockersSdtPerBlock, 18),
299
+ lockersSdtPerSecond: formatUnits(sdtInflationData.lockersSdtPerSecond, 18),
300
+ stratsSdtPerBlock: formatUnits(sdtInflationData.stratsSdtPerBlock, 18),
301
+ stratsSdtPerSecond: formatUnits(sdtInflationData.stratsSdtPerSecond, 18),
302
+ }
303
+ : undefined,
304
+ };
305
+ };
306
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lockers/fetch/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,MAAM,CAAA;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAc,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAa,SAAS,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAA;AAE7D,OAAO,EAAuB,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AACzE,OAAO,mBAAmB,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAA;AAE3E,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAA;AAC5E,OAAO,eAAe,MAAM,mCAAmC,CAAA;AAC/D,OAAO,oBAAoB,MAAM,kCAAkC,CAAA;AACnE,OAAO,OAAO,MAAM,qBAAqB,CAAA;AACzC,OAAO,YAAY,MAAM,0BAA0B,CAAA;AACnD,OAAO,mBAAmB,MAAM,iCAAiC,CAAA;AACjE,OAAO,aAAa,MAAM,2BAA2B,CAAA;AAErD,MAAM,eAAe,GAAG,CAAC,KAAa,EAAE,OAAc,EAAE,EAAE,CACxD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAA;AAEpF,MAAM,yBAAyB,GAAG,CAAC,QAAa,EAAE,UAAiB,EAAE,EAAE;IACrE,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QACtC,OAAO,GAAG,CAAC,MAAM,CAAC;YAChB,yBAAyB,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;YAC/E,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE;YAC7F,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE;SACxE,CAAC,CAAA;IACJ,CAAC,EAAE,EAAE,CAAC,CAAA;AACR,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAAE,QAAa,EAAE,OAAe,EAAE,MAAe,EAAE,EAAE;IACpF,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAA;IAEjE,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAA;IAE7C,MAAM,YAAY,GAAW,EAAE,CAAA;IAC/B,MAAM,mBAAmB,GAAW,EAAE,CAAA;IACtC,MAAM,eAAe,GAAW,EAAE,CAAA;IAClC,MAAM,sBAAsB,GAAqB,EAAE,CAAA;IAEnD,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;QAClC,YAAY,CAAC,IAAI,CACf,GAAG,eAAe,CAChB,MAAM,CAAC,EAAE,EACT,MAAM,CAAC,KAAM,CAAC,OAAO,EACrB,MAAM,CAAC,OAAQ,CAAC,OAAO,EACvB,MAAM,CAAC,UAAU,CAAC,OAAO,EACzB,MAAM,CAAC,UAAU,CAAC,SAAS,EAC3B,MAAM,CAAC,UAAU,CAAC,eAAe,EACjC,MAAM,CAAC,UAAU,CAAC,KAAK,EACvB,MAAM,CAAC,UAAU,CAAC,MAAM,EACxB,MAAM,CAAC,UAAU,CAAC,IAAI,EACtB,MAAM,CAAC,aAAa,EACpB,MAAM,CAAC,UAAU,CAAC,eAAe,EACjC,MAAM,CAAC,UAAU,CAAC,WAAW,CAC9B,CACF,CAAA;QACD,mBAAmB,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;QACrF,IAAI,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;YACjC,sBAAsB,CAAC,IAAI,CAAC,GAAG,yBAAyB,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAA;QACpG,CAAC;QAED,mCAAmC;QACnC,sHAAsH;QACtH,eAAe,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAA;IAC7E,CAAC;IAED,MAAM,CAAC,cAAc,EAAE,uBAAuB,CAAC,GAAG,CAChD,MAAM,OAAO,CAAC,UAAU,CAAC;QACvB,SAAS,CAAC,QAAQ,EAAE,YAAY,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,mBAAmB,CAAC;QAC9E,mBAAmB,CAAC,sBAAsB,EAAE,mBAAmB,CAAC;KACjE,CAAC,CACH,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;IAEjF,MAAM,WAAW,GAAG,WAAW,CAAC,YAAY,EAAE,cAAc,CAAC,CAAA;IAE7D,MAAM,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,GAAQ,MAAM,OAAO,CAAC,GAAG,CAAC;QACvE,mBAAmB,CAAC,QAAQ,CAAC;QAC7B,SAAS,CACP,QAAQ,EACR,mBAAmB,EACnB,QAAQ,CAAC;YACP,uGAAuG;SACxG,CAAC,CACH;KACF,CAAC,CAAA;IAEF,MAAM,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;QACnD,MAAM,iBAAiB,GAAG,eAAe,CACvC,MAAM,CAAC,EAAE,EACT,MAAM,CAAC,KAAM,CAAC,OAAO,EACrB,MAAM,CAAC,OAAQ,CAAC,OAAO,EACvB,MAAM,CAAC,UAAU,CAAC,OAAO,EACzB,MAAM,CAAC,UAAU,CAAC,SAAS,EAC3B,MAAM,CAAC,UAAU,CAAC,eAAe,EACjC,MAAM,CAAC,UAAU,CAAC,KAAK,EACvB,MAAM,CAAC,UAAU,CAAC,MAAM,EACxB,MAAM,CAAC,UAAU,CAAC,IAAI,EACtB,MAAM,CAAC,aAAa,EACpB,MAAM,CAAC,UAAU,CAAC,eAAe,EACjC,MAAM,CAAC,UAAU,CAAC,WAAW,CAC9B,CAAC,MAAM,CAAA;QACR,MAAM,qBAAqB,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAA;QAEzE,IAAI,mBAAmB,GAAG,GAAG,CAAA;QAC7B,IAAI,gBAAgB,GAAG,GAAG,CAAA;QAC1B,IAAI,WAAW,GAAG,GAAG,CAAA;QACrB,IAAI,sBAAsB,GAAG,GAAG,CAAA;QAEhC,IAAI,YAAY,GAAQ,SAAS,CAAA;QACjC,IAAI,MAAM,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;YACzB,YAAY,GAAG,MAAM,sBAAsB,EAAE,CAAA;QAC/C,CAAC;QAED,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,EAAE,CAAC,CAAA;QACnE,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;QAEvC,MAAM,WAAW,GAAG,WAAW,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QACtE,MAAM,mBAAmB,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;QAC3D,MAAM,iBAAiB,GAAG,WAAW,CAAC,mBAAmB,EAAE,MAAM,CAAC,KAAM,CAAC,QAAQ,CAAC,CAAA;QAClF,MAAM,gBAAgB,GAAG,WAAW,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;QACxE,MAAM,eAAe,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;QACvD,MAAM,aAAa,GAAG,WAAW,CAAC,eAAe,EAAE,MAAM,CAAC,KAAM,CAAC,QAAQ,CAAC,CAAA;QAC1E,MAAM,aAAa,GAAG,WAAW,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;QACrE,MAAM,sBAAsB,GAAG,WAAW,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;QAC9E,IAAI,OAAO,KAAK,OAAO,CAAC,EAAE,EAAE,CAAC;YAC3B,mBAAmB,GAAG,WAAW,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;YACrE,gBAAgB,GAAG,WAAW,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;YAClE,WAAW,GAAG,WAAW,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;YAC7D,sBAAsB,GAAG,WAAW,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;QAC1E,CAAC;QAED,MAAM,oBAAoB,GACxB,MAAM,CAAC,UAAU,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;QAClG,MAAM,iBAAiB,GACrB,MAAM,CAAC,UAAU,CAAC,KAAK,KAAK,WAAW;YACrC,CAAC,CAAC,WAAW,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,KAAM,CAAC,QAAQ,CAAC;YACvE,CAAC,CAAC,GAAG,CAAA;QAET,MAAM,qBAAqB,GACzB,MAAM,CAAC,OAAO,KAAK,OAAO,CAAC,EAAE,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,KAAK,WAAW;YACtE,CAAC,CAAC,WAAW,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YAClD,CAAC,CAAC,GAAG,CAAA;QACT,MAAM,kBAAkB,GACtB,MAAM,CAAC,OAAO,KAAK,OAAO,CAAC,EAAE,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,KAAK,WAAW;YACtE,CAAC,CAAC,WAAW,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,KAAM,CAAC,QAAQ,CAAC;YACvE,CAAC,CAAC,GAAG,CAAA;QACT,MAAM,kBAAkB,GAAG,WAAW,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;QAC3E,MAAM,gBAAgB,GAAG,OAAO,KAAK,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAA;QAExF,MAAM,kBAAkB,GAAG,MAAM,CAAC,UAAU,CAAC,WAAW;YACtD,CAAC,CAAC;gBACE,KAAK,EAAE,WAAW,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,KAAM,CAAC,QAAQ,CAAC;gBAC5E,OAAO,EAAE,WAAW,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,OAAQ,CAAC,QAAQ,CAAC;gBAChF,MAAM,EACJ,MAAM,CAAC,UAAU,CAAC,KAAK,KAAK,WAAW;oBACrC,CAAC,CAAC,WAAW,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,OAAQ,CAAC,QAAQ,CAAC;oBACzE,CAAC,CAAC,GAAG;gBACT,OAAO,EACL,MAAM,CAAC,OAAO,KAAK,OAAO,CAAC,EAAE,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,KAAK,WAAW;oBACtE,CAAC,CAAC,WAAW,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,OAAQ,CAAC,QAAQ,CAAC;oBACzE,CAAC,CAAC,GAAG;aACV;YACH,CAAC,CAAC,SAAS,CAAA;QAEb,MAAM,gBAAgB,GAAG,MAAM,CAAC,UAAU,CAAC,WAAW;YACpD,CAAC,CAAC,MAAM,CAAC,kBAAmB,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,kBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC;gBACjF,CAAC,CAAC,MAAM,CAAC,kBAAmB,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,kBAAmB,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC;gBAClF,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,SAAS,CAAA;QAEb,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,WAAW;YAC/C,CAAC,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,gBAAgB,EAAE;YAC1D,CAAC,CAAC,SAAS,CAAA;QAEb,MAAM,MAAM,GACV,MAAM,CAAC,UAAU,CAAC,IAAI,KAAK,WAAW;YACpC,CAAC,CAAC,qBAAqB,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM;YACvE,CAAC,CAAC,SAAS,CAAA;QACf,MAAM,WAAW,GACf,MAAM,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,KAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;QAEtG,MAAM,YAAY,GAChB,MAAM,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,QAAQ,GAAG,QAAQ,CAAC,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QAEjH,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;YACjE,MAAM,WAAW,GAAG,uBAAuB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,CAAA;YAC7E,OAAO;gBACL,GAAG,SAAS;gBACZ,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;gBAC/E,iBAAiB,EAAE,WAAW,CAAC,uBAAuB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC5F,aAAa,EAAE,WAAW,CAAC,uBAAuB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,KAAM,CAAC,QAAQ,CAAC;aAC9G,CAAA;QACH,CAAC,CAAC,CAAA;QAEF,IAAI,SAAS,GAAG,MAAM,CAAA;QACtB,QAAQ,MAAM,CAAC,EAAE,EAAE,CAAC;YAClB,KAAK,KAAK,CAAC,CAAC,CAAC;gBACX,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;gBAClC,MAAK;YACP,CAAC;YACD,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;gBACrB,MAAK;YACP,CAAC;QACH,CAAC;QACD,MAAM,GAAG,GACP,MAAM,IAAI,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;QAEjH,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,KAAM,CAAC,OAAO,CAAC,CAAA;QAC1E,MAAM,eAAe,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;QAC5D,MAAM,iBAAiB,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAA;QAEvF,MAAM,GAAG,GAAG,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAA;QAEzF,cAAc;QACd,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YAC3C,MAAM,OAAO,GAAG,qBAAqB,CAAC,KAAK,EAAE,CAAC,MAAM,CAAA;YACpD,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,QAAQ,IAAI,CAAC,CAAA;YAE9E,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;YAChD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,CAAA;YAEvE,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;YACxC,MAAM,WAAW,GAAG,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;YAC3C,MAAM,kBAAkB,GAAG,UAAU,CAAC,GAAG,WAAW,EAAE,EAAE,MAAM,CAAC,KAAM,CAAC,QAAQ,CAAC,GAAG,WAAW,CAAA;YAE7F,IAAI,MAAM,GAAG,CAAC,CAAA;YACd,QAAQ,MAAM,CAAC,EAAE,EAAE,CAAC;gBAClB,KAAK,KAAK,CAAC,CAAC,CAAC;oBACX,MAAM,WAAW,GAAG,UAAU,CAAA;oBAC9B,MAAM,oBAAoB,GACxB,MAAM,CAAC,iBAAiB,CAAC,GAAG,UAAU,EAAE,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAA;oBAC1G,MAAM,gBAAgB,GACpB,MAAM,CAAC,aAAa,CAAC,GAAG,UAAU,EAAE,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAA;oBAElG,MAAM,uBAAuB,GAAG,WAAW,GAAG,CAAC,oBAAoB,GAAG,gBAAgB,CAAC,CAAA;oBACvF,MAAM,eAAe,GAAG,uBAAuB,GAAG,CAAC,oBAAoB,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAA;oBAE9F,MAAM,GAAG,eAAe,CAAA;oBACxB,MAAK;gBACP,CAAC;gBACD,OAAO,CAAC,CAAC,CAAC;oBACR,IAAI,UAAU,EAAE,CAAC;wBACf,MAAM,GAAG,CAAC,CAAA;oBACZ,CAAC;yBAAM,CAAC;wBACN,MAAM;4BACJ,WAAW,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC;gCAC3B,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,WAAW,CAAC,GAAG,GAAI,CAAC,GAAG,GAAG;gCAC7E,CAAC,CAAC,CAAC,CAAA;oBACT,CAAC;oBACD,MAAK;gBACP,CAAC;YACH,CAAC;YAED,uBAAuB;YACvB,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,CAAA;YACpD,IAAI,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,MAAM,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;gBAC3C,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;YAClC,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,MAAM,IAAI,CAAC,CAAC,OAAO,KAAK,WAAW,CAAC,KAAK,CAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YAErG,IAAI,YAAY,GAAG,MAAM,CAAA;YACzB,IAAI,YAAY,GAAG,MAAM,CAAA;YAEzB,IAAI,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,MAAM,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;gBAC3C,MAAM,UAAU,GAAG,CAAC,gBAAgB,CAAC,mBAAmB,GAAG,YAAY,CAAC,GAAG,QAAQ,CAAA;gBACnF,MAAM,iBAAiB,GAAG,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;gBACvD,MAAM,wBAAwB,GAAG,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,iBAAiB,EAAE,MAAM,CAAC,KAAM,CAAC,QAAQ,CAAC,CAAC,CAAA;gBAE7G,YAAY,GAAG,WAAW,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,GAAG,GAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;gBAC1F,YAAY,GAAG,YAAY,GAAG,GAAG,CAAA;YACnC,CAAC;YAED,OAAO;gBACL,KAAK,EAAE,CAAC,CAAC,OAAO;gBAChB,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW;gBAC/C,YAAY,EAAE,WAAW,CAAC,YAAY,EAAE,CAAC,CAAC;gBAC1C,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC1B,WAAW,EAAE,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC;gBACxC,kBAAkB,EAAE,WAAW,CAAC,kBAAkB,EAAE,CAAC,CAAC;gBACtD,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5D,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;gBACpD,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE,MAAM;gBACd,YAAY;gBACZ,YAAY;gBACZ,WAAW;gBACX,UAAU;gBACV,SAAS,EAAE,CAAC,CAAC,SAAS;aACvB,CAAA;QACH,CAAC,CAAC,CAAA;QAEF,IAAI,WAAW,GAAG,CAAC,CAAA;QACnB,IAAI,WAAW,GAAG,CAAC,CAAA;QACnB,IAAI,YAAY,GAAQ,SAAS,CAAA;QAEjC,IAAI,OAAO,KAAK,OAAO,CAAC,EAAE,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,oBAAoB,CAC/B,MAAM,EACN,SAAS,EAAE,UAAU,EACrB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,CACnB,CAAA;YAED,WAAW,GAAG,IAAI,CAAC,WAAW,CAAA;YAC9B,WAAW,GAAG,IAAI,CAAC,WAAW,CAAA;YAC9B,YAAY,GAAG,IAAI,CAAC,YAAY,CAAA;QAClC,CAAC;aAAM,IAAI,MAAM,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;YAChC,MAAM,GAAG,GACP,CAAC,SAAS,EAAE,UAAU,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAE,CAAC,IAAI,CAAC,CAAC;gBACzD,CAAC,MAAM,CAAC,UAAU,CAAC,iBAAiB,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAA;YAC/E,WAAW,GAAG,GAAG,CAAA;YACjB,WAAW,GAAG,GAAG,CAAA;YACjB,YAAY,GAAG;gBACb,WAAW,EAAE,GAAG;gBAChB,WAAW,EAAE,GAAG;gBAChB,eAAe,EAAE,GAAG;gBACpB,OAAO,EAAE,GAAG;gBACZ,QAAQ,EAAE,CAAC;gBACX,QAAQ,EAAE,CAAC;gBACX,YAAY,EAAE,IAAI;gBAClB,KAAK,EAAE,QAAQ;aAChB,CAAA;QACH,CAAC;QAED,YAAY;QACZ,MAAM,cAAc,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,WAAW,CAAA;QAClF,MAAM,cAAc,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,WAAW,CAAA;QAElF,mBAAmB;QACnB,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAA;QACxD,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC,CAAA,CAAC,gDAAgD;QACrI,IAAI,SAAS,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAClD,iBAAiB,CAAC,kBAAkB,GAAG;gBACrC,KAAK,EAAE,MAAM,CAAC,OAAQ,CAAC,MAAM;gBAC7B,QAAQ,EAAE,aAAa;gBACvB,IAAI,EAAE,0BAA0B;gBAChC,GAAG,EAAE,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,QAAQ;aACzD,CAAA;QACH,CAAC;QAED,IAAI,SAAS,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,aAAc,CAAC,EAAE,CAAC;YAC3D,iBAAiB,CAAC,cAAc,MAAM,CAAC,OAAQ,CAAC,MAAM,MAAM,CAAC,GAAG;gBAC9D,KAAK,EAAE,GAAG,MAAM,CAAC,OAAQ,CAAC,MAAM,IAAI,MAAM,CAAC,KAAM,CAAC,MAAM,EAAE;gBAC1D,QAAQ,EAAE,aAAa;gBACvB,IAAI,EAAE,0BAA0B;gBAChC,GAAG,EAAE,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,aAAc,CAAC,CAAC,QAAQ;aAClE,CAAA;QACH,CAAC;QAED,OAAO;YACL,GAAG,MAAM;YACT,IAAI;YACJ,WAAW,EAAE,WAAW;YACxB,iBAAiB,EAAE,WAAW,CAAC,mBAAmB,EAAE,CAAC,CAAC;YACtD,gBAAgB,EAAE,gBAAgB;YAClC,aAAa,EAAE,WAAW,CAAC,eAAe,EAAE,CAAC,CAAC;YAC9C,aAAa,EAAE,aAAa;YAC5B,sBAAsB,EAAE,sBAAsB;YAC9C,mBAAmB,EAAE,mBAAmB;YACxC,gBAAgB,EAAE,gBAAgB;YAClC,WAAW,EAAE,WAAW;YACxB,YAAY,EAAE,WAAW,CAAC,YAAY,EAAE,EAAE,CAAC;YAC3C,kBAAkB,EAAE,qBAAqB;YACzC,sBAAsB,EAAE,sBAAsB;YAC9C,iBAAiB,EAAE,oBAAoB;YACvC,kBAAkB,EAAE,kBAAkB;YACtC,WAAW;YACX,YAAY;YACZ,GAAG,EAAE,CAAC,cAAc,EAAE,cAAc,CAAC;YACrC,SAAS;YACT,WAAW;YACX,GAAG;YACH,GAAG;YACH,eAAe;YACf,iBAAiB;YACjB,WAAW;YACX,iBAAiB;YACjB,UAAU,EAAE;gBACV,GAAG,MAAM,CAAC,UAAU;gBACpB,UAAU;gBACV,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAClD;SACF,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,OAAO;QACL,MAAM,EAAE,CAAC,MAAM,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAC1G,GAAG,EACD,OAAO,KAAK,OAAO,CAAC,EAAE;YACpB,CAAC,CAAC;gBACE,kBAAkB,EAAE,WAAW,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,EAAE,CAAC;gBACxE,mBAAmB,EAAE,WAAW,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,EAAE,CAAC;gBAC1E,iBAAiB,EAAE,WAAW,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,EAAE,CAAC;gBACtE,kBAAkB,EAAE,WAAW,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,EAAE,CAAC;aACzE;YACH,CAAC,CAAC,SAAS;KAChB,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,46 @@
1
+ import { Zero } from '../../index.js';
2
+ const THREE_M_MULTIPLIER = BigInt(10);
3
+ const TEN_M_MULTIPLIER = BigInt(8);
4
+ const TWENTY_FIVE_M_MULTIPLIER = BigInt(5);
5
+ const FIFTY_M_MULTIPLIER = BigInt(3);
6
+ export const computeRatePoints = (rate, timestampStart, timestampEnd, global, basePoints = Zero) => {
7
+ if (global.fiftyMTimestamp > Zero && timestampStart >= global.fiftyMTimestamp) {
8
+ return basePoints + rate * (timestampEnd - timestampStart);
9
+ }
10
+ if (global.twentyFiveMTimestamp > Zero && timestampStart >= global.twentyFiveMTimestamp) {
11
+ if (global.fiftyMTimestamp > Zero && timestampEnd >= global.fiftyMTimestamp) {
12
+ const checkpointPoints = basePoints + FIFTY_M_MULTIPLIER * rate * (global.fiftyMTimestamp - timestampStart);
13
+ return computeRatePoints(rate, global.fiftyMTimestamp, timestampEnd, global, checkpointPoints);
14
+ }
15
+ return basePoints + FIFTY_M_MULTIPLIER * rate * (timestampEnd - timestampStart);
16
+ }
17
+ if (global.tenMTimestamp > Zero && timestampStart >= global.tenMTimestamp) {
18
+ if (global.twentyFiveMTimestamp > Zero && timestampEnd >= global.twentyFiveMTimestamp) {
19
+ const checkpointPoints = basePoints + TWENTY_FIVE_M_MULTIPLIER * rate * (global.twentyFiveMTimestamp - timestampStart);
20
+ return computeRatePoints(rate, global.twentyFiveMTimestamp, timestampEnd, global, checkpointPoints);
21
+ }
22
+ return basePoints + TWENTY_FIVE_M_MULTIPLIER * rate * (timestampEnd - timestampStart);
23
+ }
24
+ if (global.threeMTimestamp > Zero && timestampStart >= global.threeMTimestamp) {
25
+ if (global.tenMTimestamp > Zero && timestampEnd >= global.tenMTimestamp) {
26
+ const checkpointPoints = basePoints + TEN_M_MULTIPLIER * rate * (global.tenMTimestamp - timestampStart);
27
+ return computeRatePoints(rate, global.tenMTimestamp, timestampEnd, global, checkpointPoints);
28
+ }
29
+ return basePoints + TEN_M_MULTIPLIER * rate * (timestampEnd - timestampStart);
30
+ }
31
+ if (global.threeMTimestamp > Zero && timestampEnd >= global.threeMTimestamp) {
32
+ const checkpointPoints = basePoints + THREE_M_MULTIPLIER * rate * (global.threeMTimestamp - timestampStart);
33
+ return computeRatePoints(rate, global.threeMTimestamp, timestampEnd, global, checkpointPoints);
34
+ }
35
+ return basePoints + THREE_M_MULTIPLIER * rate * (timestampEnd - timestampStart);
36
+ };
37
+ export const getUpdatedPointsAmount = (userRate, userLastUpdate, userLastPoints, airdropGraph, timestamp) => {
38
+ const now = timestamp ? timestamp : Math.floor(Date.now() / 1000);
39
+ return computeRatePoints(userRate, BigInt(userLastUpdate), BigInt(now), {
40
+ threeMTimestamp: BigInt(airdropGraph.threeMTimestamp),
41
+ tenMTimestamp: BigInt(airdropGraph.tenMTimestamp),
42
+ twentyFiveMTimestamp: BigInt(airdropGraph.twentyFiveMTimestamp),
43
+ fiftyMTimestamp: BigInt(airdropGraph.fiftyMTimestamp),
44
+ }, userLastPoints);
45
+ };
46
+ //# sourceMappingURL=cakeLockerAirdrop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cakeLockerAirdrop.js","sourceRoot":"","sources":["../../../../src/lockers/utils/cakeLockerAirdrop.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { lockerWithId } from '@stake-dao/constants';
2
+ const depositorCalls = (depositor, locker) => {
3
+ const calls = [];
4
+ if ([
5
+ lockerWithId('crv').extensions.locker,
6
+ lockerWithId('mav').extensions.locker,
7
+ lockerWithId('cake', 56).extensions.locker,
8
+ lockerWithId('fxn').extensions.locker,
9
+ lockerWithId('yfi').extensions.locker,
10
+ ].includes(locker)) {
11
+ calls.push({ address: depositor, name: 'lockIncentivePercent' });
12
+ }
13
+ else {
14
+ calls.push({ address: depositor, name: 'lockIncentive' });
15
+ }
16
+ calls.push({ address: depositor, name: 'incentiveToken' });
17
+ return calls;
18
+ };
19
+ export default depositorCalls;
20
+ //# sourceMappingURL=depositorCalls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"depositorCalls.js","sourceRoot":"","sources":["../../../../../src/lockers/utils/callsForLockers/depositorCalls.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAEnD,MAAM,cAAc,GAAG,CAAC,SAAiB,EAAE,MAAc,EAAE,EAAE;IAC3D,MAAM,KAAK,GAAU,EAAE,CAAA;IAEvB,IACE;QACE,YAAY,CAAC,KAAK,CAAE,CAAC,UAAU,CAAC,MAAM;QACtC,YAAY,CAAC,KAAK,CAAE,CAAC,UAAU,CAAC,MAAM;QACtC,YAAY,CAAC,MAAM,EAAE,EAAE,CAAE,CAAC,UAAU,CAAC,MAAM;QAC3C,YAAY,CAAC,KAAK,CAAE,CAAC,UAAU,CAAC,MAAM;QACtC,YAAY,CAAC,KAAK,CAAE,CAAC,UAAU,CAAC,MAAM;KACvC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAClB,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,sBAAsB,EAAE,CAAC,CAAA;IAClE,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAA;IAC3D,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAA;IAE1D,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED,eAAe,cAAc,CAAA"}
@@ -0,0 +1,94 @@
1
+ import { zeroAddress } from 'viem';
2
+ import { Zero } from '../../../index.js';
3
+ export const feeCalls = (lockerId, accumulatorAddress) => {
4
+ const calls = [];
5
+ if (accumulatorAddress === zeroAddress || lockerId === 'mav') {
6
+ return calls;
7
+ }
8
+ // Harvester fees
9
+ calls.push({ address: accumulatorAddress, name: 'claimerFee', params: [] });
10
+ // Treasury
11
+ if (['crv', 'cake', 'yfi', 'pendle', 'fpis'].includes(lockerId)) {
12
+ calls.push({ address: accumulatorAddress, name: 'daoFee', params: [] });
13
+ }
14
+ switch (lockerId) {
15
+ case 'crv':
16
+ calls.push({ address: accumulatorAddress, name: 'liquidityFee', params: [] });
17
+ break;
18
+ case 'cake':
19
+ case 'yfi':
20
+ calls.push({ address: accumulatorAddress, name: 'liquidityFee', params: [] });
21
+ break;
22
+ case 'pendle':
23
+ calls.push({ address: accumulatorAddress, name: 'bountyFee', params: [] });
24
+ break;
25
+ case 'fpis':
26
+ calls.push({ address: accumulatorAddress, name: 'bribeFee', params: [] });
27
+ break;
28
+ case 'apw':
29
+ case 'bpt':
30
+ calls.push({ address: accumulatorAddress, name: 'lockerFee', params: [] });
31
+ break;
32
+ }
33
+ return calls;
34
+ };
35
+ export const extractFees = (lockers, feesData) => {
36
+ const results = [];
37
+ // We reverse it because all fee calls was pushed in the locker array order
38
+ // It's easier to get back fees with the pop function
39
+ // And we slice it because the reverse modify the original array
40
+ const lockersReverse = lockers.slice().reverse();
41
+ for (const locker of lockersReverse) {
42
+ if (locker.extensions.accumulator === zeroAddress || locker.id === 'mav') {
43
+ const claimerFee = locker.fees.find((f) => f.key === 'claimerFee');
44
+ const daoFee = locker.fees.find((f) => f.key === 'daoFee');
45
+ const bountyFee = locker.fees.find((f) => f.key === 'bountyFee');
46
+ const liquidityFee = locker.fees.find((f) => f.key === 'liquidityFee');
47
+ const lockerFee = locker.fees.find((f) => f.key === 'lockerFee');
48
+ results.push({
49
+ lockerId: locker.id,
50
+ claimerFee: claimerFee ? BigInt(claimerFee.value * 100) : Zero,
51
+ daoFee: daoFee ? BigInt(daoFee.value * 100) : Zero,
52
+ bountyFee: bountyFee ? BigInt(bountyFee.value * 100) : Zero,
53
+ liquidityFee: liquidityFee ? BigInt(liquidityFee.value * 100) : Zero,
54
+ lockerFee: lockerFee ? BigInt(lockerFee.value * 100) : Zero,
55
+ });
56
+ continue;
57
+ }
58
+ let daoFee = Zero;
59
+ let bountyFee = Zero;
60
+ let liquidityFee = Zero;
61
+ let lockerFee = Zero;
62
+ switch (locker.id) {
63
+ case 'crv':
64
+ liquidityFee = BigInt(feesData.pop()?.result);
65
+ daoFee = BigInt(feesData.pop()?.result);
66
+ break;
67
+ case 'cake':
68
+ case 'yfi':
69
+ liquidityFee = BigInt(feesData.pop()?.result);
70
+ daoFee = BigInt(feesData.pop()?.result);
71
+ break;
72
+ case 'pendle':
73
+ case 'fpis':
74
+ bountyFee = BigInt(feesData.pop()?.result);
75
+ daoFee = BigInt(feesData.pop()?.result);
76
+ break;
77
+ case 'apw':
78
+ case 'bpt':
79
+ lockerFee = BigInt(feesData.pop()?.result);
80
+ break;
81
+ }
82
+ const claimerFee = BigInt(feesData.pop()?.result);
83
+ results.push({
84
+ lockerId: locker.id,
85
+ claimerFee,
86
+ daoFee,
87
+ bountyFee,
88
+ liquidityFee,
89
+ lockerFee,
90
+ });
91
+ }
92
+ return results;
93
+ };
94
+ //# sourceMappingURL=feeCalls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feeCalls.js","sourceRoot":"","sources":["../../../../../src/lockers/utils/callsForLockers/feeCalls.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ const gaugeCalls = (gauge) => [
2
+ { address: gauge, name: 'totalSupply' },
3
+ { address: gauge, name: 'working_supply' },
4
+ ];
5
+ export default gaugeCalls;
6
+ //# sourceMappingURL=gaugeCalls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gaugeCalls.js","sourceRoot":"","sources":["../../../../../src/lockers/utils/callsForLockers/gaugeCalls.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC;IACpC,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE;IACvC,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE;CAC3C,CAAA;AAED,eAAe,UAAU,CAAA"}
@@ -0,0 +1,8 @@
1
+ const gaugeControllerCalls = (gaugeController, gauge) => [
2
+ { address: gaugeController, name: 'gauge_relative_weight', params: [gauge] },
3
+ { address: gaugeController, name: 'get_total_weight' },
4
+ { address: gaugeController, name: 'get_gauge_weight', params: [gauge] },
5
+ { address: gaugeController, name: 'time_total' },
6
+ ];
7
+ export default gaugeControllerCalls;
8
+ //# sourceMappingURL=gaugeControllerCalls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gaugeControllerCalls.js","sourceRoot":"","sources":["../../../../../src/lockers/utils/callsForLockers/gaugeControllerCalls.ts"],"names":[],"mappings":"AAAA,MAAM,oBAAoB,GAAG,CAAC,eAAuB,EAAE,KAAa,EAAE,EAAE,CAAC;IACvE,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,uBAAuB,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE;IAC5E,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,kBAAkB,EAAE;IACtD,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE;IACvE,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,YAAY,EAAE;CACjD,CAAA;AAED,eAAe,oBAAoB,CAAA"}
@@ -0,0 +1,29 @@
1
+ import { FOUR_YEAR } from '@stake-dao/constants';
2
+ import { OneEther } from '../../../index.js';
3
+ import depositorCalls from './depositorCalls.js';
4
+ import gaugeCalls from './gaugeCalls.js';
5
+ import gaugeControllerCalls from './gaugeControllerCalls.js';
6
+ import pegCalls from './pegCalls.js';
7
+ import veCalls from './veCalls.js';
8
+ import veSdtCalls from './veSdtCalls.js';
9
+ const callsForLockers = (lockerId, token, sdToken, votingEscrow, depositor, gaugeController, gauge, locker, pool, pegInfo, secondaryMarket, voteBooster) => [
10
+ ...veCalls(lockerId, votingEscrow, locker, token),
11
+ ...depositorCalls(depositor, locker),
12
+ ...gaugeControllerCalls(gaugeController, gauge),
13
+ ...gaugeCalls(gauge),
14
+ // Token
15
+ { address: token, name: 'balanceOf', params: [depositor] },
16
+ ...veSdtCalls(voteBooster, token, sdToken, gauge),
17
+ pegCalls(secondaryMarket, pool, pegInfo, sdToken, token),
18
+ ...(lockerId === 'mav'
19
+ ? [
20
+ {
21
+ address: votingEscrow,
22
+ name: 'previewPoints',
23
+ params: [OneEther, FOUR_YEAR],
24
+ },
25
+ ]
26
+ : []),
27
+ ];
28
+ export default callsForLockers;
29
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/lockers/utils/callsForLockers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAE5C,OAAO,cAAc,MAAM,qBAAqB,CAAA;AAChD,OAAO,UAAU,MAAM,iBAAiB,CAAA;AACxC,OAAO,oBAAoB,MAAM,2BAA2B,CAAA;AAC5D,OAAO,QAAQ,MAAM,eAAe,CAAA;AACpC,OAAO,OAAO,MAAM,cAAc,CAAA;AAClC,OAAO,UAAU,MAAM,iBAAiB,CAAA;AAExC,MAAM,eAAe,GAAG,CACtB,QAAgB,EAChB,KAAa,EACb,OAAe,EACf,YAAoB,EACpB,SAAiB,EACjB,eAAuB,EACvB,KAAa,EACb,MAAc,EACd,IAAY,EACZ,OAAY,EACZ,eAAuB,EACvB,WAAgB,EAChB,EAAE,CAAC;IACH,GAAG,OAAO,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC;IACjD,GAAG,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC;IACpC,GAAG,oBAAoB,CAAC,eAAe,EAAE,KAAK,CAAC;IAC/C,GAAG,UAAU,CAAC,KAAK,CAAC;IACpB,QAAQ;IACR,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE;IAC1D,GAAG,UAAU,CAAC,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC;IACjD,QAAQ,CAAC,eAAe,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC;IACxD,GAAG,CAAC,QAAQ,KAAK,KAAK;QACpB,CAAC,CAAC;YACE;gBACE,OAAO,EAAE,YAAY;gBACrB,IAAI,EAAE,eAAe;gBACrB,MAAM,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;aAC9B;SACF;QACH,CAAC,CAAC,EAAE,CAAC;CACR,CAAA;AAED,eAAe,eAAe,CAAA"}
@@ -0,0 +1,38 @@
1
+ import { parseUnits, zeroAddress } from 'viem';
2
+ import { contracts } from '@stake-dao/constants';
3
+ import { One, Zero } from '../../../index.js';
4
+ const pegCalls = (secondaryMarket, pool, pegInfo, sdToken, token) => {
5
+ switch (secondaryMarket) {
6
+ case 'Balancer':
7
+ return {
8
+ address: contracts.balancerVault[1],
9
+ name: 'queryBatchSwap',
10
+ params: [
11
+ Zero,
12
+ [[pool, Zero, One, parseUnits(pegInfo?.basedOn ? pegInfo.basedOn.toString() : '1', 18), '0x']],
13
+ [sdToken, token],
14
+ [zeroAddress, false, zeroAddress, false],
15
+ ],
16
+ };
17
+ case 'Maverick':
18
+ return {
19
+ address: contracts.mavPoolInfos[1],
20
+ name: 'calculateSwap',
21
+ params: [pool, parseUnits(pegInfo?.basedOn ? pegInfo.basedOn.toString() : '1', 18), true, false, Zero],
22
+ };
23
+ case 'PancakeSwap':
24
+ return {
25
+ address: contracts.pancakeQuoter[56],
26
+ name: 'quoteExactInputSingle',
27
+ params: [[sdToken, token, parseUnits(pegInfo?.basedOn ? pegInfo.basedOn.toString() : '1', 18), '2500', '0']],
28
+ };
29
+ default:
30
+ return {
31
+ address: pool,
32
+ name: 'get_dy',
33
+ params: [One, Zero, parseUnits(pegInfo?.basedOn ? pegInfo.basedOn.toString() : '1', 18)],
34
+ };
35
+ }
36
+ };
37
+ export default pegCalls;
38
+ //# sourceMappingURL=pegCalls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pegCalls.js","sourceRoot":"","sources":["../../../../../src/lockers/utils/callsForLockers/pegCalls.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,MAAM,CAAA;AAE9C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AAE7C,MAAM,QAAQ,GAAG,CAAC,eAAuB,EAAE,IAAY,EAAE,OAAY,EAAE,OAAe,EAAE,KAAa,EAAE,EAAE;IACvG,QAAQ,eAAe,EAAE,CAAC;QACxB,KAAK,UAAU;YACb,OAAO;gBACL,OAAO,EAAE,SAAS,CAAC,aAAc,CAAC,CAAC,CAAC;gBACpC,IAAI,EAAE,gBAAgB;gBACtB,MAAM,EAAE;oBACN,IAAI;oBACJ,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;oBAC9F,CAAC,OAAO,EAAE,KAAK,CAAC;oBAChB,CAAC,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC;iBACzC;aACF,CAAA;QACH,KAAK,UAAU;YACb,OAAO;gBACL,OAAO,EAAE,SAAS,CAAC,YAAa,CAAC,CAAC,CAAC;gBACnC,IAAI,EAAE,eAAe;gBACrB,MAAM,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC;aACvG,CAAA;QACH,KAAK,aAAa;YAChB,OAAO;gBACL,OAAO,EAAE,SAAS,CAAC,aAAc,CAAC,EAAE,CAAC;gBACrC,IAAI,EAAE,uBAAuB;gBAC7B,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;aAC7G,CAAA;QACH;YACE,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;aACzF,CAAA;IACL,CAAC;AACH,CAAC,CAAA;AAED,eAAe,QAAQ,CAAA"}