@coti-io/coti-contracts 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (265) hide show
  1. package/.github/workflows/npm-publish.yml +18 -14
  2. package/README.md +3 -1
  3. package/contracts/disperse/coinByRatio/FixedRatioCoinDisperser.sol +452 -0
  4. package/contracts/disperse/coinByRatio/FixedRatioCoinDisperserLeftoverS1.sol +490 -0
  5. package/contracts/disperse/coinByRatio/FixedRatioCoinDisperserUnlimitedWindow.sol +432 -0
  6. package/contracts/disperse/disperseToken/MintDisperser.sol +120 -0
  7. package/contracts/disperse/disperseToken/TokenDisperser.sol +139 -0
  8. package/contracts/mocks/token/ERC20Mock.sol +19 -0
  9. package/contracts/mocks/token/PrivateERC20/EncryptedTokenReceiverMock.sol +18 -0
  10. package/contracts/mocks/token/PrivateERC20/PrivacyBridgeERC20Mock.sol +13 -0
  11. package/contracts/mocks/token/PrivateERC20/PrivateERC20AuditorSupplyMock.sol +44 -0
  12. package/contracts/mocks/token/PrivateERC20/PrivateERC20CappedMock.sol +23 -0
  13. package/contracts/mocks/token/PrivateERC20/PrivateERC20GtCallerMock.sol +29 -0
  14. package/contracts/mocks/token/PrivateERC20/PrivateERC20Mock.sol +9 -4
  15. package/contracts/mocks/token/PrivateERC20/PrivateERC20ReentrantReceiverMock.sol +39 -0
  16. package/contracts/mocks/token/PrivateERC20/PublicReentrantTokenReceiverMock.sol +29 -0
  17. package/contracts/mocks/token/PrivateERC20/PublicTokenReceiverBoolMock.sol +18 -0
  18. package/contracts/mocks/token/PrivateERC20/PublicTokenReceiverMock.sol +12 -0
  19. package/contracts/mocks/utils/mpc/Arithmetic128TestsContract.sol +123 -0
  20. package/contracts/mocks/utils/mpc/Arithmetic256TestsContract.sol +122 -0
  21. package/contracts/mocks/utils/mpc/Bitwise128TestsContract.sol +65 -0
  22. package/contracts/mocks/utils/mpc/Bitwise256TestsContract.sol +65 -0
  23. package/contracts/mocks/utils/mpc/CheckedArithmetic128WithOverflowBitTestsContract.sol +64 -0
  24. package/contracts/mocks/utils/mpc/CheckedArithmetic256WithOverflowBitTestsContract.sol +64 -0
  25. package/contracts/mocks/utils/mpc/Comparison128TestsContract.sol +98 -0
  26. package/contracts/mocks/utils/mpc/Comparison256TestsContract.sol +98 -0
  27. package/contracts/mocks/utils/mpc/MinMax128TestsContract.sol +44 -0
  28. package/contracts/mocks/utils/mpc/MinMax256TestsContract.sol +44 -0
  29. package/contracts/mocks/utils/mpc/MinimalImplementation.sol +55 -0
  30. package/contracts/mocks/utils/mpc/MinimalProxy.sol +27 -0
  31. package/contracts/mocks/utils/mpc/MpcOperations128TestContract.sol +267 -0
  32. package/contracts/mocks/utils/mpc/MpcOperationsTestContract.sol +334 -0
  33. package/contracts/mocks/utils/mpc/Mux128TestsContract.sol +24 -0
  34. package/contracts/mocks/utils/mpc/Mux256TestsContract.sol +24 -0
  35. package/contracts/mocks/utils/mpc/OnBoard128TestsContract.sol +93 -0
  36. package/contracts/mocks/utils/mpc/OnBoard256TestsContract.sol +116 -0
  37. package/contracts/mocks/utils/mpc/PrivacyImplementationV1.sol +157 -0
  38. package/contracts/mocks/utils/mpc/PrivacyImplementationV2.sol +133 -0
  39. package/contracts/mocks/utils/mpc/PrivacyProxy.sol +137 -0
  40. package/contracts/mocks/utils/mpc/Random128TestsContract.sol +32 -0
  41. package/contracts/mocks/utils/mpc/Random256TestsContract.sol +32 -0
  42. package/contracts/mocks/utils/mpc/Shift128TestsContract.sol +36 -0
  43. package/contracts/mocks/utils/mpc/Shift256TestsContract.sol +36 -0
  44. package/contracts/mocks/utils/mpc/Transfer128TestsContract.sol +29 -0
  45. package/contracts/mocks/utils/mpc/Transfer256TestsContract.sol +29 -0
  46. package/contracts/mocks/utils/mpc/TransferWithAllowance128TestsContract.sol +32 -0
  47. package/contracts/mocks/utils/mpc/TransferWithAllowance256TestsContract.sol +32 -0
  48. package/contracts/mocks/utils/mpc/ValidateCiphertext128TestsContract.sol +59 -0
  49. package/contracts/mocks/utils/mpc/ValidateCiphertext256TestsContract.sol +63 -0
  50. package/contracts/mocks/utils/mpc/ValidateCiphertextTestsContract.sol +99 -0
  51. package/contracts/mocks/wallet/PrivateERC20Wallet/PrivateERC20WalletMock.sol +7 -6
  52. package/contracts/node/CotiNodeRewards.sol +199 -0
  53. package/contracts/node/SoulboundNodeNFT.sol +519 -0
  54. package/contracts/privacyBridge/PrivacyBridge.sol +318 -0
  55. package/contracts/privacyBridge/PrivacyBridgeCotiNative.sol +268 -0
  56. package/contracts/privacyBridge/PrivacyBridgeERC20.sol +251 -0
  57. package/contracts/privacyBridge/PrivacyBridgeUSDCe.sol +16 -0
  58. package/contracts/privacyBridge/PrivacyBridgeUSDT.sol +17 -0
  59. package/contracts/privacyBridge/PrivacyBridgeWADA.sol +17 -0
  60. package/contracts/privacyBridge/PrivacyBridgeWBTC.sol +17 -0
  61. package/contracts/privacyBridge/PrivacyBridgeWETH.sol +17 -0
  62. package/contracts/privacyBridge/PrivacyBridgegCoti.sol +17 -0
  63. package/contracts/token/PrivateERC20/IPrivateERC20.sol +273 -40
  64. package/contracts/token/PrivateERC20/ITokenReceiver.sol +17 -0
  65. package/contracts/token/PrivateERC20/ITokenReceiverEncrypted.sol +20 -0
  66. package/contracts/token/PrivateERC20/PrivateERC20.sol +861 -152
  67. package/contracts/token/PrivateERC20/tokens/PrivateBridgedUSDC.sol +17 -0
  68. package/contracts/token/PrivateERC20/tokens/PrivateCOTI.sol +13 -0
  69. package/contracts/token/PrivateERC20/tokens/PrivateCOTITreasuryGovernanceToken.sol +17 -0
  70. package/contracts/token/PrivateERC20/tokens/PrivateTetherUSD.sol +17 -0
  71. package/contracts/token/PrivateERC20/tokens/PrivateWrappedADA.sol +17 -0
  72. package/contracts/token/PrivateERC20/tokens/PrivateWrappedBTC.sol +17 -0
  73. package/contracts/token/PrivateERC20/tokens/PrivateWrappedEther.sol +13 -0
  74. package/contracts/utils/mpc/MpcCore.sol +10780 -4962
  75. package/contracts/utils/mpc/MpcInterface.sol +7 -2
  76. package/hardhat/gasPriceBump.ts +60 -0
  77. package/hardhat.config.ts +60 -12
  78. package/package.json +21 -3
  79. package/scripts/deploySoulboundNodeNFT.ts +57 -0
  80. package/test/token/PrivateERC20/PrivacyBridge.fees.test.ts +327 -0
  81. package/test/token/PrivateERC20/PrivateERC20.test.ts +1109 -268
  82. package/test/utils/mpc/Bitwise128.test.ts +92 -0
  83. package/test/utils/mpc/Bitwise256.test.ts +101 -0
  84. package/test/utils/mpc/BuildInputText128.test.ts +398 -0
  85. package/test/utils/mpc/CheckedArithmetic128.test.ts +45 -0
  86. package/test/utils/mpc/CheckedArithmetic256.test.ts +45 -0
  87. package/test/utils/mpc/Comparison128.test.ts +48 -0
  88. package/test/utils/mpc/Comparison256.test.ts +48 -0
  89. package/test/utils/mpc/InvalidCiphertext.test.ts +179 -0
  90. package/test/utils/mpc/InvalidCiphertext128.test.ts +179 -0
  91. package/test/utils/mpc/InvalidCiphertext256.test.ts +201 -0
  92. package/test/utils/mpc/InvalidTransfer128.test.ts +166 -0
  93. package/test/utils/mpc/InvalidTransfer256.test.ts +158 -0
  94. package/test/utils/mpc/MinMax128.test.ts +44 -0
  95. package/test/utils/mpc/MinMax256.test.ts +44 -0
  96. package/test/utils/mpc/MinimalProxyDemo.test.ts +280 -0
  97. package/test/utils/mpc/MpcOperations.test.ts +589 -0
  98. package/test/utils/mpc/MpcOperations128.test.ts +632 -0
  99. package/test/utils/mpc/Mux128.test.ts +41 -0
  100. package/test/utils/mpc/Mux256.test.ts +41 -0
  101. package/test/utils/mpc/NegativeCases.test.ts +478 -0
  102. package/test/utils/mpc/NegativeCases128.test.ts +237 -0
  103. package/test/utils/mpc/NegativeCases256.test.ts +236 -0
  104. package/test/utils/mpc/OnBoard128.test.ts +90 -0
  105. package/test/utils/mpc/OnBoard256.test.ts +114 -0
  106. package/test/utils/mpc/Precompile128.test.ts +51 -0
  107. package/test/utils/mpc/Precompile256.test.ts +115 -0
  108. package/test/utils/mpc/ProxyValidation.test.ts +199 -0
  109. package/test/utils/mpc/Random128.test.ts +47 -0
  110. package/test/utils/mpc/Random256.test.ts +47 -0
  111. package/test/utils/mpc/Shift128.test.ts +41 -0
  112. package/test/utils/mpc/Shift256.test.ts +41 -0
  113. package/test/utils/mpc/Transfer128.test.ts +46 -0
  114. package/test/utils/mpc/Transfer256.test.ts +46 -0
  115. package/test/utils/mpc/TransferWithAllowance128.test.ts +48 -0
  116. package/test/utils/mpc/TransferWithAllowance256.test.ts +48 -0
  117. package/test/utils/mpc/UpgradeablePrivacyProxy.test.ts +307 -0
  118. package/test/utils/mpc/ValidateCiphertext.test.ts +221 -0
  119. package/test/utils/mpc/ValidateCiphertext256.test.ts +161 -0
  120. package/test/utils/mpc/ValidateCiphertext256Decryption.test.ts +383 -0
  121. package/test/utils/mpc/WalletEncryptionFailures.test.ts +494 -0
  122. package/test/utils/privateErc20Helpers.ts +97 -0
  123. package/typechain-types/@openzeppelin/contracts/access/Ownable.ts +153 -0
  124. package/typechain-types/@openzeppelin/contracts/access/index.ts +4 -0
  125. package/typechain-types/@openzeppelin/contracts/index.ts +2 -0
  126. package/typechain-types/@openzeppelin/contracts/token/ERC20/IERC20.ts +262 -0
  127. package/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.ts +143 -0
  128. package/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/index.ts +4 -0
  129. package/typechain-types/@openzeppelin/contracts/token/ERC20/index.ts +6 -0
  130. package/typechain-types/@openzeppelin/contracts/token/index.ts +2 -0
  131. package/typechain-types/contracts/disperse/coinByRatio/FixedRatioCoinDisperser.ts +679 -0
  132. package/typechain-types/contracts/disperse/coinByRatio/index.ts +4 -0
  133. package/typechain-types/contracts/disperse/disperseToken/MintDisperser.sol/IMintableERC20.ts +97 -0
  134. package/typechain-types/contracts/disperse/disperseToken/MintDisperser.sol/MintDisperser.ts +206 -0
  135. package/typechain-types/contracts/disperse/disperseToken/MintDisperser.sol/index.ts +5 -0
  136. package/typechain-types/contracts/disperse/disperseToken/TokenDisperser.ts +191 -0
  137. package/typechain-types/contracts/disperse/disperseToken/index.ts +6 -0
  138. package/typechain-types/contracts/disperse/index.ts +7 -0
  139. package/typechain-types/contracts/index.ts +2 -0
  140. package/typechain-types/contracts/mocks/token/PrivateERC20/PrivateERC20Mock.ts +77 -60
  141. package/typechain-types/contracts/mocks/utils/mpc/Arithmetic128TestsContract.ts +311 -0
  142. package/typechain-types/contracts/mocks/utils/mpc/Arithmetic256TestsContract.ts +311 -0
  143. package/typechain-types/contracts/mocks/utils/mpc/Bitwise128TestsContract.ts +179 -0
  144. package/typechain-types/contracts/mocks/utils/mpc/Bitwise256TestsContract.ts +179 -0
  145. package/typechain-types/contracts/mocks/utils/mpc/CheckedArithmetic128WithOverflowBitTestsContract.ts +206 -0
  146. package/typechain-types/contracts/mocks/utils/mpc/CheckedArithmetic256WithOverflowBitTestsContract.ts +206 -0
  147. package/typechain-types/contracts/mocks/utils/mpc/Comparison128TestsContract.ts +278 -0
  148. package/typechain-types/contracts/mocks/utils/mpc/Comparison256TestsContract.ts +278 -0
  149. package/typechain-types/contracts/mocks/utils/mpc/MinMax128TestsContract.ts +142 -0
  150. package/typechain-types/contracts/mocks/utils/mpc/MinMax256TestsContract.ts +142 -0
  151. package/typechain-types/contracts/mocks/utils/mpc/MinimalImplementation.ts +259 -0
  152. package/typechain-types/contracts/mocks/utils/mpc/MinimalProxy.ts +90 -0
  153. package/typechain-types/contracts/mocks/utils/mpc/MpcOperations128TestContract.ts +388 -0
  154. package/typechain-types/contracts/mocks/utils/mpc/MpcOperationsTestContract.ts +455 -0
  155. package/typechain-types/contracts/mocks/utils/mpc/Mux128TestsContract.ts +109 -0
  156. package/typechain-types/contracts/mocks/utils/mpc/Mux256TestsContract.ts +109 -0
  157. package/typechain-types/contracts/mocks/utils/mpc/OnBoard128TestsContract.ts +166 -0
  158. package/typechain-types/contracts/mocks/utils/mpc/OnBoard256TestsContract.ts +194 -0
  159. package/typechain-types/contracts/mocks/utils/mpc/PrivacyImplementationV1.ts +385 -0
  160. package/typechain-types/contracts/mocks/utils/mpc/PrivacyImplementationV2.ts +441 -0
  161. package/typechain-types/contracts/mocks/utils/mpc/PrivacyProxy.ts +201 -0
  162. package/typechain-types/contracts/mocks/utils/mpc/Random128TestsContract.ts +131 -0
  163. package/typechain-types/contracts/mocks/utils/mpc/Random256TestsContract.ts +131 -0
  164. package/typechain-types/contracts/mocks/utils/mpc/Shift128TestsContract.ts +142 -0
  165. package/typechain-types/contracts/mocks/utils/mpc/Shift256TestsContract.ts +142 -0
  166. package/typechain-types/contracts/mocks/utils/mpc/Transfer128TestsContract.ts +109 -0
  167. package/typechain-types/contracts/mocks/utils/mpc/Transfer256TestsContract.ts +109 -0
  168. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance128TestsContract.ts +128 -0
  169. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance256TestsContract.ts +128 -0
  170. package/typechain-types/contracts/mocks/utils/mpc/ValidateCiphertext128TestsContract.ts +198 -0
  171. package/typechain-types/contracts/mocks/utils/mpc/ValidateCiphertext256TestsContract.ts +182 -0
  172. package/typechain-types/contracts/mocks/utils/mpc/ValidateCiphertextTestsContract.ts +257 -0
  173. package/typechain-types/contracts/mocks/utils/mpc/index.ts +32 -8
  174. package/typechain-types/contracts/token/PrivateERC20/IPrivateERC20.ts +77 -60
  175. package/typechain-types/contracts/token/PrivateERC20/PrivateERC20.ts +77 -60
  176. package/typechain-types/contracts/utils/mpc/MpcInterface.sol/ExtendedOperations.ts +111 -10
  177. package/typechain-types/factories/@openzeppelin/contracts/access/Ownable__factory.ts +74 -0
  178. package/typechain-types/factories/@openzeppelin/contracts/access/index.ts +4 -0
  179. package/typechain-types/factories/@openzeppelin/contracts/index.ts +1 -0
  180. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/IERC20__factory.ts +205 -0
  181. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit__factory.ts +100 -0
  182. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/index.ts +4 -0
  183. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/index.ts +5 -0
  184. package/typechain-types/factories/@openzeppelin/contracts/token/index.ts +1 -0
  185. package/typechain-types/factories/contracts/disperse/coinByRatio/FixedRatioCoinDisperser__factory.ts +759 -0
  186. package/typechain-types/factories/contracts/disperse/coinByRatio/index.ts +4 -0
  187. package/typechain-types/factories/contracts/disperse/disperseToken/MintDisperser.sol/IMintableERC20__factory.ts +43 -0
  188. package/typechain-types/factories/contracts/disperse/disperseToken/MintDisperser.sol/MintDisperser__factory.ts +185 -0
  189. package/typechain-types/factories/contracts/disperse/disperseToken/MintDisperser.sol/index.ts +5 -0
  190. package/typechain-types/factories/contracts/disperse/disperseToken/TokenDisperser__factory.ts +198 -0
  191. package/typechain-types/factories/contracts/disperse/disperseToken/index.ts +5 -0
  192. package/typechain-types/factories/contracts/disperse/index.ts +5 -0
  193. package/typechain-types/factories/contracts/index.ts +1 -0
  194. package/typechain-types/factories/contracts/mocks/access/DataPrivacyFramework/DataPrivacyFrameworkMock__factory.ts +1 -1
  195. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20Mock__factory.ts +179 -47
  196. package/typechain-types/factories/contracts/mocks/utils/mpc/Arithmetic128TestsContract__factory.ts +330 -0
  197. package/typechain-types/factories/contracts/mocks/utils/mpc/Arithmetic256TestsContract__factory.ts +330 -0
  198. package/typechain-types/factories/contracts/mocks/utils/mpc/ArithmeticTestsContract__factory.ts +1 -1
  199. package/typechain-types/factories/contracts/mocks/utils/mpc/Bitwise128TestsContract__factory.ts +184 -0
  200. package/typechain-types/factories/contracts/mocks/utils/mpc/Bitwise256TestsContract__factory.ts +184 -0
  201. package/typechain-types/factories/contracts/mocks/utils/mpc/BitwiseTestsContract__factory.ts +1 -1
  202. package/typechain-types/factories/contracts/mocks/utils/mpc/CheckedArithmetic128WithOverflowBitTestsContract__factory.ts +203 -0
  203. package/typechain-types/factories/contracts/mocks/utils/mpc/CheckedArithmetic256WithOverflowBitTestsContract__factory.ts +203 -0
  204. package/typechain-types/factories/contracts/mocks/utils/mpc/CheckedArithmeticWIthOverflowBitTestsContract.sol/CheckedArithmeticWithOverflowBitTestsContract__factory.ts +1 -1
  205. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison128TestsContract__factory.ts +295 -0
  206. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison1TestsContract__factory.ts +1 -1
  207. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison256TestsContract__factory.ts +295 -0
  208. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison2TestsContract__factory.ts +1 -1
  209. package/typechain-types/factories/contracts/mocks/utils/mpc/MinMax128TestsContract__factory.ts +147 -0
  210. package/typechain-types/factories/contracts/mocks/utils/mpc/MinMax256TestsContract__factory.ts +147 -0
  211. package/typechain-types/factories/contracts/mocks/utils/mpc/MinMaxTestsContract__factory.ts +1 -1
  212. package/typechain-types/factories/contracts/mocks/utils/mpc/MinimalImplementation__factory.ts +263 -0
  213. package/typechain-types/factories/contracts/mocks/utils/mpc/MinimalProxy__factory.ts +104 -0
  214. package/typechain-types/factories/contracts/mocks/utils/mpc/Miscellaneous1TestsContract__factory.ts +1 -1
  215. package/typechain-types/factories/contracts/mocks/utils/mpc/MiscellaneousTestsContract__factory.ts +1 -1
  216. package/typechain-types/factories/contracts/mocks/utils/mpc/MpcOperations128TestContract__factory.ts +723 -0
  217. package/typechain-types/factories/contracts/mocks/utils/mpc/MpcOperationsTestContract__factory.ts +1410 -0
  218. package/typechain-types/factories/contracts/mocks/utils/mpc/Mux128TestsContract__factory.ts +115 -0
  219. package/typechain-types/factories/contracts/mocks/utils/mpc/Mux256TestsContract__factory.ts +115 -0
  220. package/typechain-types/factories/contracts/mocks/utils/mpc/OffboardToUserKeyTestContract__factory.ts +1 -1
  221. package/typechain-types/factories/contracts/mocks/utils/mpc/OnBoard128TestsContract__factory.ts +175 -0
  222. package/typechain-types/factories/contracts/mocks/utils/mpc/OnBoard256TestsContract__factory.ts +205 -0
  223. package/typechain-types/factories/contracts/mocks/utils/mpc/PrivacyImplementationV1__factory.ts +521 -0
  224. package/typechain-types/factories/contracts/mocks/utils/mpc/PrivacyImplementationV2__factory.ts +648 -0
  225. package/typechain-types/factories/contracts/mocks/utils/mpc/PrivacyProxy__factory.ts +179 -0
  226. package/typechain-types/factories/contracts/mocks/utils/mpc/Random128TestsContract__factory.ts +131 -0
  227. package/typechain-types/factories/contracts/mocks/utils/mpc/Random256TestsContract__factory.ts +131 -0
  228. package/typechain-types/factories/contracts/mocks/utils/mpc/Shift128TestsContract__factory.ts +147 -0
  229. package/typechain-types/factories/contracts/mocks/utils/mpc/Shift256TestsContract__factory.ts +147 -0
  230. package/typechain-types/factories/contracts/mocks/utils/mpc/ShiftTestsContract__factory.ts +1 -1
  231. package/typechain-types/factories/contracts/mocks/utils/mpc/StringTestsContract__factory.ts +1 -1
  232. package/typechain-types/factories/contracts/mocks/utils/mpc/Transfer128TestsContract__factory.ts +135 -0
  233. package/typechain-types/factories/contracts/mocks/utils/mpc/Transfer256TestsContract__factory.ts +135 -0
  234. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferScalarTestsContract__factory.ts +1 -1
  235. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferTestsContract__factory.ts +1 -1
  236. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance128TestsContract__factory.ts +154 -0
  237. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance256TestsContract__factory.ts +154 -0
  238. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_16TestsContract__factory.ts +1 -1
  239. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_32TestsContract__factory.ts +1 -1
  240. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract__factory.ts +1 -1
  241. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_8TestsContract__factory.ts +1 -1
  242. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowanceScalarTestsContract__factory.ts +1 -1
  243. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract__factory.ts +1 -1
  244. package/typechain-types/factories/contracts/mocks/utils/mpc/ValidateCiphertext128TestsContract__factory.ts +190 -0
  245. package/typechain-types/factories/contracts/mocks/utils/mpc/ValidateCiphertext256TestsContract__factory.ts +210 -0
  246. package/typechain-types/factories/contracts/mocks/utils/mpc/ValidateCiphertextTestsContract__factory.ts +260 -0
  247. package/typechain-types/factories/contracts/mocks/utils/mpc/index.ts +32 -8
  248. package/typechain-types/factories/contracts/mocks/wallet/PrivateERC20Wallet/PrivateERC20WalletMock__factory.ts +7 -7
  249. package/typechain-types/factories/contracts/token/PrivateERC20/IPrivateERC20__factory.ts +174 -42
  250. package/typechain-types/factories/contracts/token/PrivateERC20/PrivateERC20__factory.ts +174 -42
  251. package/typechain-types/factories/contracts/utils/mpc/MpcInterface.sol/ExtendedOperations__factory.ts +126 -0
  252. package/typechain-types/hardhat.d.ts +638 -80
  253. package/typechain-types/index.ts +78 -16
  254. package/contracts/mocks/utils/mpc/Arithmetic128BitTestsContract.sol +0 -260
  255. package/contracts/mocks/utils/mpc/Arithmetic256BitTestsContract.sol +0 -264
  256. package/contracts/mocks/utils/mpc/Bitwise128BitTestsContract.sol +0 -91
  257. package/contracts/mocks/utils/mpc/Bitwise256BitTestsContract.sol +0 -91
  258. package/contracts/mocks/utils/mpc/Comparison128BitTestsContract.sol +0 -158
  259. package/contracts/mocks/utils/mpc/Comparison256BitTestsContract.sol +0 -158
  260. package/contracts/mocks/utils/mpc/Miscellaneous128BitTestsContract.sol +0 -185
  261. package/contracts/mocks/utils/mpc/Miscellaneous256BitTestsContract.sol +0 -190
  262. package/contracts/mocks/utils/mpc/README.md +0 -486
  263. package/test/utils/mpc/Unsigned128BitIntegers.test.ts +0 -945
  264. package/test/utils/mpc/Unsigned256BitIntegers.test.ts +0 -1124
  265. package/test/utils/mpc/helpers.ts +0 -77
@@ -0,0 +1,4 @@
1
+ /* Autogenerated file. Do not edit manually. */
2
+ /* tslint:disable */
3
+ /* eslint-disable */
4
+ export { FixedRatioCoinDisperser__factory } from "./FixedRatioCoinDisperser__factory";
@@ -0,0 +1,43 @@
1
+ /* Autogenerated file. Do not edit manually. */
2
+ /* tslint:disable */
3
+ /* eslint-disable */
4
+
5
+ import { Contract, Interface, type ContractRunner } from "ethers";
6
+ import type {
7
+ IMintableERC20,
8
+ IMintableERC20Interface,
9
+ } from "../../../../../contracts/disperse/disperseToken/MintDisperser.sol/IMintableERC20";
10
+
11
+ const _abi = [
12
+ {
13
+ inputs: [
14
+ {
15
+ internalType: "address",
16
+ name: "to",
17
+ type: "address",
18
+ },
19
+ {
20
+ internalType: "uint256",
21
+ name: "amount",
22
+ type: "uint256",
23
+ },
24
+ ],
25
+ name: "mint",
26
+ outputs: [],
27
+ stateMutability: "nonpayable",
28
+ type: "function",
29
+ },
30
+ ] as const;
31
+
32
+ export class IMintableERC20__factory {
33
+ static readonly abi = _abi;
34
+ static createInterface(): IMintableERC20Interface {
35
+ return new Interface(_abi) as IMintableERC20Interface;
36
+ }
37
+ static connect(
38
+ address: string,
39
+ runner?: ContractRunner | null
40
+ ): IMintableERC20 {
41
+ return new Contract(address, _abi, runner) as unknown as IMintableERC20;
42
+ }
43
+ }
@@ -0,0 +1,185 @@
1
+ /* Autogenerated file. Do not edit manually. */
2
+ /* tslint:disable */
3
+ /* eslint-disable */
4
+ import {
5
+ Contract,
6
+ ContractFactory,
7
+ ContractTransactionResponse,
8
+ Interface,
9
+ } from "ethers";
10
+ import type {
11
+ Signer,
12
+ AddressLike,
13
+ ContractDeployTransaction,
14
+ ContractRunner,
15
+ } from "ethers";
16
+ import type { NonPayableOverrides } from "../../../../../common";
17
+ import type {
18
+ MintDisperser,
19
+ MintDisperserInterface,
20
+ } from "../../../../../contracts/disperse/disperseToken/MintDisperser.sol/MintDisperser";
21
+
22
+ const _abi = [
23
+ {
24
+ inputs: [
25
+ {
26
+ internalType: "address",
27
+ name: "initialOwner",
28
+ type: "address",
29
+ },
30
+ ],
31
+ stateMutability: "nonpayable",
32
+ type: "constructor",
33
+ },
34
+ {
35
+ anonymous: false,
36
+ inputs: [
37
+ {
38
+ indexed: true,
39
+ internalType: "address",
40
+ name: "previousOwner",
41
+ type: "address",
42
+ },
43
+ {
44
+ indexed: true,
45
+ internalType: "address",
46
+ name: "newOwner",
47
+ type: "address",
48
+ },
49
+ ],
50
+ name: "OwnershipTransferred",
51
+ type: "event",
52
+ },
53
+ {
54
+ inputs: [
55
+ {
56
+ internalType: "address",
57
+ name: "token",
58
+ type: "address",
59
+ },
60
+ {
61
+ internalType: "address[]",
62
+ name: "recipients",
63
+ type: "address[]",
64
+ },
65
+ {
66
+ internalType: "uint256[]",
67
+ name: "amounts",
68
+ type: "uint256[]",
69
+ },
70
+ ],
71
+ name: "mint",
72
+ outputs: [],
73
+ stateMutability: "nonpayable",
74
+ type: "function",
75
+ },
76
+ {
77
+ inputs: [
78
+ {
79
+ internalType: "address",
80
+ name: "token",
81
+ type: "address",
82
+ },
83
+ {
84
+ internalType: "address[]",
85
+ name: "recipients",
86
+ type: "address[]",
87
+ },
88
+ {
89
+ internalType: "uint256",
90
+ name: "amountPerRecipient",
91
+ type: "uint256",
92
+ },
93
+ ],
94
+ name: "mintSameAmount",
95
+ outputs: [],
96
+ stateMutability: "nonpayable",
97
+ type: "function",
98
+ },
99
+ {
100
+ inputs: [],
101
+ name: "owner",
102
+ outputs: [
103
+ {
104
+ internalType: "address",
105
+ name: "",
106
+ type: "address",
107
+ },
108
+ ],
109
+ stateMutability: "view",
110
+ type: "function",
111
+ },
112
+ {
113
+ inputs: [],
114
+ name: "renounceOwnership",
115
+ outputs: [],
116
+ stateMutability: "nonpayable",
117
+ type: "function",
118
+ },
119
+ {
120
+ inputs: [
121
+ {
122
+ internalType: "address",
123
+ name: "newOwner",
124
+ type: "address",
125
+ },
126
+ ],
127
+ name: "transferOwnership",
128
+ outputs: [],
129
+ stateMutability: "nonpayable",
130
+ type: "function",
131
+ },
132
+ ] as const;
133
+
134
+ const _bytecode =
135
+ "0x608060405234801561001057600080fd5b50604051610b66380380610b6683398101604081905261002f91610097565b61003833610047565b61004181610047565b506100c7565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100a957600080fd5b81516001600160a01b03811681146100c057600080fd5b9392505050565b610a90806100d66000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80639b3418a9116100505780639b3418a9146100a2578063a3bf277e146100b5578063f2fde38b146100c857600080fd5b8063715018a61461006c5780638da5cb5b14610076575b600080fd5b6100746100db565b005b6000546040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100746100b03660046108f8565b6100ef565b6100746100c3366004610952565b6103a0565b6100746100d63660046109d3565b6106d6565b6100e361078d565b6100ed600061080e565b565b6100f761078d565b73ffffffffffffffffffffffffffffffffffffffff8416610179576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f746f6b656e3d300000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600081116101e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f616d6f756e743d300000000000000000000000000000000000000000000000006044820152606401610170565b818061024b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f6e6f20726563697069656e7473000000000000000000000000000000000000006044820152606401610170565b60005b8181101561039857600085858381811061026a5761026a6109f5565b905060200201602081019061027f91906109d3565b905073ffffffffffffffffffffffffffffffffffffffff81166102fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f726563697069656e743d300000000000000000000000000000000000000000006044820152606401610170565b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152602482018690528816906340c10f1990604401600060405180830381600087803b15801561036e57600080fd5b505af1158015610382573d6000803e3d6000fd5b50505050508061039190610a24565b905061024e565b505050505050565b6103a861078d565b73ffffffffffffffffffffffffffffffffffffffff8516610425576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f746f6b656e3d30000000000000000000000000000000000000000000000000006044820152606401610170565b828061048d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f6e6f20726563697069656e7473000000000000000000000000000000000000006044820152606401610170565b8082146104f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f6c656e677468206d69736d6174636800000000000000000000000000000000006044820152606401610170565b60005b818110156106cd576000868683818110610515576105156109f5565b905060200201602081019061052a91906109d3565b90506000858584818110610540576105406109f5565b602002919091013591505073ffffffffffffffffffffffffffffffffffffffff82166105c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f726563697069656e743d300000000000000000000000000000000000000000006044820152606401610170565b60008111610632576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f616d6f756e743d300000000000000000000000000000000000000000000000006044820152606401610170565b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390528a16906340c10f1990604401600060405180830381600087803b1580156106a257600080fd5b505af11580156106b6573d6000803e3d6000fd5b505050505050806106c690610a24565b90506104f9565b50505050505050565b6106de61078d565b73ffffffffffffffffffffffffffffffffffffffff8116610781576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610170565b61078a8161080e565b50565b60005473ffffffffffffffffffffffffffffffffffffffff1633146100ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610170565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b803573ffffffffffffffffffffffffffffffffffffffff811681146108a757600080fd5b919050565b60008083601f8401126108be57600080fd5b50813567ffffffffffffffff8111156108d657600080fd5b6020830191508360208260051b85010111156108f157600080fd5b9250929050565b6000806000806060858703121561090e57600080fd5b61091785610883565b9350602085013567ffffffffffffffff81111561093357600080fd5b61093f878288016108ac565b9598909750949560400135949350505050565b60008060008060006060868803121561096a57600080fd5b61097386610883565b9450602086013567ffffffffffffffff8082111561099057600080fd5b61099c89838a016108ac565b909650945060408801359150808211156109b557600080fd5b506109c2888289016108ac565b969995985093965092949392505050565b6000602082840312156109e557600080fd5b6109ee82610883565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610a7c577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea164736f6c6343000813000a";
136
+
137
+ type MintDisperserConstructorParams =
138
+ | [signer?: Signer]
139
+ | ConstructorParameters<typeof ContractFactory>;
140
+
141
+ const isSuperArgs = (
142
+ xs: MintDisperserConstructorParams
143
+ ): xs is ConstructorParameters<typeof ContractFactory> => xs.length > 1;
144
+
145
+ export class MintDisperser__factory extends ContractFactory {
146
+ constructor(...args: MintDisperserConstructorParams) {
147
+ if (isSuperArgs(args)) {
148
+ super(...args);
149
+ } else {
150
+ super(_abi, _bytecode, args[0]);
151
+ }
152
+ }
153
+
154
+ override getDeployTransaction(
155
+ initialOwner: AddressLike,
156
+ overrides?: NonPayableOverrides & { from?: string }
157
+ ): Promise<ContractDeployTransaction> {
158
+ return super.getDeployTransaction(initialOwner, overrides || {});
159
+ }
160
+ override deploy(
161
+ initialOwner: AddressLike,
162
+ overrides?: NonPayableOverrides & { from?: string }
163
+ ) {
164
+ return super.deploy(initialOwner, overrides || {}) as Promise<
165
+ MintDisperser & {
166
+ deploymentTransaction(): ContractTransactionResponse;
167
+ }
168
+ >;
169
+ }
170
+ override connect(runner: ContractRunner | null): MintDisperser__factory {
171
+ return super.connect(runner) as MintDisperser__factory;
172
+ }
173
+
174
+ static readonly bytecode = _bytecode;
175
+ static readonly abi = _abi;
176
+ static createInterface(): MintDisperserInterface {
177
+ return new Interface(_abi) as MintDisperserInterface;
178
+ }
179
+ static connect(
180
+ address: string,
181
+ runner?: ContractRunner | null
182
+ ): MintDisperser {
183
+ return new Contract(address, _abi, runner) as unknown as MintDisperser;
184
+ }
185
+ }
@@ -0,0 +1,5 @@
1
+ /* Autogenerated file. Do not edit manually. */
2
+ /* tslint:disable */
3
+ /* eslint-disable */
4
+ export { IMintableERC20__factory } from "./IMintableERC20__factory";
5
+ export { MintDisperser__factory } from "./MintDisperser__factory";
@@ -0,0 +1,198 @@
1
+ /* Autogenerated file. Do not edit manually. */
2
+ /* tslint:disable */
3
+ /* eslint-disable */
4
+ import {
5
+ Contract,
6
+ ContractFactory,
7
+ ContractTransactionResponse,
8
+ Interface,
9
+ } from "ethers";
10
+ import type {
11
+ Signer,
12
+ AddressLike,
13
+ ContractDeployTransaction,
14
+ ContractRunner,
15
+ } from "ethers";
16
+ import type { NonPayableOverrides } from "../../../../common";
17
+ import type {
18
+ TokenDisperser,
19
+ TokenDisperserInterface,
20
+ } from "../../../../contracts/disperse/disperseToken/TokenDisperser";
21
+
22
+ const _abi = [
23
+ {
24
+ inputs: [
25
+ {
26
+ internalType: "address",
27
+ name: "token_",
28
+ type: "address",
29
+ },
30
+ ],
31
+ stateMutability: "nonpayable",
32
+ type: "constructor",
33
+ },
34
+ {
35
+ inputs: [
36
+ {
37
+ internalType: "uint256",
38
+ name: "distributionId",
39
+ type: "uint256",
40
+ },
41
+ {
42
+ internalType: "uint256",
43
+ name: "totalAmount",
44
+ type: "uint256",
45
+ },
46
+ {
47
+ internalType: "address",
48
+ name: "sender",
49
+ type: "address",
50
+ },
51
+ {
52
+ internalType: "address[]",
53
+ name: "recipients",
54
+ type: "address[]",
55
+ },
56
+ {
57
+ internalType: "uint256[]",
58
+ name: "amounts",
59
+ type: "uint256[]",
60
+ },
61
+ ],
62
+ name: "disperseFunds",
63
+ outputs: [],
64
+ stateMutability: "nonpayable",
65
+ type: "function",
66
+ },
67
+ {
68
+ inputs: [
69
+ {
70
+ internalType: "uint256",
71
+ name: "distributionId",
72
+ type: "uint256",
73
+ },
74
+ {
75
+ internalType: "uint256",
76
+ name: "totalAmount",
77
+ type: "uint256",
78
+ },
79
+ {
80
+ internalType: "address[]",
81
+ name: "recipients",
82
+ type: "address[]",
83
+ },
84
+ {
85
+ internalType: "uint256[]",
86
+ name: "amounts",
87
+ type: "uint256[]",
88
+ },
89
+ ],
90
+ name: "disperseFundsFromContract",
91
+ outputs: [],
92
+ stateMutability: "nonpayable",
93
+ type: "function",
94
+ },
95
+ {
96
+ inputs: [
97
+ {
98
+ internalType: "uint256",
99
+ name: "distributionId",
100
+ type: "uint256",
101
+ },
102
+ {
103
+ internalType: "address[]",
104
+ name: "recipients",
105
+ type: "address[]",
106
+ },
107
+ ],
108
+ name: "fundsReceived",
109
+ outputs: [
110
+ {
111
+ internalType: "uint256[]",
112
+ name: "",
113
+ type: "uint256[]",
114
+ },
115
+ ],
116
+ stateMutability: "view",
117
+ type: "function",
118
+ },
119
+ {
120
+ inputs: [],
121
+ name: "owner",
122
+ outputs: [
123
+ {
124
+ internalType: "address",
125
+ name: "",
126
+ type: "address",
127
+ },
128
+ ],
129
+ stateMutability: "view",
130
+ type: "function",
131
+ },
132
+ {
133
+ inputs: [],
134
+ name: "token",
135
+ outputs: [
136
+ {
137
+ internalType: "contract IERC20",
138
+ name: "",
139
+ type: "address",
140
+ },
141
+ ],
142
+ stateMutability: "view",
143
+ type: "function",
144
+ },
145
+ ] as const;
146
+
147
+ const _bytecode =
148
+ "0x60c060405234801561001057600080fd5b5060405161115638038061115683398101604081905261002f91610044565b336080526001600160a01b031660a052610074565b60006020828403121561005657600080fd5b81516001600160a01b038116811461006d57600080fd5b9392505050565b60805160a0516110a26100b46000396000818161010e015281816102ea015261070301526000818160c201528181610148015261056701526110a26000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806389f3fefe1161005057806389f3fefe146100aa5780638da5cb5b146100bd578063fc0c546a1461010957600080fd5b8063686792961461006c57806374a9ea7214610081575b600080fd5b61007f61007a366004610d3b565b610130565b005b61009461008f366004610dcf565b610454565b6040516100a19190610e1b565b60405180910390f35b61007f6100b8366004610e5f565b61054f565b6100e47f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a1565b6100e47f000000000000000000000000000000000000000000000000000000000000000081565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146101d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f43616c6c6572206973206e6f74206f776e65720000000000000000000000000060448201526064015b60405180910390fd5b6000805b848110156103e05760008981526020819052604081209087878481811061020157610201610ee2565b90506020020160208101906102169190610f11565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002054156102a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4475706c696361746520726563697069656e740000000000000000000000000060448201526064016101cb565b61032f878787848181106102ba576102ba610ee2565b90506020020160208101906102cf9190610f11565b8686858181106102e1576102e1610ee2565b905060200201357f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661086b909392919063ffffffff16565b83838281811061034157610341610ee2565b90506020020135826103539190610f62565b915083838281811061036757610367610ee2565b905060200201356000808b8152602001908152602001600020600088888581811061039457610394610ee2565b90506020020160208101906103a99190610f11565b73ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020556103d981610f7b565b90506101d8565b5086811461044a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f496e636f727265637420616d6f756e740000000000000000000000000000000060448201526064016101cb565b5050505050505050565b606060008267ffffffffffffffff81111561047157610471610fb3565b60405190808252806020026020018201604052801561049a578160200160208202803683370190505b50905060005b83811015610546576000868152602081905260408120908686848181106104c9576104c9610ee2565b90506020020160208101906104de9190610f11565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482828151811061052b5761052b610ee2565b602090810291909101015261053f81610f7b565b90506104a0565b50949350505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146105ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f43616c6c6572206973206e6f74206f776e65720000000000000000000000000060448201526064016101cb565b6000805b848110156107f85760008881526020819052604081209087878481811061061b5761061b610ee2565b90506020020160208101906106309190610f11565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002054156106be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4475706c696361746520726563697069656e740000000000000000000000000060448201526064016101cb565b6107478686838181106106d3576106d3610ee2565b90506020020160208101906106e89190610f11565b8585848181106106fa576106fa610ee2565b905060200201357f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661094d9092919063ffffffff16565b83838281811061075957610759610ee2565b905060200201358261076b9190610f62565b915083838281811061077f5761077f610ee2565b905060200201356000808a815260200190815260200160002060008888858181106107ac576107ac610ee2565b90506020020160208101906107c19190610f11565b73ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020556107f181610f7b565b90506105f2565b50858114610862576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f496e636f727265637420616d6f756e740000000000000000000000000000000060448201526064016101cb565b50505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526109479085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526109a8565b50505050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526109a39084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064016108c5565b505050565b6000610a0a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16610ab79092919063ffffffff16565b9050805160001480610a2b575080806020019051810190610a2b9190610fe2565b6109a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016101cb565b6060610ac68484600085610ace565b949350505050565b606082471015610b60576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016101cb565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051610b899190611028565b60006040518083038185875af1925050503d8060008114610bc6576040519150601f19603f3d011682016040523d82523d6000602084013e610bcb565b606091505b5091509150610bdc87838387610be7565b979650505050505050565b60608315610c7d578251600003610c765773ffffffffffffffffffffffffffffffffffffffff85163b610c76576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101cb565b5081610ac6565b610ac68383815115610c925781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101cb9190611044565b803573ffffffffffffffffffffffffffffffffffffffff81168114610cea57600080fd5b919050565b60008083601f840112610d0157600080fd5b50813567ffffffffffffffff811115610d1957600080fd5b6020830191508360208260051b8501011115610d3457600080fd5b9250929050565b600080600080600080600060a0888a031215610d5657600080fd5b8735965060208801359550610d6d60408901610cc6565b9450606088013567ffffffffffffffff80821115610d8a57600080fd5b610d968b838c01610cef565b909650945060808a0135915080821115610daf57600080fd5b50610dbc8a828b01610cef565b989b979a50959850939692959293505050565b600080600060408486031215610de457600080fd5b83359250602084013567ffffffffffffffff811115610e0257600080fd5b610e0e86828701610cef565b9497909650939450505050565b6020808252825182820181905260009190848201906040850190845b81811015610e5357835183529284019291840191600101610e37565b50909695505050505050565b60008060008060008060808789031215610e7857600080fd5b8635955060208701359450604087013567ffffffffffffffff80821115610e9e57600080fd5b610eaa8a838b01610cef565b90965094506060890135915080821115610ec357600080fd5b50610ed089828a01610cef565b979a9699509497509295939492505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215610f2357600080fd5b610f2c82610cc6565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610f7557610f75610f33565b92915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610fac57610fac610f33565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060208284031215610ff457600080fd5b81518015158114610f2c57600080fd5b60005b8381101561101f578181015183820152602001611007565b50506000910152565b6000825161103a818460208701611004565b9190910192915050565b6020815260008251806020840152611063816040850160208701611004565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea164736f6c6343000813000a";
149
+
150
+ type TokenDisperserConstructorParams =
151
+ | [signer?: Signer]
152
+ | ConstructorParameters<typeof ContractFactory>;
153
+
154
+ const isSuperArgs = (
155
+ xs: TokenDisperserConstructorParams
156
+ ): xs is ConstructorParameters<typeof ContractFactory> => xs.length > 1;
157
+
158
+ export class TokenDisperser__factory extends ContractFactory {
159
+ constructor(...args: TokenDisperserConstructorParams) {
160
+ if (isSuperArgs(args)) {
161
+ super(...args);
162
+ } else {
163
+ super(_abi, _bytecode, args[0]);
164
+ }
165
+ }
166
+
167
+ override getDeployTransaction(
168
+ token_: AddressLike,
169
+ overrides?: NonPayableOverrides & { from?: string }
170
+ ): Promise<ContractDeployTransaction> {
171
+ return super.getDeployTransaction(token_, overrides || {});
172
+ }
173
+ override deploy(
174
+ token_: AddressLike,
175
+ overrides?: NonPayableOverrides & { from?: string }
176
+ ) {
177
+ return super.deploy(token_, overrides || {}) as Promise<
178
+ TokenDisperser & {
179
+ deploymentTransaction(): ContractTransactionResponse;
180
+ }
181
+ >;
182
+ }
183
+ override connect(runner: ContractRunner | null): TokenDisperser__factory {
184
+ return super.connect(runner) as TokenDisperser__factory;
185
+ }
186
+
187
+ static readonly bytecode = _bytecode;
188
+ static readonly abi = _abi;
189
+ static createInterface(): TokenDisperserInterface {
190
+ return new Interface(_abi) as TokenDisperserInterface;
191
+ }
192
+ static connect(
193
+ address: string,
194
+ runner?: ContractRunner | null
195
+ ): TokenDisperser {
196
+ return new Contract(address, _abi, runner) as unknown as TokenDisperser;
197
+ }
198
+ }
@@ -0,0 +1,5 @@
1
+ /* Autogenerated file. Do not edit manually. */
2
+ /* tslint:disable */
3
+ /* eslint-disable */
4
+ export * as mintDisperserSol from "./MintDisperser.sol";
5
+ export { TokenDisperser__factory } from "./TokenDisperser__factory";
@@ -0,0 +1,5 @@
1
+ /* Autogenerated file. Do not edit manually. */
2
+ /* tslint:disable */
3
+ /* eslint-disable */
4
+ export * as coinByRatio from "./coinByRatio";
5
+ export * as disperseToken from "./disperseToken";
@@ -2,6 +2,7 @@
2
2
  /* tslint:disable */
3
3
  /* eslint-disable */
4
4
  export * as access from "./access";
5
+ export * as disperse from "./disperse";
5
6
  export * as mocks from "./mocks";
6
7
  export * as onboard from "./onboard";
7
8
  export * as token from "./token";
@@ -615,7 +615,7 @@ const _abi = [
615
615
  ] as const;
616
616
 
617
617
  const _bytecode =
618
- "0x608060405260016005553480156200001657600080fd5b506000805461ffff19166101011790556040516430b236b4b760d91b81526001908190819081906005019081526040805160209281900383018120805460ff1916941515949094179093556101408301815233835280518082018252600581526430b236b4b760d91b81840152828401526001838201526000606084018190526080840181905260a0840181905260c0840181905260e08401819052610100840181905281519283019091528152610120820152620000d59062000196565b506040805180820182526001808252601560f91b602083015291518291620000fd9162000592565b9081526040805160209281900383018120805460ff19169415159490941790935561014083018152600180845281518083018352818152601560f91b8185015283850152838201526000606084018190526080840181905260a0840181905260c0840181905260e084018190526101008401819052815192830190915281526101208201526200018d9062000196565b50505062000780565b80516001600160a01b03166000908152600460209081526040808320918401519051620001c4919062000592565b908152602001604051809103902054600003620003ff5760055482516001600160a01b031660009081526004602090815260409182902090850151915190916200020e9162000592565b908152602001604051809103902081905550604051806101600160405280600554815260200183600001516001600160a01b03168152602001836020015181526020018360400151151581526020018360a00151151581526020018360c001511515815260200183606001518152602001836080015181526020018360e0015181526020018361010001516001600160a01b031681526020018361012001518152506006600060055481526020019081526020016000206000820151816000015560208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550604082015181600201908162000313919062000668565b506060820151600382018054608085015160a086015161ffff1990921693151561ff0019169390931761010093151584021762ff00001916620100009115159190910217905560c0830151600483015560e0830151600583015582015160068201556101208201516007820180546001600160a01b0319166001600160a01b039092169190911790556101408201516008820190620003b3908262000668565b50905050600560008154620003c8906200074a565b9091555081516001600160a01b031660009081526003602052604081208054909190620003f5906200074a565b909155506200058a565b81516001600160a01b031660009081526004602090815260408083209185015190516006928492909162000434919062000592565b90815260200160405180910390205481526020019081526020016000209050826040015180156200046a5750600381015460ff16155b156200049e5782516001600160a01b03166000908152600360205260408120805490919062000499906200074a565b909155505b8260400151158015620004b55750600381015460ff165b15620004e95782516001600160a01b031660009081526003602052604081208054909190620004e49062000766565b909155505b6040830151600382018054606086015160048501556080860151600585015560a086015160c087015161ffff1990921693151561ff0019169390931761010093151584021762ff00001916620100009115159190910217905560e084015160068301558301516007820180546001600160a01b0319166001600160a01b03909216919091179055610120830151600882019062000587908262000668565b50505b506001919050565b6000825160005b81811015620005b5576020818601810151858301520162000599565b506000920191825250919050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620005ee57607f821691505b6020821081036200060f57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200066357600081815260208120601f850160051c810160208610156200063e5750805b601f850160051c820191505b818110156200065f578281556001016200064a565b5050505b505050565b81516001600160401b03811115620006845762000684620005c3565b6200069c81620006958454620005d9565b8462000615565b602080601f831160018114620006d45760008415620006bb5750858301515b600019600386901b1c1916600185901b1785556200065f565b600085815260208120601f198616915b828110156200070557888601518255948401946001909101908401620006e4565b5085821015620007245787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b6000600182016200075f576200075f62000734565b5060010190565b60008162000778576200077862000734565b506000190190565b6128aa80620007906000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c8063a7804d65116100d8578063f28b9f341161008c578063fa1b3cac11610066578063fa1b3cac146103be578063fac66f01146103eb578063fb83bb731461040b57600080fd5b8063f28b9f341461036b578063f55893641461037d578063f9529ee2146103ab57600080fd5b8063c6064b28116100bd578063c6064b28146102d3578063c8d757fd146102e6578063efdcec9c1461032257600080fd5b8063a7804d65146102a0578063ade0bee4146102c057600080fd5b8063661957011161013a5780639359c287116101145780639359c2871461026d578063a5fcf16214610280578063a74d34391461028d57600080fd5b80636619570114610231578063699d7c331461024757806382dab96e1461025a57600080fd5b8063372db0891161016b578063372db089146101f8578063476a95ad1461020b57806365c581521461021e57600080fd5b806326c500071461018757806334906a4a146101ba575b600080fd5b61019a610195366004611dda565b61041e565b6040516101b19b9a99989796959493929190611e61565b60405180910390f35b6101e86101c8366004611ff8565b805160208183018101805160018252928201919093012091525460ff1681565b60405190151581526020016101b1565b6101e861020636600461209f565b6105bb565b6101e8610219366004612109565b6105e6565b6101e861022c366004611ff8565b610695565b61023961079f565b6040519081526020016101b1565b6101e861025536600461212b565b6107b5565b6101e861026836600461217e565b6107df565b6101e861027b366004611ff8565b610d39565b6000546101e89060ff1681565b6101e861029b366004612288565b610dd6565b6102396102ae366004612309565b60036020526000908152604090205481565b6101e86102ce366004612109565b610e29565b6101e86102e1366004612324565b610ee2565b6102396102f4366004612389565b6004602090815260009283526040909220815180830184018051928152908401929093019190912091525481565b61035e6040518060400160405280600181526020017f2a0000000000000000000000000000000000000000000000000000000000000081525081565b6040516101b191906123d7565b6000546101e890610100900460ff1681565b6101e861038b366004611ff8565b805160208183018101805160028252928201919093012091525460ff1681565b6101e86103b93660046123ea565b610f04565b6103c6600181565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b1565b6103fe6103f936600461242c565b610fed565b6040516101b1919061244e565b6101e86104193660046123ea565b61146d565b600660205260009081526040902080546001820154600283018054929373ffffffffffffffffffffffffffffffffffffffff9092169261045d90612595565b80601f016020809104026020016040519081016040528092919081815260200182805461048990612595565b80156104d65780601f106104ab576101008083540402835291602001916104d6565b820191906000526020600020905b8154815290600101906020018083116104b957829003601f168201915b5050505060038301546004840154600585015460068601546007870154600888018054979860ff8088169961010089048216995062010000909804169673ffffffffffffffffffffffffffffffffffffffff9093169290919061053890612595565b80601f016020809104026020016040519081016040528092919081815260200182805461056490612595565b80156105b15780601f10610586576101008083540402835291602001916105b1565b820191906000526020600020905b81548152906001019060200180831161059457829003601f168201915b505050505090508b565b60006105dd85858560018660006040518060200160405280600081525061150e565b95945050505050565b6000805482151560ff909116151503610660576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4450463a20494e56414c49445f5045524d495353494f4e5f4348414e4745000060448201526064015b60405180910390fd5b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600190565b60006002826040516106a791906125e8565b9081526040519081900360200190205460ff1615610747576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4450463a204f5045524154494f4e5f414c52454144595f52455354524943544560448201527f44000000000000000000000000000000000000000000000000000000000000006064820152608401610657565b600160028360405161075991906125e8565b90815260405190819003602001902080549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909216919091179055506001919050565b600060016005546107b09190612633565b905090565b60006107d784848460008060006040518060200160405280600081525061150e565b949350505050565b805173ffffffffffffffffffffffffffffffffffffffff16600090815260046020908152604080832091840151905161081891906125e8565b908152602001604051809103902054600003610b1057600554825173ffffffffffffffffffffffffffffffffffffffff16600090815260046020908152604091829020908501519151909161086c916125e8565b9081526020016040518091039020819055506040518061016001604052806005548152602001836000015173ffffffffffffffffffffffffffffffffffffffff168152602001836020015181526020018360400151151581526020018360a00151151581526020018360c001511515815260200183606001518152602001836080015181526020018360e00151815260200183610100015173ffffffffffffffffffffffffffffffffffffffff1681526020018361012001518152506006600060055481526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020190816109a39190612695565b506060820151600382018054608085015160a08601517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00009092169315157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16939093176101009315158402177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff16620100009115159190910217905560c0830151600483015560e0830151600583015582015160068201556101208201516007820180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790556101408201516008820190610abc9082612695565b50905050600560008154610acf906127af565b90915550815173ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604081208054909190610b07906127af565b90915550610d31565b815173ffffffffffffffffffffffffffffffffffffffff16600090815260046020908152604080832091850151905160069284929091610b5091906125e8565b9081526020016040518091039020548152602001908152602001600020905082604001518015610b855750600381015460ff16155b15610bc357825173ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604081208054909190610bbe906127af565b909155505b8260400151158015610bd95750600381015460ff165b15610c1757825173ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604081208054909190610c12906127e7565b909155505b6040830151600382018054606086015160048501556080860151600585015560a086015160c08701517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00009092169315157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16939093176101009315158402177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff16620100009115159190910217905560e084015160068301558301516007820180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790556101208301516008820190610d2e9082612695565b50505b506001919050565b6000600182604051610d4b91906125e8565b9081526040519081900360200190205460ff1615610dc5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4450463a204f5045524154494f4e5f414c52454144595f414c4c4f57454400006044820152606401610657565b6001808360405161075991906125e8565b6000610e1f868686600360008089898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061150e92505050565b9695505050505050565b6000811515600060019054906101000a900460ff16151503610ea7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4450463a20494e56414c49445f5045524d495353494f4e5f4348414e474500006044820152606401610657565b5060008054911515610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909216919091179055600190565b60006105dd85858560026000876040518060200160405280600081525061150e565b600060018383604051610f1892919061281c565b9081526040519081900360200190205460ff16610f91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4450463a204f5045524154494f4e5f4e4f545f414c4c4f5745440000000000006044820152606401610657565b600060018484604051610fa592919061281c565b90815260405190819003602001902080549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009092169190911790555060015b92915050565b606060008311611059576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4450463a2053544152545f4944585f5a45524f000000000000000000000000006044820152606401610657565b600082116110c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4450463a204348554e4b5f53495a455f5a45524f0000000000000000000000006044820152606401610657565b600554831061115557604080516000808252602082019092529061114d565b604080516101608101825260008082526020820181905260609282018390528282018190526080820181905260a0820181905260c0820181905260e0820181905261010082018190526101208201526101408101919091528152602001906001900390816110e25790505b509050610fe7565b600060016005546111669190612633565b6001611172858761282c565b61117c9190612633565b111561119557836005546111909190612633565b611197565b825b905060008167ffffffffffffffff8111156111b4576111b4611ef4565b60405190808252806020026020018201604052801561123d57816020015b604080516101608101825260008082526020820181905260609282018390528282018190526080820181905260a0820181905260c0820181905260e0820181905261010082018190526101208201526101408101919091528152602001906001900390816111d25790505b50905060005b828110156114645760066000611259838961282c565b8152602080820192909252604090810160002081516101608101835281548152600182015473ffffffffffffffffffffffffffffffffffffffff169381019390935260028101805491928401916112af90612595565b80601f01602080910402602001604051908101604052809291908181526020018280546112db90612595565b80156113285780601f106112fd57610100808354040283529160200191611328565b820191906000526020600020905b81548152906001019060200180831161130b57829003601f168201915b5050509183525050600382015460ff8082161515602084015261010080830482161515604085015262010000909204161515606083015260048301546080830152600583015460a0830152600683015460c0830152600783015473ffffffffffffffffffffffffffffffffffffffff1660e08301526008830180549190920191906113b290612595565b80601f01602080910402602001604051908101604052809291908181526020018280546113de90612595565b801561142b5780601f106114005761010080835404028352916020019161142b565b820191906000526020600020905b81548152906001019060200180831161140e57829003601f168201915b5050505050815250508282815181106114465761144661283f565b6020026020010181905250808061145c906127af565b915050611243565b50949350505050565b60006002838360405161148192919061281c565b9081526040519081900360200190205460ff166114fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4450463a204f5045524154494f4e5f4e4f545f524553545249435445440000006044820152606401610657565b600060028484604051610fa592919061281c565b60006002878760405161152292919061281c565b9081526040519081900360200190205460ff161561154257506000611bc9565b60408051808201825260018082527f2a000000000000000000000000000000000000000000000000000000000000006020830152915161158291906125e8565b9081526040519081900360200190205460ff161580156115c45750600187876040516115af92919061281c565b9081526040519081900360200190205460ff16155b156115d157506000611bc9565b73ffffffffffffffffffffffffffffffffffffffff88166000908152600460205260408082209051600692919061160b908b908b9061281c565b908152604080516020928190038301902054835290820192909252016000206003015460ff16156118a25773ffffffffffffffffffffffffffffffffffffffff8816600090815260046020526040808220905161189b926006929091611674908c908c9061281c565b908152602001604051809103902054815260200190815260200160002060405180610160016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805461170d90612595565b80601f016020809104026020016040519081016040528092919081815260200182805461173990612595565b80156117865780601f1061175b57610100808354040283529160200191611786565b820191906000526020600020905b81548152906001019060200180831161176957829003601f168201915b5050509183525050600382015460ff8082161515602084015261010080830482161515604085015262010000909204161515606083015260048301546080830152600583015460a0830152600683015460c0830152600783015473ffffffffffffffffffffffffffffffffffffffff1660e083015260088301805491909201919061181090612595565b80601f016020809104026020016040519081016040528092919081815260200182805461183c90612595565b80156118895780601f1061185e57610100808354040283529160200191611889565b820191906000526020600020905b81548152906001019060200180831161186c57829003601f168201915b50505050508152505086868686611bd4565b9050611bc9565b73ffffffffffffffffffffffffffffffffffffffff8816600090815260046020908152604080832081518083018352600181527f2a000000000000000000000000000000000000000000000000000000000000009381019390935290516006939261190c916125e8565b908152604080516020928190038301902054835290820192909252016000206003015460ff16156119c05761189b60066000600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405280600181526020017f2a0000000000000000000000000000000000000000000000000000000000000081525060405161167491906125e8565b73ffffffffffffffffffffffffffffffffffffffff8816600090815260036020526040902054156119fc5750600054610100900460ff16611bc9565b600160009081526004602052604051600691907fabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe0590611a3e908b908b9061281c565b908152604080516020928190038301902054835290820192909252016000206003015460ff1615611aae5760016000908152600460205260405161189b916006917fabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe0590611674908c908c9061281c565b60016000818152600460209081526040805180820182529384527f2a0000000000000000000000000000000000000000000000000000000000000091840191909152516006927fabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe0591611b2091906125e8565b908152604080516020928190038301902054835290820192909252016000206003015460ff1615611bc15760016000818152600460209081526040805180820182529384527f2a00000000000000000000000000000000000000000000000000000000000000918401919091525161189b92600692917fabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe0591611674916125e8565b5060005460ff165b979650505050505050565b6000856080015115611be8575060006105dd565b8560a0015115611bfa575060016105dd565b60008660c00151118015611c115750428660c00151105b15611c1e575060006105dd565b60008660e00151118015611c355750428660e00151115b15611c42575060006105dd565b6001856003811115611c5657611c5661286e565b148015611c67575061010086015115155b8015611c7857508386610100015114155b15611c85575060006105dd565b6002856003811115611c9957611c9961286e565b148015611cc0575061012086015173ffffffffffffffffffffffffffffffffffffffff1615155b8015611cfd57508273ffffffffffffffffffffffffffffffffffffffff1686610120015173ffffffffffffffffffffffffffffffffffffffff1614155b15611d0a575060006105dd565b6003856003811115611d1e57611d1e61286e565b148015611d645750604080516000815260208101808352815190206101408901519092611d4b92016125e8565b6040516020818303038152906040528051906020012014155b8015611dc1575081604051602001611d7c91906125e8565b60405160208183030381529060405280519060200120866101400151604051602001611da891906125e8565b6040516020818303038152906040528051906020012014155b15611dce575060006105dd565b50600195945050505050565b600060208284031215611dec57600080fd5b5035919050565b60005b83811015611e0e578181015183820152602001611df6565b50506000910152565b60008151808452611e2f816020860160208601611df3565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60006101608d835273ffffffffffffffffffffffffffffffffffffffff808e166020850152816040850152611e988285018e611e17565b91508b151560608501528a1515608085015289151560a08501528860c08501528760e08501528661010085015280861661012085015250828103610140840152611ee28185611e17565b9e9d5050505050505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610140810167ffffffffffffffff81118282101715611f4757611f47611ef4565b60405290565b600082601f830112611f5e57600080fd5b813567ffffffffffffffff80821115611f7957611f79611ef4565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715611fbf57611fbf611ef4565b81604052838152866020858801011115611fd857600080fd5b836020870160208301376000602085830101528094505050505092915050565b60006020828403121561200a57600080fd5b813567ffffffffffffffff81111561202157600080fd5b6107d784828501611f4d565b803573ffffffffffffffffffffffffffffffffffffffff8116811461205157600080fd5b919050565b60008083601f84011261206857600080fd5b50813567ffffffffffffffff81111561208057600080fd5b60208301915083602082850101111561209857600080fd5b9250929050565b600080600080606085870312156120b557600080fd5b6120be8561202d565b9350602085013567ffffffffffffffff8111156120da57600080fd5b6120e687828801612056565b9598909750949560400135949350505050565b8035801515811461205157600080fd5b60006020828403121561211b57600080fd5b612124826120f9565b9392505050565b60008060006040848603121561214057600080fd5b6121498461202d565b9250602084013567ffffffffffffffff81111561216557600080fd5b61217186828701612056565b9497909650939450505050565b60006020828403121561219057600080fd5b813567ffffffffffffffff808211156121a857600080fd5b9083019061014082860312156121bd57600080fd5b6121c5611f23565b6121ce8361202d565b81526020830135828111156121e257600080fd5b6121ee87828601611f4d565b602083015250612200604084016120f9565b6040820152606083013560608201526080830135608082015261222560a084016120f9565b60a082015261223660c084016120f9565b60c082015260e083013560e082015261010061225381850161202d565b90820152610120838101358381111561226b57600080fd5b61227788828701611f4d565b918301919091525095945050505050565b6000806000806000606086880312156122a057600080fd5b6122a98661202d565b9450602086013567ffffffffffffffff808211156122c657600080fd5b6122d289838a01612056565b909650945060408801359150808211156122eb57600080fd5b506122f888828901612056565b969995985093965092949392505050565b60006020828403121561231b57600080fd5b6121248261202d565b6000806000806060858703121561233a57600080fd5b6123438561202d565b9350602085013567ffffffffffffffff81111561235f57600080fd5b61236b87828801612056565b909450925061237e90506040860161202d565b905092959194509250565b6000806040838503121561239c57600080fd5b6123a58361202d565b9150602083013567ffffffffffffffff8111156123c157600080fd5b6123cd85828601611f4d565b9150509250929050565b6020815260006121246020830184611e17565b600080602083850312156123fd57600080fd5b823567ffffffffffffffff81111561241457600080fd5b61242085828601612056565b90969095509350505050565b6000806040838503121561243f57600080fd5b50508035926020909101359150565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b83811015612587577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0898403018552815161016081518552888201516124d28a87018273ffffffffffffffffffffffffffffffffffffffff169052565b508782015181898701526124e882870182611e17565b9150506060808301516124fe8288018215159052565b505060808281015115159086015260a08083015115159086015260c0808301519086015260e0808301519086015261010080830151908601526101208083015173ffffffffffffffffffffffffffffffffffffffff169086015261014091820151858203928601929092526125738183611e17565b968901969450505090860190600101612475565b509098975050505050505050565b600181811c908216806125a957607f821691505b6020821081036125e2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b600082516125fa818460208701611df3565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610fe757610fe7612604565b601f82111561269057600081815260208120601f850160051c8101602086101561266d5750805b601f850160051c820191505b8181101561268c57828155600101612679565b5050505b505050565b815167ffffffffffffffff8111156126af576126af611ef4565b6126c3816126bd8454612595565b84612646565b602080601f83116001811461271657600084156126e05750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b17855561268c565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561276357888601518255948401946001909101908401612744565b508582101561279f57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036127e0576127e0612604565b5060010190565b6000816127f6576127f6612604565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b8183823760009101908152919050565b80820180821115610fe757610fe7612604565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea164736f6c6343000813000a";
618
+ "0x608060405260016005553480156200001657600080fd5b506000805461ffff19166101011790556040516430b236b4b760d91b81526001908190819081906005019081526040805160209281900383018120805460ff1916941515949094179093556101408301815233835280518082018252600581526430b236b4b760d91b81840152828401526001838201526000606084018190526080840181905260a0840181905260c0840181905260e08401819052610100840181905281519283019091528152610120820152620000d59062000196565b506040805180820182526001808252601560f91b602083015291518291620000fd9162000592565b9081526040805160209281900383018120805460ff19169415159490941790935561014083018152600180845281518083018352818152601560f91b8185015283850152838201526000606084018190526080840181905260a0840181905260c0840181905260e084018190526101008401819052815192830190915281526101208201526200018d9062000196565b50505062000780565b80516001600160a01b03166000908152600460209081526040808320918401519051620001c4919062000592565b908152602001604051809103902054600003620003ff5760055482516001600160a01b031660009081526004602090815260409182902090850151915190916200020e9162000592565b908152602001604051809103902081905550604051806101600160405280600554815260200183600001516001600160a01b03168152602001836020015181526020018360400151151581526020018360a00151151581526020018360c001511515815260200183606001518152602001836080015181526020018360e0015181526020018361010001516001600160a01b031681526020018361012001518152506006600060055481526020019081526020016000206000820151816000015560208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550604082015181600201908162000313919062000668565b506060820151600382018054608085015160a086015161ffff1990921693151561ff0019169390931761010093151584021762ff00001916620100009115159190910217905560c0830151600483015560e0830151600583015582015160068201556101208201516007820180546001600160a01b0319166001600160a01b039092169190911790556101408201516008820190620003b3908262000668565b50905050600560008154620003c8906200074a565b9091555081516001600160a01b031660009081526003602052604081208054909190620003f5906200074a565b909155506200058a565b81516001600160a01b031660009081526004602090815260408083209185015190516006928492909162000434919062000592565b90815260200160405180910390205481526020019081526020016000209050826040015180156200046a5750600381015460ff16155b156200049e5782516001600160a01b03166000908152600360205260408120805490919062000499906200074a565b909155505b8260400151158015620004b55750600381015460ff165b15620004e95782516001600160a01b031660009081526003602052604081208054909190620004e49062000766565b909155505b6040830151600382018054606086015160048501556080860151600585015560a086015160c087015161ffff1990921693151561ff0019169390931761010093151584021762ff00001916620100009115159190910217905560e084015160068301558301516007820180546001600160a01b0319166001600160a01b03909216919091179055610120830151600882019062000587908262000668565b50505b506001919050565b6000825160005b81811015620005b5576020818601810151858301520162000599565b506000920191825250919050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620005ee57607f821691505b6020821081036200060f57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200066357600081815260208120601f850160051c810160208610156200063e5750805b601f850160051c820191505b818110156200065f578281556001016200064a565b5050505b505050565b81516001600160401b03811115620006845762000684620005c3565b6200069c81620006958454620005d9565b8462000615565b602080601f831160018114620006d45760008415620006bb5750858301515b600019600386901b1c1916600185901b1785556200065f565b600085815260208120601f198616915b828110156200070557888601518255948401946001909101908401620006e4565b5085821015620007245787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b6000600182016200075f576200075f62000734565b5060010190565b60008162000778576200077862000734565b506000190190565b6128aa80620007906000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c8063a7804d65116100d8578063f28b9f341161008c578063fa1b3cac11610066578063fa1b3cac146103be578063fac66f01146103eb578063fb83bb731461040b57600080fd5b8063f28b9f341461036b578063f55893641461037d578063f9529ee2146103ab57600080fd5b8063c6064b28116100bd578063c6064b28146102d3578063c8d757fd146102e6578063efdcec9c1461032257600080fd5b8063a7804d65146102a0578063ade0bee4146102c057600080fd5b8063661957011161013a5780639359c287116101145780639359c2871461026d578063a5fcf16214610280578063a74d34391461028d57600080fd5b80636619570114610231578063699d7c331461024757806382dab96e1461025a57600080fd5b8063372db0891161016b578063372db089146101f8578063476a95ad1461020b57806365c581521461021e57600080fd5b806326c500071461018757806334906a4a146101ba575b600080fd5b61019a610195366004611dda565b61041e565b6040516101b19b9a99989796959493929190611e61565b60405180910390f35b6101e86101c8366004611ff8565b805160208183018101805160018252928201919093012091525460ff1681565b60405190151581526020016101b1565b6101e861020636600461209f565b6105bb565b6101e8610219366004612109565b6105e6565b6101e861022c366004611ff8565b610695565b61023961079f565b6040519081526020016101b1565b6101e861025536600461212b565b6107b5565b6101e861026836600461217e565b6107df565b6101e861027b366004611ff8565b610d39565b6000546101e89060ff1681565b6101e861029b366004612288565b610dd6565b6102396102ae366004612309565b60036020526000908152604090205481565b6101e86102ce366004612109565b610e29565b6101e86102e1366004612324565b610ee2565b6102396102f4366004612389565b6004602090815260009283526040909220815180830184018051928152908401929093019190912091525481565b61035e6040518060400160405280600181526020017f2a0000000000000000000000000000000000000000000000000000000000000081525081565b6040516101b191906123d7565b6000546101e890610100900460ff1681565b6101e861038b366004611ff8565b805160208183018101805160028252928201919093012091525460ff1681565b6101e86103b93660046123ea565b610f04565b6103c6600181565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b1565b6103fe6103f936600461242c565b610fed565b6040516101b1919061244e565b6101e86104193660046123ea565b61146d565b600660205260009081526040902080546001820154600283018054929373ffffffffffffffffffffffffffffffffffffffff9092169261045d90612595565b80601f016020809104026020016040519081016040528092919081815260200182805461048990612595565b80156104d65780601f106104ab576101008083540402835291602001916104d6565b820191906000526020600020905b8154815290600101906020018083116104b957829003601f168201915b5050505060038301546004840154600585015460068601546007870154600888018054979860ff8088169961010089048216995062010000909804169673ffffffffffffffffffffffffffffffffffffffff9093169290919061053890612595565b80601f016020809104026020016040519081016040528092919081815260200182805461056490612595565b80156105b15780601f10610586576101008083540402835291602001916105b1565b820191906000526020600020905b81548152906001019060200180831161059457829003601f168201915b505050505090508b565b60006105dd85858560018660006040518060200160405280600081525061150e565b95945050505050565b6000805482151560ff909116151503610660576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4450463a20494e56414c49445f5045524d495353494f4e5f4348414e4745000060448201526064015b60405180910390fd5b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600190565b60006002826040516106a791906125e8565b9081526040519081900360200190205460ff1615610747576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4450463a204f5045524154494f4e5f414c52454144595f52455354524943544560448201527f44000000000000000000000000000000000000000000000000000000000000006064820152608401610657565b600160028360405161075991906125e8565b90815260405190819003602001902080549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909216919091179055506001919050565b600060016005546107b09190612633565b905090565b60006107d784848460008060006040518060200160405280600081525061150e565b949350505050565b805173ffffffffffffffffffffffffffffffffffffffff16600090815260046020908152604080832091840151905161081891906125e8565b908152602001604051809103902054600003610b1057600554825173ffffffffffffffffffffffffffffffffffffffff16600090815260046020908152604091829020908501519151909161086c916125e8565b9081526020016040518091039020819055506040518061016001604052806005548152602001836000015173ffffffffffffffffffffffffffffffffffffffff168152602001836020015181526020018360400151151581526020018360a00151151581526020018360c001511515815260200183606001518152602001836080015181526020018360e00151815260200183610100015173ffffffffffffffffffffffffffffffffffffffff1681526020018361012001518152506006600060055481526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020190816109a39190612695565b506060820151600382018054608085015160a08601517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00009092169315157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16939093176101009315158402177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff16620100009115159190910217905560c0830151600483015560e0830151600583015582015160068201556101208201516007820180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790556101408201516008820190610abc9082612695565b50905050600560008154610acf906127af565b90915550815173ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604081208054909190610b07906127af565b90915550610d31565b815173ffffffffffffffffffffffffffffffffffffffff16600090815260046020908152604080832091850151905160069284929091610b5091906125e8565b9081526020016040518091039020548152602001908152602001600020905082604001518015610b855750600381015460ff16155b15610bc357825173ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604081208054909190610bbe906127af565b909155505b8260400151158015610bd95750600381015460ff165b15610c1757825173ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604081208054909190610c12906127e7565b909155505b6040830151600382018054606086015160048501556080860151600585015560a086015160c08701517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00009092169315157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16939093176101009315158402177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff16620100009115159190910217905560e084015160068301558301516007820180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790556101208301516008820190610d2e9082612695565b50505b506001919050565b6000600182604051610d4b91906125e8565b9081526040519081900360200190205460ff1615610dc5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4450463a204f5045524154494f4e5f414c52454144595f414c4c4f57454400006044820152606401610657565b6001808360405161075991906125e8565b6000610e1f868686600360008089898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061150e92505050565b9695505050505050565b6000811515600060019054906101000a900460ff16151503610ea7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4450463a20494e56414c49445f5045524d495353494f4e5f4348414e474500006044820152606401610657565b5060008054911515610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909216919091179055600190565b60006105dd85858560026000876040518060200160405280600081525061150e565b600060018383604051610f1892919061281c565b9081526040519081900360200190205460ff16610f91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4450463a204f5045524154494f4e5f4e4f545f414c4c4f5745440000000000006044820152606401610657565b600060018484604051610fa592919061281c565b90815260405190819003602001902080549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009092169190911790555060015b92915050565b606060008311611059576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4450463a2053544152545f4944585f5a45524f000000000000000000000000006044820152606401610657565b600082116110c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4450463a204348554e4b5f53495a455f5a45524f0000000000000000000000006044820152606401610657565b600554831061115557604080516000808252602082019092529061114d565b604080516101608101825260008082526020820181905260609282018390528282018190526080820181905260a0820181905260c0820181905260e0820181905261010082018190526101208201526101408101919091528152602001906001900390816110e25790505b509050610fe7565b600060016005546111669190612633565b6001611172858761282c565b61117c9190612633565b111561119557836005546111909190612633565b611197565b825b905060008167ffffffffffffffff8111156111b4576111b4611ef4565b60405190808252806020026020018201604052801561123d57816020015b604080516101608101825260008082526020820181905260609282018390528282018190526080820181905260a0820181905260c0820181905260e0820181905261010082018190526101208201526101408101919091528152602001906001900390816111d25790505b50905060005b828110156114645760066000611259838961282c565b8152602080820192909252604090810160002081516101608101835281548152600182015473ffffffffffffffffffffffffffffffffffffffff169381019390935260028101805491928401916112af90612595565b80601f01602080910402602001604051908101604052809291908181526020018280546112db90612595565b80156113285780601f106112fd57610100808354040283529160200191611328565b820191906000526020600020905b81548152906001019060200180831161130b57829003601f168201915b5050509183525050600382015460ff8082161515602084015261010080830482161515604085015262010000909204161515606083015260048301546080830152600583015460a0830152600683015460c0830152600783015473ffffffffffffffffffffffffffffffffffffffff1660e08301526008830180549190920191906113b290612595565b80601f01602080910402602001604051908101604052809291908181526020018280546113de90612595565b801561142b5780601f106114005761010080835404028352916020019161142b565b820191906000526020600020905b81548152906001019060200180831161140e57829003601f168201915b5050505050815250508282815181106114465761144661283f565b6020026020010181905250808061145c906127af565b915050611243565b50949350505050565b60006002838360405161148192919061281c565b9081526040519081900360200190205460ff166114fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4450463a204f5045524154494f4e5f4e4f545f524553545249435445440000006044820152606401610657565b600060028484604051610fa592919061281c565b60006002878760405161152292919061281c565b9081526040519081900360200190205460ff161561154257506000611bc9565b60408051808201825260018082527f2a000000000000000000000000000000000000000000000000000000000000006020830152915161158291906125e8565b9081526040519081900360200190205460ff161580156115c45750600187876040516115af92919061281c565b9081526040519081900360200190205460ff16155b156115d157506000611bc9565b73ffffffffffffffffffffffffffffffffffffffff88166000908152600460205260408082209051600692919061160b908b908b9061281c565b908152604080516020928190038301902054835290820192909252016000206003015460ff16156118a25773ffffffffffffffffffffffffffffffffffffffff8816600090815260046020526040808220905161189b926006929091611674908c908c9061281c565b908152602001604051809103902054815260200190815260200160002060405180610160016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805461170d90612595565b80601f016020809104026020016040519081016040528092919081815260200182805461173990612595565b80156117865780601f1061175b57610100808354040283529160200191611786565b820191906000526020600020905b81548152906001019060200180831161176957829003601f168201915b5050509183525050600382015460ff8082161515602084015261010080830482161515604085015262010000909204161515606083015260048301546080830152600583015460a0830152600683015460c0830152600783015473ffffffffffffffffffffffffffffffffffffffff1660e083015260088301805491909201919061181090612595565b80601f016020809104026020016040519081016040528092919081815260200182805461183c90612595565b80156118895780601f1061185e57610100808354040283529160200191611889565b820191906000526020600020905b81548152906001019060200180831161186c57829003601f168201915b50505050508152505086868686611bd4565b9050611bc9565b73ffffffffffffffffffffffffffffffffffffffff8816600090815260046020908152604080832081518083018352600181527f2a000000000000000000000000000000000000000000000000000000000000009381019390935290516006939261190c916125e8565b908152604080516020928190038301902054835290820192909252016000206003015460ff16156119c05761189b60066000600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405280600181526020017f2a0000000000000000000000000000000000000000000000000000000000000081525060405161167491906125e8565b73ffffffffffffffffffffffffffffffffffffffff8816600090815260036020526040902054156119fc5750600054610100900460ff16611bc9565b600160009081526004602052604051600691907fabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe0590611a3e908b908b9061281c565b908152604080516020928190038301902054835290820192909252016000206003015460ff1615611aae5760016000908152600460205260405161189b916006917fabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe0590611674908c908c9061281c565b60016000818152600460209081526040805180820182529384527f2a0000000000000000000000000000000000000000000000000000000000000091840191909152516006927fabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe0591611b2091906125e8565b908152604080516020928190038301902054835290820192909252016000206003015460ff1615611bc15760016000818152600460209081526040805180820182529384527f2a00000000000000000000000000000000000000000000000000000000000000918401919091525161189b92600692917fabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe0591611674916125e8565b5060005460ff165b979650505050505050565b6000856080015115611be8575060006105dd565b8560a0015115611bfa575060016105dd565b60008660c00151118015611c115750428660c00151105b15611c1e575060006105dd565b60008660e00151118015611c355750428660e00151115b15611c42575060006105dd565b6001856003811115611c5657611c5661286e565b148015611c67575061010086015115155b8015611c7857508386610100015114155b15611c85575060006105dd565b6002856003811115611c9957611c9961286e565b148015611cc0575061012086015173ffffffffffffffffffffffffffffffffffffffff1615155b8015611cfd57508273ffffffffffffffffffffffffffffffffffffffff1686610120015173ffffffffffffffffffffffffffffffffffffffff1614155b15611d0a575060006105dd565b6003856003811115611d1e57611d1e61286e565b148015611d645750604080516000815260208101808352815190206101408901519092611d4b92016125e8565b6040516020818303038152906040528051906020012014155b8015611dc1575081604051602001611d7c91906125e8565b60405160208183030381529060405280519060200120866101400151604051602001611da891906125e8565b6040516020818303038152906040528051906020012014155b15611dce575060006105dd565b50600195945050505050565b600060208284031215611dec57600080fd5b5035919050565b60005b83811015611e0e578181015183820152602001611df6565b50506000910152565b60008151808452611e2f816020860160208601611df3565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60006101608d835273ffffffffffffffffffffffffffffffffffffffff808e166020850152816040850152611e988285018e611e17565b91508b151560608501528a1515608085015289151560a08501528860c08501528760e08501528661010085015280861661012085015250828103610140840152611ee28185611e17565b9e9d5050505050505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610140810167ffffffffffffffff81118282101715611f4757611f47611ef4565b60405290565b600082601f830112611f5e57600080fd5b813567ffffffffffffffff80821115611f7957611f79611ef4565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715611fbf57611fbf611ef4565b81604052838152866020858801011115611fd857600080fd5b836020870160208301376000602085830101528094505050505092915050565b60006020828403121561200a57600080fd5b813567ffffffffffffffff81111561202157600080fd5b6107d784828501611f4d565b803573ffffffffffffffffffffffffffffffffffffffff8116811461205157600080fd5b919050565b60008083601f84011261206857600080fd5b50813567ffffffffffffffff81111561208057600080fd5b60208301915083602082850101111561209857600080fd5b9250929050565b600080600080606085870312156120b557600080fd5b6120be8561202d565b9350602085013567ffffffffffffffff8111156120da57600080fd5b6120e687828801612056565b9598909750949560400135949350505050565b8035801515811461205157600080fd5b60006020828403121561211b57600080fd5b612124826120f9565b9392505050565b60008060006040848603121561214057600080fd5b6121498461202d565b9250602084013567ffffffffffffffff81111561216557600080fd5b61217186828701612056565b9497909650939450505050565b60006020828403121561219057600080fd5b813567ffffffffffffffff808211156121a857600080fd5b9083019061014082860312156121bd57600080fd5b6121c5611f23565b6121ce8361202d565b81526020830135828111156121e257600080fd5b6121ee87828601611f4d565b602083015250612200604084016120f9565b6040820152606083013560608201526080830135608082015261222560a084016120f9565b60a082015261223660c084016120f9565b60c082015260e083013560e082015261010061225381850161202d565b90820152610120838101358381111561226b57600080fd5b61227788828701611f4d565b918301919091525095945050505050565b6000806000806000606086880312156122a057600080fd5b6122a98661202d565b9450602086013567ffffffffffffffff808211156122c657600080fd5b6122d289838a01612056565b909650945060408801359150808211156122eb57600080fd5b506122f888828901612056565b969995985093965092949392505050565b60006020828403121561231b57600080fd5b6121248261202d565b6000806000806060858703121561233a57600080fd5b6123438561202d565b9350602085013567ffffffffffffffff81111561235f57600080fd5b61236b87828801612056565b909450925061237e90506040860161202d565b905092959194509250565b6000806040838503121561239c57600080fd5b6123a58361202d565b9150602083013567ffffffffffffffff8111156123c157600080fd5b6123cd85828601611f4d565b9150509250929050565b6020815260006121246020830184611e17565b600080602083850312156123fd57600080fd5b823567ffffffffffffffff81111561241457600080fd5b61242085828601612056565b90969095509350505050565b6000806040838503121561243f57600080fd5b50508035926020909101359150565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b83811015612587577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0898403018552815161016081518552888201516124d28a87018273ffffffffffffffffffffffffffffffffffffffff169052565b508782015181898701526124e882870182611e17565b9150506060808301516124fe8288018215159052565b505060808281015115159086015260a08083015115159086015260c0808301519086015260e0808301519086015261010080830151908601526101208083015173ffffffffffffffffffffffffffffffffffffffff169086015261014091820151858203928601929092526125738183611e17565b968901969450505090860190600101612475565b509098975050505050505050565b600181811c908216806125a957607f821691505b6020821081036125e2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b600082516125fa818460208701611df3565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610fe757610fe7612604565b601f82111561269057600081815260208120601f850160051c8101602086101561266d5750805b601f850160051c820191505b8181101561268c57828155600101612679565b5050505b505050565b815167ffffffffffffffff8111156126af576126af611ef4565b6126c3816126bd8454612595565b84612646565b602080601f83116001811461271657600084156126e05750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b17855561268c565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561276357888601518255948401946001909101908401612744565b508582101561279f57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036127e0576127e0612604565b5060010190565b6000816127f6576127f6612604565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b8183823760009101908152919050565b80820180821115610fe757610fe7612604565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea164736f6c6343000814000a";
619
619
 
620
620
  type DataPrivacyFrameworkMockConstructorParams =
621
621
  | [signer?: Signer]