@coti-io/coti-contracts 1.0.8 → 1.1.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 (36) hide show
  1. package/contracts/mocks/utils/mpc/Arithmetic128BitTestsContract.sol +260 -0
  2. package/contracts/mocks/utils/mpc/Arithmetic256BitTestsContract.sol +264 -0
  3. package/contracts/mocks/utils/mpc/Bitwise128BitTestsContract.sol +91 -0
  4. package/contracts/mocks/utils/mpc/Bitwise256BitTestsContract.sol +91 -0
  5. package/contracts/mocks/utils/mpc/Comparison128BitTestsContract.sol +158 -0
  6. package/contracts/mocks/utils/mpc/Comparison256BitTestsContract.sol +158 -0
  7. package/contracts/mocks/utils/mpc/Miscellaneous128BitTestsContract.sol +185 -0
  8. package/contracts/mocks/utils/mpc/Miscellaneous256BitTestsContract.sol +190 -0
  9. package/contracts/utils/mpc/MpcCore.sol +2804 -180
  10. package/hardhat.config.ts +6 -2
  11. package/package.json +2 -2
  12. package/test/token/PrivateERC20/PrivateERC20.test.ts +3 -3
  13. package/test/utils/mpc/Unsigned128BitIntegers.test.ts +945 -0
  14. package/test/utils/mpc/Unsigned256BitIntegers.test.ts +1124 -0
  15. package/test/utils/mpc/helpers.ts +77 -0
  16. package/typechain-types/contracts/mocks/utils/mpc/Arithmetic128BitTestsContract.ts +341 -0
  17. package/typechain-types/contracts/mocks/utils/mpc/Arithmetic256BitTestsContract.ts +347 -0
  18. package/typechain-types/contracts/mocks/utils/mpc/Bitwise128BitTestsContract.ts +186 -0
  19. package/typechain-types/contracts/mocks/utils/mpc/Bitwise256BitTestsContract.ts +186 -0
  20. package/typechain-types/contracts/mocks/utils/mpc/Comparison128BitTestsContract.ts +260 -0
  21. package/typechain-types/contracts/mocks/utils/mpc/Comparison256BitTestsContract.ts +260 -0
  22. package/typechain-types/contracts/mocks/utils/mpc/Miscellaneous128BitTestsContract.ts +302 -0
  23. package/typechain-types/contracts/mocks/utils/mpc/Miscellaneous256BitTestsContract.ts +322 -0
  24. package/typechain-types/contracts/mocks/utils/mpc/index.ts +8 -0
  25. package/typechain-types/factories/contracts/mocks/utils/mpc/Arithmetic128BitTestsContract__factory.ts +349 -0
  26. package/typechain-types/factories/contracts/mocks/utils/mpc/Arithmetic256BitTestsContract__factory.ts +364 -0
  27. package/typechain-types/factories/contracts/mocks/utils/mpc/Bitwise128BitTestsContract__factory.ts +182 -0
  28. package/typechain-types/factories/contracts/mocks/utils/mpc/Bitwise256BitTestsContract__factory.ts +182 -0
  29. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison128BitTestsContract__factory.ts +255 -0
  30. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison256BitTestsContract__factory.ts +255 -0
  31. package/typechain-types/factories/contracts/mocks/utils/mpc/Miscellaneous128BitTestsContract__factory.ts +332 -0
  32. package/typechain-types/factories/contracts/mocks/utils/mpc/Miscellaneous256BitTestsContract__factory.ts +380 -0
  33. package/typechain-types/factories/contracts/mocks/utils/mpc/index.ts +8 -0
  34. package/typechain-types/hardhat.d.ts +144 -0
  35. package/typechain-types/index.ts +16 -0
  36. package/contracts/package.json +0 -11
@@ -0,0 +1,364 @@
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 { Signer, ContractDeployTransaction, ContractRunner } from "ethers";
11
+ import type { NonPayableOverrides } from "../../../../../common";
12
+ import type {
13
+ Arithmetic256BitTestsContract,
14
+ Arithmetic256BitTestsContractInterface,
15
+ } from "../../../../../contracts/mocks/utils/mpc/Arithmetic256BitTestsContract";
16
+
17
+ const _abi = [
18
+ {
19
+ inputs: [
20
+ {
21
+ internalType: "uint256[]",
22
+ name: "a",
23
+ type: "uint256[]",
24
+ },
25
+ {
26
+ internalType: "uint256[]",
27
+ name: "b",
28
+ type: "uint256[]",
29
+ },
30
+ ],
31
+ name: "addTest",
32
+ outputs: [],
33
+ stateMutability: "nonpayable",
34
+ type: "function",
35
+ },
36
+ {
37
+ inputs: [
38
+ {
39
+ internalType: "uint256",
40
+ name: "a",
41
+ type: "uint256",
42
+ },
43
+ {
44
+ internalType: "uint256",
45
+ name: "b",
46
+ type: "uint256",
47
+ },
48
+ ],
49
+ name: "checkedAddTest",
50
+ outputs: [],
51
+ stateMutability: "nonpayable",
52
+ type: "function",
53
+ },
54
+ {
55
+ inputs: [
56
+ {
57
+ internalType: "uint256[]",
58
+ name: "a",
59
+ type: "uint256[]",
60
+ },
61
+ {
62
+ internalType: "uint256[]",
63
+ name: "b",
64
+ type: "uint256[]",
65
+ },
66
+ ],
67
+ name: "checkedAddWithOverflowBitTest",
68
+ outputs: [],
69
+ stateMutability: "nonpayable",
70
+ type: "function",
71
+ },
72
+ {
73
+ inputs: [
74
+ {
75
+ internalType: "uint256",
76
+ name: "a",
77
+ type: "uint256",
78
+ },
79
+ {
80
+ internalType: "uint256",
81
+ name: "b",
82
+ type: "uint256",
83
+ },
84
+ {
85
+ internalType: "enum Arithmetic256BitTestsContract.PrivateInput",
86
+ name: "privateInput",
87
+ type: "uint8",
88
+ },
89
+ ],
90
+ name: "checkedMulTest",
91
+ outputs: [],
92
+ stateMutability: "nonpayable",
93
+ type: "function",
94
+ },
95
+ {
96
+ inputs: [
97
+ {
98
+ internalType: "uint256[]",
99
+ name: "a",
100
+ type: "uint256[]",
101
+ },
102
+ {
103
+ internalType: "uint256[]",
104
+ name: "b",
105
+ type: "uint256[]",
106
+ },
107
+ {
108
+ internalType: "enum Arithmetic256BitTestsContract.PrivateInput",
109
+ name: "privateInput",
110
+ type: "uint8",
111
+ },
112
+ ],
113
+ name: "checkedMulWithOverflowBitTest",
114
+ outputs: [],
115
+ stateMutability: "nonpayable",
116
+ type: "function",
117
+ },
118
+ {
119
+ inputs: [
120
+ {
121
+ internalType: "uint256",
122
+ name: "a",
123
+ type: "uint256",
124
+ },
125
+ {
126
+ internalType: "uint256",
127
+ name: "b",
128
+ type: "uint256",
129
+ },
130
+ ],
131
+ name: "checkedSubTest",
132
+ outputs: [],
133
+ stateMutability: "nonpayable",
134
+ type: "function",
135
+ },
136
+ {
137
+ inputs: [
138
+ {
139
+ internalType: "uint256[]",
140
+ name: "a",
141
+ type: "uint256[]",
142
+ },
143
+ {
144
+ internalType: "uint256[]",
145
+ name: "b",
146
+ type: "uint256[]",
147
+ },
148
+ ],
149
+ name: "checkedSubWithOverflowBitTest",
150
+ outputs: [],
151
+ stateMutability: "nonpayable",
152
+ type: "function",
153
+ },
154
+ {
155
+ inputs: [
156
+ {
157
+ internalType: "uint256[]",
158
+ name: "a",
159
+ type: "uint256[]",
160
+ },
161
+ {
162
+ internalType: "uint256[]",
163
+ name: "b",
164
+ type: "uint256[]",
165
+ },
166
+ {
167
+ internalType: "enum Arithmetic256BitTestsContract.PrivateInput",
168
+ name: "privateInput",
169
+ type: "uint8",
170
+ },
171
+ ],
172
+ name: "mulTest",
173
+ outputs: [],
174
+ stateMutability: "nonpayable",
175
+ type: "function",
176
+ },
177
+ {
178
+ inputs: [
179
+ {
180
+ internalType: "uint256",
181
+ name: "",
182
+ type: "uint256",
183
+ },
184
+ ],
185
+ name: "numbers2",
186
+ outputs: [
187
+ {
188
+ internalType: "uint256",
189
+ name: "",
190
+ type: "uint256",
191
+ },
192
+ ],
193
+ stateMutability: "view",
194
+ type: "function",
195
+ },
196
+ {
197
+ inputs: [
198
+ {
199
+ internalType: "uint256",
200
+ name: "",
201
+ type: "uint256",
202
+ },
203
+ ],
204
+ name: "numbersLHS2",
205
+ outputs: [
206
+ {
207
+ internalType: "uint256",
208
+ name: "",
209
+ type: "uint256",
210
+ },
211
+ ],
212
+ stateMutability: "view",
213
+ type: "function",
214
+ },
215
+ {
216
+ inputs: [
217
+ {
218
+ internalType: "uint256",
219
+ name: "",
220
+ type: "uint256",
221
+ },
222
+ ],
223
+ name: "numbersRHS2",
224
+ outputs: [
225
+ {
226
+ internalType: "uint256",
227
+ name: "",
228
+ type: "uint256",
229
+ },
230
+ ],
231
+ stateMutability: "view",
232
+ type: "function",
233
+ },
234
+ {
235
+ inputs: [
236
+ {
237
+ internalType: "uint256",
238
+ name: "",
239
+ type: "uint256",
240
+ },
241
+ ],
242
+ name: "overflows",
243
+ outputs: [
244
+ {
245
+ internalType: "bool",
246
+ name: "",
247
+ type: "bool",
248
+ },
249
+ ],
250
+ stateMutability: "view",
251
+ type: "function",
252
+ },
253
+ {
254
+ inputs: [
255
+ {
256
+ internalType: "uint256",
257
+ name: "",
258
+ type: "uint256",
259
+ },
260
+ ],
261
+ name: "overflowsLHS",
262
+ outputs: [
263
+ {
264
+ internalType: "bool",
265
+ name: "",
266
+ type: "bool",
267
+ },
268
+ ],
269
+ stateMutability: "view",
270
+ type: "function",
271
+ },
272
+ {
273
+ inputs: [
274
+ {
275
+ internalType: "uint256",
276
+ name: "",
277
+ type: "uint256",
278
+ },
279
+ ],
280
+ name: "overflowsRHS",
281
+ outputs: [
282
+ {
283
+ internalType: "bool",
284
+ name: "",
285
+ type: "bool",
286
+ },
287
+ ],
288
+ stateMutability: "view",
289
+ type: "function",
290
+ },
291
+ {
292
+ inputs: [
293
+ {
294
+ internalType: "uint256[]",
295
+ name: "a",
296
+ type: "uint256[]",
297
+ },
298
+ {
299
+ internalType: "uint256[]",
300
+ name: "b",
301
+ type: "uint256[]",
302
+ },
303
+ ],
304
+ name: "subTest",
305
+ outputs: [],
306
+ stateMutability: "nonpayable",
307
+ type: "function",
308
+ },
309
+ ] as const;
310
+
311
+ const _bytecode =
312
+ "0x608060405234801561001057600080fd5b50614797806100206000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806383ee8b0811610097578063c7b20e1211610066578063c7b20e12146101f0578063cadc466414610203578063d9bf2dff14610216578063e7bd89a81461022957600080fd5b806383ee8b08146101a4578063859cc7d6146101b7578063ab2eae7e146101ca578063b24a0743146101dd57600080fd5b80633d35258b116100d35780633d35258b1461014857806346125d481461016b57806350cdee371461017e5780635a5a1a771461019157600080fd5b806320016fbc146100fa57806322f876121461010f57806333e9b8b314610122575b600080fd5b61010d61010836600461448a565b61023c565b005b61010d61011d3660046144f1565b61030a565b61013561013036600461455d565b6105d8565b6040519081526020015b60405180910390f35b61015b61015636600461455d565b6105f9565b604051901515815260200161013f565b61010d61017936600461458a565b61062d565b61010d61018c3660046144f1565b6107dd565b61010d61019f36600461458a565b610a8d565b61010d6101b236600461460b565b610c82565b6101356101c536600461455d565b610d65565b61015b6101d836600461455d565b610d75565b61010d6101eb36600461448a565b610d85565b61015b6101fe36600461455d565b610e1c565b61010d6102113660046144f1565b610e2c565b61013561022436600461455d565b610fba565b61010d6102373660046144f1565b610fca565b6102466001611158565b6000610251836111b7565b9050600061025e836111b7565b905061027261026d83836111ef565b611277565b600360008154811061028657610286614640565b60009182526020909120015561029f61026d85836112ce565b60036000815481106102b3576102b3614640565b9060005260206000200154146102cb576102cb61466f565b6102d861026d838561134d565b60036000815481106102ec576102ec614640565b9060005260206000200154146103045761030461466f565b50505050565b828114610378576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f496e707574206c656e677468206d69736d61746368000000000000000000000060448201526064015b60405180910390fd5b6103818361139c565b61038a8361140b565b6103938361147d565b61039c83611158565b6103a5836114f0565b6103ae8361154b565b60008060006103bb6143eb565b6103c36143eb565b6103cb6143eb565b60005b898110156105cb5760006103f98c8c848181106103ed576103ed614640565b905060200201356111b7565b905060006104128b8b858181106103ed576103ed614640565b905061041e82826115a6565b90995095506104458d8d8581811061043857610438614640565b9050602002013582611652565b909850945061046c828c8c8681811061046057610460614640565b905060200201356116f8565b909750935061047a89611759565b6000848154811061048d5761048d614640565b90600052602060002090602091828204019190066101000a81548160ff0219169083151502179055506104bf88611759565b600184815481106104d2576104d2614640565b90600052602060002090602091828204019190066101000a81548160ff02191690831515021790555061050487611759565b6002848154811061051757610517614640565b90600052602060002090602091828204019190066101000a81548160ff02191690831515021790555061054986611277565b6003848154811061055c5761055c614640565b60009182526020909120015561057185611277565b6004848154811061058457610584614640565b60009182526020909120015561059984611277565b600584815481106105ac576105ac614640565b600091825260209091200155506105c49050816146cd565b90506103ce565b5050505050505050505050565b600581815481106105e857600080fd5b600091825260209091200154905081565b6002818154811061060957600080fd5b9060005260206000209060209182820401919006915054906101000a900460ff1681565b838214610696576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f496e707574206c656e677468206d69736d617463680000000000000000000000604482015260640161036f565b61069f84611158565b60005b848110156107d55760006106c18787848181106103ed576103ed614640565b905060006106da8686858181106103ed576103ed614640565b905060008460028111156106f0576106f0614705565b036107265761070261026d83836117ea565b6003848154811061071557610715614640565b6000918252602090912001556107c2565b600184600281111561073a5761073a614705565b036107645761070261026d8388888781811061075857610758614640565b90506020020135611865565b600284600281111561077857610778614705565b036107c2576107a261026d89898681811061079557610795614640565b90506020020135836118dc565b600384815481106107b5576107b5614640565b6000918252602090912001555b5050806107ce906146cd565b90506106a2565b505050505050565b828114610846576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f496e707574206c656e677468206d69736d617463680000000000000000000000604482015260640161036f565b61084f8361139c565b6108588361140b565b6108618361147d565b61086a83611158565b610873836114f0565b61087c8361154b565b60008060006108896143eb565b6108916143eb565b6108996143eb565b60005b898110156105cb5760006108bb8c8c848181106103ed576103ed614640565b905060006108d48b8b858181106103ed576103ed614640565b90506108e08282611931565b90995095506109078d8d858181106108fa576108fa614640565b90506020020135826119a8565b909850945061092e828c8c8681811061092257610922614640565b90506020020135611a1d565b909750935061093c89611759565b6000848154811061094f5761094f614640565b90600052602060002090602091828204019190066101000a81548160ff02191690831515021790555061098188611759565b6001848154811061099457610994614640565b90600052602060002090602091828204019190066101000a81548160ff0219169083151502179055506109c687611759565b600284815481106109d9576109d9614640565b90600052602060002090602091828204019190066101000a81548160ff021916908315150217905550610a0b86611277565b60038481548110610a1e57610a1e614640565b600091825260209091200155610a3385611277565b60048481548110610a4657610a46614640565b600091825260209091200155610a5b84611277565b60058481548110610a6e57610a6e614640565b60009182526020909120015550610a869050816146cd565b905061089c565b838214610af6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f496e707574206c656e677468206d69736d617463680000000000000000000000604482015260640161036f565b610aff8461139c565b610b0884611158565b6000610b126143eb565b60005b86811015610c78576000610b348989848181106103ed576103ed614640565b90506000610b4d8888858181106103ed576103ed614640565b90506000866002811115610b6357610b63614705565b03610b7c57610b728282611a7f565b9095509350610bf8565b6001866002811115610b9057610b90614705565b03610bb757610b728a8a85818110610baa57610baa614640565b9050602002013582611b6f565b6002866002811115610bcb57610bcb614705565b03610bf857610bf282898986818110610be657610be6614640565b90506020020135611cd0565b90955093505b610c0185611759565b60008481548110610c1457610c14614640565b90600052602060002090602091828204019190066101000a81548160ff021916908315150217905550610c4684611277565b60038481548110610c5957610c59614640565b60009182526020909120015550610c719050816146cd565b9050610b15565b5050505050505050565b610c8c6001611158565b6000610c97846111b7565b90506000610ca4846111b7565b90506000836002811115610cba57610cba614705565b03610cf157610ccc61026d8383611ddf565b6003600081548110610ce057610ce0614640565b600091825260209091200155610d5e565b6001836002811115610d0557610d05614705565b03610d1757610ccc61026d8386611ea1565b6002836002811115610d2b57610d2b614705565b03610d5e57610d3d61026d8683611f4b565b6003600081548110610d5157610d51614640565b6000918252602090912001555b5050505050565b600381815481106105e857600080fd5b6001818154811061060957600080fd5b610d8f6001611158565b6000610d9a836111b7565b90506000610da7836111b7565b9050610db661026d8383611fb8565b6003600081548110610dca57610dca614640565b600091825260209091200155610de361026d8583612015565b6003600081548110610df757610df7614640565b906000526020600020015414610e0f57610e0f61466f565b6102d861026d8385612075565b6000818154811061060957600080fd5b828114610e95576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f496e707574206c656e677468206d69736d617463680000000000000000000000604482015260640161036f565b610e9e83611158565b60005b83811015610d5e576000610ec08686848181106103ed576103ed614640565b90506000610ed98585858181106103ed576103ed614640565b9050610ee861026d83836120c3565b60038481548110610efb57610efb614640565b600091825260209091200155610f2c61026d888886818110610f1f57610f1f614640565b9050602002013583612120565b60038481548110610f3f57610f3f614640565b906000526020600020015414610f5757610f5761466f565b610f7c61026d83878787818110610f7057610f70614640565b90506020020135612180565b60038481548110610f8f57610f8f614640565b906000526020600020015414610fa757610fa761466f565b505080610fb3906146cd565b9050610ea1565b600481815481106105e857600080fd5b828114611033576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f496e707574206c656e677468206d69736d617463680000000000000000000000604482015260640161036f565b61103c83611158565b60005b83811015610d5e57600061105e8686848181106103ed576103ed614640565b905060006110778585858181106103ed576103ed614640565b905061108661026d83836121ce565b6003848154811061109957611099614640565b6000918252602090912001556110ca61026d8888868181106110bd576110bd614640565b9050602002013583612230565b600384815481106110dd576110dd614640565b9060005260206000200154146110f5576110f561466f565b61111a61026d8387878781811061110e5761110e614640565b90506020020135612294565b6003848154811061112d5761112d614640565b9060005260206000200154146111455761114561466f565b505080611151906146cd565b905061103f565b6111646003600061442f565b60005b818110156111b3576003805460018101825560009182527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0155806111ab816146cd565b915050611167565b5050565b6111bf6143eb565b6111c76143eb565b82608081901c6111d6816122e3565b83526111e1826122e3565b602084015250909392505050565b6111f76143eb565b6111ff6143eb565b6112118460200151846020015161232f565b8160200181905250600061122d856020015185602001516123af565b8551855191925061123d916123f6565b80835261126b90829061126661125f83611258846001612486565b885161250e565b6001612567565b61250e565b82525090505b92915050565b60008061128783600001516125ff565b9050600061129884602001516125ff565b9050806fffffffffffffffffffffffffffffffff166080836fffffffffffffffffffffffffffffffff16901b1792505050919050565b6112d66143eb565b6112de6143eb565b6020830151608085901c9085906112f6908290612658565b8360200181905250600061130e8287602001516126e2565b905061131e838760000151612732565b80855261134090829061126661125f83611339846001612486565b8a5161250e565b8452509195945050505050565b6113556143eb565b61135d6143eb565b6020840151608084901c90849061137490826127a8565b8360200181905250600061138c87602001518361281e565b905061131e876000015184612567565b6113a7600080614450565b60005b818110156111b357600080546001810182559080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56360208204018054601f9092166101000a60ff0219909116905580611403816146cd565b9150506113aa565b61141760016000614450565b60005b818110156111b3576001805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf660208204018054601f9092166101000a60ff0219909116905580611475816146cd565b91505061141a565b61148960026000614450565b60005b818110156111b357600280546001810182556000919091527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace60208204018054601f9092166101000a60ff02199091169055806114e8816146cd565b91505061148c565b6114fc6004600061442f565b60005b818110156111b3576004805460018101825560009182527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b015580611543816146cd565b9150506114ff565b6115576005600061442f565b60005b818110156111b3576005805460018101825560009182527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db001558061159e816146cd565b91505061155a565b60006115b06143eb565b60006115bc6000612863565b90506115c66143eb565b6115d886602001518660200151612908565b60208083018290528701516000916115ef916123af565b90506000806116068960000151896000015161297d565b91509150600080611618836001612a39565b91509150611630858561162b8786612b00565b612b99565b965061163d85848361250e565b865250949650929450505050505b9250929050565b600061165c6143eb565b60006116686000612863565b90506116726143eb565b6020850151608087901c90879061168a908290612c5d565b6020840181905260009061169e908361281e565b90506000806116b1858b60000151612cce565b915091506000806116c3836001612a39565b915091506116d6858561162b8786612b00565b98506116e385848361250e565b885250969b959a509498505050505050505050565b60006117026143eb565b600061170e6000612863565b90506117186143eb565b6020860151608086901c90869061172f9082612486565b6020808501829052890151600091611746916123af565b90506000806116b18b6000015186612a39565b6040517f0cfed56100000000000000000000000000000000000000000000000000000000815260006004820181905260248201839052908190606490630cfed561906044016020604051808303816000875af11580156117bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e19190614734565b15159392505050565b6117f26143eb565b6117fa6143eb565b60008061180f86602001518660200151612d61565b91509150600061182787600001518760200151612d61565b915050600061183e88602001518860000151612d61565b91505061185461184e8584612908565b82612908565b855250506020830152509392505050565b61186d6143eb565b6118756143eb565b6020840151608084901c90849060009081906118919084612eef565b9150915060006118a5896000015185612eef565b91505060006118b88a6020015187612eef565b9150506118c861184e8584612908565b875250506020850152509195945050505050565b6118e46143eb565b6118ec6143eb565b600080608086901c869150915060008061190a838860200151612fcf565b91509150600061191e858960200151612fcf565b91505060006118b8858a60000151612fcf565b600061193b6143eb565b60006119476000612863565b90506119516143eb565b6119638660200151866020015161232f565b8160200181905250600061197f876020015187602001516123af565b9050600080611996896000015189600001516130af565b91509150600080611618836001613151565b60006119b26143eb565b60006119be6000612863565b90506119c86143eb565b6020850151608087901c9087906119e0908290612658565b836020018190525060006119f88289602001516126e2565b9050600080611a0b858b600001516131fa565b915091506000806116c3836001613151565b6000611a276143eb565b6000611a336000612863565b9050611a3d6143eb565b6020860151608086901c908690611a5490826127a8565b83602001819052506000611a6c89602001518361281e565b9050600080611a0b8b6000015186613151565b6000611a896143eb565b611a916143eb565b600080611aa687602001518760200151612d61565b91509150600080611abf89600001518960200151612d61565b91509150600080611ad88b602001518b60000151612d61565b91509150600080611af18d600001518d60000151612d61565b915091506000806000611b048b8961297d565b91509150611b12818761297d565b8d5260208d018b905292506000611b57611b2c8486612b00565b611b52611b4b611b3c8e8d612908565b611b468a8c612908565b612908565b6000613292565b612b00565b9e509b9c505050505050505050505050509250929050565b6000611b796143eb565b611b816143eb565b6040805180820190915260008082526020820152604080518082019091526000808252602082015260408051808201909152600080825260208201526040805180820190915260008082526020820152604080518082019091526000808252602082015260408051808201909152600080825260208201526040805180820190915260008082526020820152604080518082019091526000808252602082015260008060808f901c8f91509150611c3c818f60200151612fcf565b809b50819a505050611c52828f60200151612fcf565b8f51909950909750611c65908290612fcf565b8f51909750909550611c78908390612fcf565b945092506000915081905080611c8e8a8a61297d565b91509150611c9c818861297d565b8d5260208d018c905292506000611b57611cb68486612b00565b611b52611b4b611cc68d8c612908565b611b468b8b612908565b6000611cda6143eb565b611ce26143eb565b6040805180820190915260008082526020820152604080518082019091526000808252602082015260408051808201909152600080825260208201526040805180820190915260008082526020820152604080518082019091526000808252602082015260408051808201909152600080825260208201526040805180820190915260008082526020820152604080518082019091526000808252602082015260008060808e901c8e91509150611d9d8f6020015182612eef565b809b50819a505050611db38f6000015182612eef565b8099508198505050611dc98f6020015183612eef565b8097508196505050611c788f6000015183612eef565b611de76143eb565b611def6143eb565b600080611e0486602001518660200151612d61565b91509150600080611e1d88600001518860200151612d61565b91509150600080611e368a602001518a60000151612d61565b91509150600080611e4f8c600001518c60000151612d61565b91509150611e66611e6089876132d7565b846132d7565b895260208901879052611e906000611e8b611e818988612908565b611b468587612908565b612732565b50979b9a5050505050505050505050565b611ea96143eb565b611eb16143eb565b6020840151608084901c9084906000908190611ecd9084612eef565b91509150600080611ee28a6000015186612eef565b91509150600080611ef78c6020015189612eef565b91509150600080611f0c8e600001518b612eef565b91509150611f1d611e6089876132d7565b8b5260208b01879052611f386000611e8b611e818988612908565b50999d9c50505050505050505050505050565b611f536143eb565b611f5b6143eb565b600080608086901c8691509150600080611f79838860200151612fcf565b91509150600080611f8e868a60200151612fcf565b91509150600080611fa3878c60000151612fcf565b91509150600080611f0c8a8e60000151612fcf565b611fc06143eb565b611fc86143eb565b611fda84602001518460200151612908565b6020808301829052850151600091611ff1916123af565b85518551919250612001916132d7565b80835261126b90829061126681600161334c565b61201d6143eb565b6120256143eb565b6020830151608085901c90859061203d908290612c5d565b60208401819052600090612051908361281e565b90506120618387600001516133d4565b80855261134090829061126681600161334c565b61207d6143eb565b6120856143eb565b6020840151608084901c90849061209c9082612486565b60208085018290528701516000916120b3916123af565b905061206187600001518461334c565b6120cb6143eb565b6120d36143eb565b6120e584602001518460200151612908565b60208083018290528501516000916120fc916123af565b8551855191925061210c91612908565b80835261126b908290611266816001612486565b6121286143eb565b6121306143eb565b6020830151608085901c908590612148908290612c5d565b6020840181905260009061215c908361281e565b905061216c838760000151612c5d565b808552611340908290611266816001612486565b6121886143eb565b6121906143eb565b6020840151608084901c9084906121a79082612486565b60208085018290528701516000916121be916123af565b905061216c876000015184612486565b6121d66143eb565b6121de6143eb565b6121f08460200151846020015161232f565b8160200181905250600061220c856020015185602001516123af565b8551855191925061221c9161232f565b80835261126b9082906112668160016127a8565b6122386143eb565b6122406143eb565b6020830151608085901c908590612258908290612658565b836020018190525060006122708287602001516126e2565b9050612280838760000151612658565b8085526113409082906112668160016127a8565b61229c6143eb565b6122a46143eb565b6020840151608084901c9084906122bb90826127a8565b836020018190525060006122d387602001518361281e565b90506122808760000151846127a8565b604080518082019091526000808252602082015260408051808201909152600080825260208201528267ffffffffffffffff604082901c1661232481613445565b83526111e182613445565b60408051808201909152600080825260208201526040805180820190915260008082526020820152612369846020015184602001516134f4565b816020018181525050600061238685602001518560200151613509565b85518551919250612396916134f4565b80835261126b9082906123aa81600161351e565b6135a8565b6000806123c4846000015184600001516135bd565b90506123ee816123dc86600001518660000151613509565b61162b87602001518760200151613509565b949350505050565b60408051808201909152600080825260208201526040805180820190915260008082526020820152612430846020015184602001516134f4565b816020018181525050600061244d85602001518560200151613509565b8551855191925061245d916135d2565b80835261126b9082906123aa61247f836124788460016136a9565b88516135a8565b60016136bf565b60408051808201909152600080825260208201526040805180820190915260008082526020820152600080604085901c67ffffffffffffffff1685915091506124d38660200151826136a9565b60208085018290528701516000916124ea91613509565b90506124fa8760000151846136a9565b8085526113409082906123aa8160016136a9565b6040805180820190915260008082526020820152604080518082019091526000808252602082015261254985856020015185602001516135a8565b60208201528351835161255d9187916135a8565b8152949350505050565b60408051808201909152600080825260208201526040805180820190915260008082526020820152600080604085901c67ffffffffffffffff1685915091506125b486602001518261351e565b83602001818152505060006125cd87602001518361374b565b90506125dd8760000151846136bf565b8085526113409082906123aa61247f836125f88460016136a9565b8a516135a8565b60008061260f8360000151613761565b905060006126208460200151613761565b90508067ffffffffffffffff1660408367ffffffffffffffff166fffffffffffffffffffffffffffffffff16901b1792505050919050565b60408051808201909152600080825260208201526040805180820190915260008082526020820152600080604086901c67ffffffffffffffff1686915091506126a58186602001516137bb565b83602001818152505060006126be828760200151613845565b90506126ce8387600001516137bb565b8085526113409082906123aa81600161351e565b805160009067ffffffffffffffff604085901c16908490839061270690849061385b565b90506127288161271a858860000151613845565b61162b858960200151613845565b9695505050505050565b60408051808201909152600080825260208201526040805180820190915260008082526020820152600080604086901c67ffffffffffffffff16869150915061277f8186602001516137bb565b8360200181815250506000612798828760200151613845565b90506125dd838760000151613871565b60408051808201909152600080825260208201526040805180820190915260008082526020820152600080604085901c67ffffffffffffffff1685915091506127f586602001518261351e565b836020018181525050600061280e87602001518361374b565b90506126ce87600001518461351e565b815160009067ffffffffffffffff604084901c16908390839061284190846138fd565b90506127288161285588600001518661374b565b61162b89602001518661374b565b60008082612872576000612875565b60015b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081526000600482015260ff9190911660248201819052915060649063d9b60b60906044015b6020604051808303816000875af11580156128dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129019190614734565b9392505050565b6040805180820190915260008082526020820152604080518082019091526000808252602082015261294284602001518460200151613913565b602080830182905285015160009161295991613509565b8551855191925061296991613913565b80835261126b9082906123aa8160016136a9565b600061299c604051806040016040528060008152602001600081525090565b60006129a86000612863565b90506129c7604051806040016040528060008152602001600081525090565b6129d986602001518660200151613913565b60208083018290528701516000916129f091613509565b9050600080612a0789600001518960000151613928565b91509150600080612a198360016139f6565b91509150612a2c858561162b8786612b00565b965061163d8584836135a8565b6000612a58604051806040016040528060008152602001600081525090565b6000612a646000612863565b9050612a83604051806040016040528060008152602001600081525090565b602086015167ffffffffffffffff604087901c16908690612aa490826136a9565b6020808501829052890151600091612abb91613509565b9050600080612ace8b60000151866139f6565b91509150600080612ae08360016139f6565b91509150612af3858561162b8786612b00565b98506116e38584836135a8565b6000606463fb7da35f612b14838080613a83565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015260248101869052604481018590526064016020604051808303816000875af11580156128dd573d6000803e3d6000fd5b600060646320cc408d612bad838080613a83565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810187905260448101869052606481018590526084016020604051808303816000875af1158015612c39573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ee9190614734565b60408051808201909152600080825260208201526040805180820190915260008082526020820152600080604086901c67ffffffffffffffff168691509150612caa818660200151613ae0565b60208401819052600090612cbe908361374b565b90506124fa838760000151613ae0565b6000612ced604051806040016040528060008152602001600081525090565b6000612cf96000612863565b9050612d18604051806040016040528060008152602001600081525090565b602085015167ffffffffffffffff604088901c16908790612d3a908290613ae0565b60208401819052600090612d4e908361374b565b9050600080612ace858b60000151613af6565b60408051808201909152600080825260208201526040805180820190915260008082526020820152604080518082019091526000808252602082015267ffffffffffffffff906040805180820190915260008082526020820152604080518082019091526000808252602082015260408051808201909152600080825260208201526000612def8a87613b83565b90506000612dfe8b6040613bed565b90506000612e0c8b89613b83565b90506000612e1b8c6040613bed565b9050612e278483613d02565b9750612e338482613d02565b9650612e3f8383613d02565b9550612e4b8382613d02565b9450505050506000612e78612e6e612e64876040613bed565b611b46878a613b83565b611b468589613b83565b90506000612e87826040613bed565b90506000612eb1612e9d85611b46896040613bed565b611b46612eab886040613bed565b85612908565b90506000612edb612ec2898b613b83565b612ed6612ecf878d613b83565b6040613d84565b613e69565b919d919c50909a5050505050505050505050565b60408051808201909152600080825260208201526040805180820190915260008082526020820152604080518082019091526000808252602082015267ffffffffffffffff906040805180820190915260008082526020820152604080518082019091526000808252602082015260408051808201909152600080825260208201526000612f7d8a87613b83565b90506000612f8c8b6040613bed565b905067ffffffffffffffff8a81169060408c901c16612fab8483613ebf565b9750612fb78482613ebf565b9650612fc38383613ebf565b9550612e4b8382613ebf565b60408051808201909152600080825260208201526040805180820190915260008082526020820152604080518082019091526000808252602082015267ffffffffffffffff9060408051808201909152600080825260208201526040805180820190915260008082526020820152604080518082019091526000808252602082015267ffffffffffffffff8981169060408b901c1660006130708b89613b83565b9050600061307f8c6040613bed565b905061308b8483613f48565b97506130978482613f48565b96506130a38383613f48565b9550612e4b8382613f48565b60006130ce604051806040016040528060008152602001600081525090565b60006130da6000612863565b90506130f9604051806040016040528060008152602001600081525090565b61310b866020015186602001516134f4565b816020018181525050600061312887602001518760200151613509565b905060008061313f89600001518960000151613fd4565b91509150600080612a19836001613fec565b6000613170604051806040016040528060008152602001600081525090565b600061317c6000612863565b905061319b604051806040016040528060008152602001600081525090565b602086015167ffffffffffffffff604087901c169086906131bc908261351e565b83602001818152505060006131d589602001518361374b565b90506000806131e88b6000015186613fec565b91509150600080612ae0836001613fec565b6000613219604051806040016040528060008152602001600081525090565b60006132256000612863565b9050613244604051806040016040528060008152602001600081525090565b602085015167ffffffffffffffff604088901c169087906132669082906137bb565b836020018181525050600061327f828960200151613845565b90506000806131e8858b60000151614005565b815160009067ffffffffffffffff604084901c1690839083906132b590846138fd565b9050612728816132c988600001518661401e565b61162b89602001518661401e565b6040805180820190915260008082526020820152604080518082019091526000808252602082015261331184602001518460200151613913565b602080830182905285015160009161332891613509565b8551855191925061333891614034565b80835261126b9082906123aa81600161404b565b60408051808201909152600080825260208201526040805180820190915260008082526020820152600080604085901c67ffffffffffffffff1685915091506133998660200151826136a9565b60208085018290528701516000916133b091613509565b90506133c087600001518461404b565b8085526113409082906123aa81600161404b565b60408051808201909152600080825260208201526040805180820190915260008082526020820152600080604086901c67ffffffffffffffff168691509150613421818660200151613ae0565b60208401819052600090613435908361374b565b90506133c0838760000151614063565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0400000000000000000000000000000000000000000000000000000000000000600482015267ffffffffffffffff8216602482015260009060649063d9b60b60906044015b6020604051808303816000875af11580156134d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112719190614734565b6000606463371d1bf2612b1460048085613a83565b6000606463dd148693612b1460048085613a83565b6000606463371d1bf26135346004806002613a83565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905267ffffffffffffffff851660448201526064016128be565b600060646320cc408d612bad60048085613a83565b60006064637c12a1eb612b1460048085613a83565b60008080606463ce8c713d6135e960048085613a83565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015260248101889052604481018790526064015b60408051808303816000875af115801561366e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613692919061474d565b915091506136a0828261407b565b95945050505050565b60006064638c5d01506135346004806002613a83565b60008080606463ce8c713d6136d76004806002613a83565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810188905267ffffffffffffffff87166044820152606401613650565b6000606463dd1486936135346004806002613a83565b60006064630cfed56160045b60f81b846040518363ffffffff1660e01b81526004016134b19291907fff00000000000000000000000000000000000000000000000000000000000000929092168252602082015260400190565b6000606463371d1bf26137d16004806001613a83565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015267ffffffffffffffff86166024820152604481018590526064016128be565b6000606463dd1486936137d16004806001613a83565b60006064637c12a1eb6137d16004806001613a83565b60008080606463ce8c713d6138896004806001613a83565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015267ffffffffffffffff8816602482015260448101879052606401613650565b60006064637c12a1eb6135346004806002613a83565b60006064638c5d0150612b1460048085613a83565b6000808080606463f581fa2061394060048085613a83565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015260248101899052604481018890526064015b60408051808303816000875af11580156139c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139e9919061474d565b9097909650945050505050565b6000808080606463f581fa20613a0f6004806002613a83565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810189905267ffffffffffffffff881660448201526064016139a7565b6000816002811115613a9757613a97614705565b60ff166008846004811115613aae57613aae614705565b61ffff16901b61ffff166010866004811115613acc57613acc614705565b62ffffff16901b171760e81b949350505050565b60006064638c5d01506137d16004806001613a83565b6000808080606463f581fa20613b0f6004806001613a83565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015267ffffffffffffffff89166024820152604481018890526064016139a7565b60408051808201909152600080825260208201526040805180820190915260008082526020820152600080604085901c67ffffffffffffffff168591509150613bd086602001518261408c565b60208401528551613be1908361408c565b83525090949350505050565b6040805180820190915260008082526020820152604080518082019091526000808252602082015260408360ff1610613c5b57613c2e8460200151846140a2565b508351613c4590613c40604086614771565b6140a2565b6020820152613c546000613445565b8152612901565b60ff831615613ced576000613c71846040614771565b60ff1667ffffffffffffffff8016901c9050613cba613c948660200151866140a2565b613cb5613ca588600001518561408c565b613cb0886040614771565b614126565b61413d565b602083015250835167ffffffffffffffff60ff85161b90613ce590613cdf908361408c565b856140a2565b825250612901565b60208085015190820152835181529392505050565b60408051808201909152600080825260208201526040805180820190915260008082526020820152600080613d3f86602001518660200151614152565b915091506000613d5787600001518760200151614152565b9150506000613d6e88602001518860000151614152565b915050611854613d7e8584613913565b82613913565b6040805180820190915260008082526020820152604080518082019091526000808252602082015260408360ff1610613de9578351613dc39084614126565b50613dce6000613445565b602080830191909152840151613c5490613cb0604086614771565b60ff831615613ced57602084015167ffffffffffffffff60ff85161c90613e1a90613e14908361408c565b85614126565b6020830152613e2a846040614771565b60ff1667ffffffffffffffff8016901b9050613ce5613e4d866000015186614126565b613cb5613e5e88602001518561408c565b613c40886040614771565b60408051808201909152600080825260208201526040805180820190915260008082526020820152613ea38460200151846020015161413d565b602082015283518351613eb6919061413d565b81529392505050565b60408051808201909152600080825260208201526040805180820190915260008082526020820152602084015167ffffffffffffffff84811691604086901c909116906000908190613f119085614255565b915091506000613f25896000015186614255565b9150506000613f388a6020015186614255565b9150506118c8613d7e8584613913565b60408051808201909152600080825260208201526040805180820190915260008082526020820152600067ffffffffffffffff80168516905060006040866fffffffffffffffffffffffffffffffff16901c9050600080613fad8488602001516142ba565b915091506000613fc18489602001516142ba565b9150506000613f38868a600001516142ba565b6000808080606463ce8c713d61394060048085613a83565b6000808080606463ce8c713d613a0f6004806002613a83565b6000808080606463ce8c713d613b0f6004806001613a83565b60006064636d82e45e6135346004806002613a83565b60008080606463f581fa206135e960048085613a83565b60008080606463f581fa206136d76004806002613a83565b60008080606463f581fa206138896004806001613a83565b60006140868361431a565b50919050565b6000606463fe9c73d16135346004806002613a83565b600060646339bd1d8d6140b9600460016002613a83565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905260ff851660448201526064016128be565b60006064631135f71a6140b9600460016002613a83565b6000606463fb7da35f612b1460048085613a83565b60008063ffffffff81808080806141698a8761408c565b905060006141788b60206140a2565b905060006141868b8961408c565b905060006141958c60206140a2565b90506141a1848361439b565b97506141ad848261439b565b96506141b9838361439b565b95506141c5838261439b565b94505050505060006141f76141ed6141de8760206140a2565b6141e8878a61408c565b613913565b6141e8858961408c565b905060006142068260206140a2565b9050600061423061421c856141e88960206140a2565b6141e861422a8860206140a2565b85613913565b90506000612edb614241898b61408c565b613cb561424e878d61408c565b6020614126565b60008063ffffffff818080808061426c8a8761408c565b9050600061427b8b60206140a2565b905063ffffffff8a81169060208c901c1661429684836143b0565b97506142a284826143b0565b96506142ae83836143b0565b95506141c583826143b0565b60008063ffffffff8180808088851660208a901c8616826142db8b8961408c565b905060006142ea8c60206140a2565b90506142f684836143c6565b975061430284826143c6565b965061430e83836143c6565b95506141c583826143c6565b6000614325826143dc565b905061433081611759565b15156001146111b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f6f766572666c6f77206572726f72000000000000000000000000000000000000604482015260640161036f565b6000606463f1d21bb4612b1460048085613a83565b6000606463f1d21bb46135346004806002613a83565b6000606463f1d21bb46137d16004806001613a83565b60006064631d79e49a8261376d565b6040805160808101825260009181018281526060820192909252908190815260200161442a604051806040016040528060008152602001600081525090565b905290565b508054600082559060005260206000209081019061444d9190614471565b50565b50805460008255601f01602090049060005260206000209081019061444d91905b5b808211156144865760008155600101614472565b5090565b6000806040838503121561449d57600080fd5b50508035926020909101359150565b60008083601f8401126144be57600080fd5b50813567ffffffffffffffff8111156144d657600080fd5b6020830191508360208260051b850101111561164b57600080fd5b6000806000806040858703121561450757600080fd5b843567ffffffffffffffff8082111561451f57600080fd5b61452b888389016144ac565b9096509450602087013591508082111561454457600080fd5b50614551878288016144ac565b95989497509550505050565b60006020828403121561456f57600080fd5b5035919050565b80356003811061458557600080fd5b919050565b6000806000806000606086880312156145a257600080fd5b853567ffffffffffffffff808211156145ba57600080fd5b6145c689838a016144ac565b909750955060208801359150808211156145df57600080fd5b506145ec888289016144ac565b90945092506145ff905060408701614576565b90509295509295909350565b60008060006060848603121561462057600080fd5b833592506020840135915061463760408501614576565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036146fe576146fe61469e565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60006020828403121561474657600080fd5b5051919050565b6000806040838503121561476057600080fd5b505080516020909101519092909150565b60ff82811682821603908111156112715761127161469e56fea164736f6c6343000813000a";
313
+
314
+ type Arithmetic256BitTestsContractConstructorParams =
315
+ | [signer?: Signer]
316
+ | ConstructorParameters<typeof ContractFactory>;
317
+
318
+ const isSuperArgs = (
319
+ xs: Arithmetic256BitTestsContractConstructorParams
320
+ ): xs is ConstructorParameters<typeof ContractFactory> => xs.length > 1;
321
+
322
+ export class Arithmetic256BitTestsContract__factory extends ContractFactory {
323
+ constructor(...args: Arithmetic256BitTestsContractConstructorParams) {
324
+ if (isSuperArgs(args)) {
325
+ super(...args);
326
+ } else {
327
+ super(_abi, _bytecode, args[0]);
328
+ }
329
+ }
330
+
331
+ override getDeployTransaction(
332
+ overrides?: NonPayableOverrides & { from?: string }
333
+ ): Promise<ContractDeployTransaction> {
334
+ return super.getDeployTransaction(overrides || {});
335
+ }
336
+ override deploy(overrides?: NonPayableOverrides & { from?: string }) {
337
+ return super.deploy(overrides || {}) as Promise<
338
+ Arithmetic256BitTestsContract & {
339
+ deploymentTransaction(): ContractTransactionResponse;
340
+ }
341
+ >;
342
+ }
343
+ override connect(
344
+ runner: ContractRunner | null
345
+ ): Arithmetic256BitTestsContract__factory {
346
+ return super.connect(runner) as Arithmetic256BitTestsContract__factory;
347
+ }
348
+
349
+ static readonly bytecode = _bytecode;
350
+ static readonly abi = _abi;
351
+ static createInterface(): Arithmetic256BitTestsContractInterface {
352
+ return new Interface(_abi) as Arithmetic256BitTestsContractInterface;
353
+ }
354
+ static connect(
355
+ address: string,
356
+ runner?: ContractRunner | null
357
+ ): Arithmetic256BitTestsContract {
358
+ return new Contract(
359
+ address,
360
+ _abi,
361
+ runner
362
+ ) as unknown as Arithmetic256BitTestsContract;
363
+ }
364
+ }
@@ -0,0 +1,182 @@
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 { Signer, ContractDeployTransaction, ContractRunner } from "ethers";
11
+ import type { NonPayableOverrides } from "../../../../../common";
12
+ import type {
13
+ Bitwise128BitTestsContract,
14
+ Bitwise128BitTestsContractInterface,
15
+ } from "../../../../../contracts/mocks/utils/mpc/Bitwise128BitTestsContract";
16
+
17
+ const _abi = [
18
+ {
19
+ inputs: [
20
+ {
21
+ internalType: "uint128[]",
22
+ name: "a",
23
+ type: "uint128[]",
24
+ },
25
+ {
26
+ internalType: "uint128[]",
27
+ name: "b",
28
+ type: "uint128[]",
29
+ },
30
+ ],
31
+ name: "andTest",
32
+ outputs: [],
33
+ stateMutability: "nonpayable",
34
+ type: "function",
35
+ },
36
+ {
37
+ inputs: [
38
+ {
39
+ internalType: "uint256",
40
+ name: "",
41
+ type: "uint256",
42
+ },
43
+ ],
44
+ name: "numbers",
45
+ outputs: [
46
+ {
47
+ internalType: "uint128",
48
+ name: "",
49
+ type: "uint128",
50
+ },
51
+ ],
52
+ stateMutability: "view",
53
+ type: "function",
54
+ },
55
+ {
56
+ inputs: [
57
+ {
58
+ internalType: "uint128[]",
59
+ name: "a",
60
+ type: "uint128[]",
61
+ },
62
+ {
63
+ internalType: "uint128[]",
64
+ name: "b",
65
+ type: "uint128[]",
66
+ },
67
+ ],
68
+ name: "orTest",
69
+ outputs: [],
70
+ stateMutability: "nonpayable",
71
+ type: "function",
72
+ },
73
+ {
74
+ inputs: [
75
+ {
76
+ internalType: "uint128[]",
77
+ name: "a",
78
+ type: "uint128[]",
79
+ },
80
+ {
81
+ internalType: "uint8[]",
82
+ name: "b",
83
+ type: "uint8[]",
84
+ },
85
+ ],
86
+ name: "shlTest",
87
+ outputs: [],
88
+ stateMutability: "nonpayable",
89
+ type: "function",
90
+ },
91
+ {
92
+ inputs: [
93
+ {
94
+ internalType: "uint128[]",
95
+ name: "a",
96
+ type: "uint128[]",
97
+ },
98
+ {
99
+ internalType: "uint8[]",
100
+ name: "b",
101
+ type: "uint8[]",
102
+ },
103
+ ],
104
+ name: "shrTest",
105
+ outputs: [],
106
+ stateMutability: "nonpayable",
107
+ type: "function",
108
+ },
109
+ {
110
+ inputs: [
111
+ {
112
+ internalType: "uint128[]",
113
+ name: "a",
114
+ type: "uint128[]",
115
+ },
116
+ {
117
+ internalType: "uint128[]",
118
+ name: "b",
119
+ type: "uint128[]",
120
+ },
121
+ ],
122
+ name: "xorTest",
123
+ outputs: [],
124
+ stateMutability: "nonpayable",
125
+ type: "function",
126
+ },
127
+ ] as const;
128
+
129
+ const _bytecode =
130
+ "0x608060405234801561001057600080fd5b50611859806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063d39fa23311610050578063d39fa233146100b2578063e7725688146100ea578063f1b2fa09146100fd57600080fd5b80630f5740d514610077578063bb4e492a1461008c578063d3340fee1461009f575b600080fd5b61008a61008536600461164c565b610110565b005b61008a61009a36600461164c565b610392565b61008a6100ad36600461164c565b6104cb565b6100c56100c03660046116b8565b610604565b6040516fffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61008a6100f836600461164c565b61064a565b61008a61010b36600461164c565b6108a1565b82811461017e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f496e707574206c656e677468206d69736d61746368000000000000000000000060448201526064015b60405180910390fd5b61018783610af8565b60005b8381101561038b5760006101c38686848181106101a9576101a96116d1565b90506020020160208101906101be9190611700565b610b7d565b905060006101dc8585858181106101a9576101a96116d1565b90506101f06101eb8383610bd7565b610c2f565b60008481548110610203576102036116d1565b90600052602060002090600291828204019190066010026101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506102816101eb888886818110610266576102666116d1565b905060200201602081019061027b9190611700565b83610c88565b6fffffffffffffffffffffffffffffffff16600084815481106102a6576102a66116d1565b6000918252602090912060028204015460019091166010026101000a90046fffffffffffffffffffffffffffffffff16146102e3576102e3611732565b6103166101eb838787878181106102fc576102fc6116d1565b90506020020160208101906103119190611700565b610cf3565b6fffffffffffffffffffffffffffffffff166000848154811061033b5761033b6116d1565b6000918252602090912060028204015460019091166010026101000a90046fffffffffffffffffffffffffffffffff161461037857610378611732565b50508061038490611790565b905061018a565b5050505050565b8281146103fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f496e707574206c656e677468206d69736d6174636800000000000000000000006044820152606401610175565b61040483610af8565b60005b8381101561038b5760006104268686848181106101a9576101a96116d1565b905061045b6101eb82868686818110610441576104416116d1565b905060200201602081019061045691906117c8565b610d51565b6000838154811061046e5761046e6116d1565b90600052602060002090600291828204019190066010026101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555050806104c490611790565b9050610407565b828114610534576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f496e707574206c656e677468206d69736d6174636800000000000000000000006044820152606401610175565b61053d83610af8565b60005b8381101561038b57600061055f8686848181106101a9576101a96116d1565b90506105946101eb8286868681811061057a5761057a6116d1565b905060200201602081019061058f91906117c8565b610e6a565b600083815481106105a7576105a76116d1565b90600052602060002090600291828204019190066010026101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555050806105fd90611790565b9050610540565b6000818154811061061457600080fd5b9060005260206000209060029182820401919006601002915054906101000a90046fffffffffffffffffffffffffffffffff1681565b8281146106b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f496e707574206c656e677468206d69736d6174636800000000000000000000006044820152606401610175565b6106bc83610af8565b60005b8381101561038b5760006106de8686848181106101a9576101a96116d1565b905060006106f78585858181106101a9576101a96116d1565b90506107066101eb8383610f4c565b60008481548110610719576107196116d1565b90600052602060002090600291828204019190066010026101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506107976101eb88888681811061077c5761077c6116d1565b90506020020160208101906107919190611700565b83610f99565b6fffffffffffffffffffffffffffffffff16600084815481106107bc576107bc6116d1565b6000918252602090912060028204015460019091166010026101000a90046fffffffffffffffffffffffffffffffff16146107f9576107f9611732565b61082c6101eb83878787818110610812576108126116d1565b90506020020160208101906108279190611700565b610ff8565b6fffffffffffffffffffffffffffffffff1660008481548110610851576108516116d1565b6000918252602090912060028204015460019091166010026101000a90046fffffffffffffffffffffffffffffffff161461088e5761088e611732565b50508061089a90611790565b90506106bf565b82811461090a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f496e707574206c656e677468206d69736d6174636800000000000000000000006044820152606401610175565b61091383610af8565b60005b8381101561038b5760006109358686848181106101a9576101a96116d1565b9050600061094e8585858181106101a9576101a96116d1565b905061095d6101eb8383611056565b60008481548110610970576109706116d1565b90600052602060002090600291828204019190066010026101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506109ee6101eb8888868181106109d3576109d36116d1565b90506020020160208101906109e89190611700565b836110a3565b6fffffffffffffffffffffffffffffffff1660008481548110610a1357610a136116d1565b6000918252602090912060028204015460019091166010026101000a90046fffffffffffffffffffffffffffffffff1614610a5057610a50611732565b610a836101eb83878787818110610a6957610a696116d1565b9050602002016020810190610a7e9190611700565b611102565b6fffffffffffffffffffffffffffffffff1660008481548110610aa857610aa86116d1565b6000918252602090912060028204015460019091166010026101000a90046fffffffffffffffffffffffffffffffff1614610ae557610ae5611732565b505080610af190611790565b9050610916565b610b036000806115bf565b60005b81811015610b795760008054600180820183559180527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56360028204018054929091166010026101000a6fffffffffffffffffffffffffffffffff0219909116905580610b7181611790565b915050610b06565b5050565b604080518082019091526000808252602082015260408051808201909152600080825260208201528267ffffffffffffffff604082901c16610bbe81611160565b8352610bc982611160565b602084015250909392505050565b60408051808201909152600080825260208201526040805180820190915260008082526020820152610c118460200151846020015161120f565b602082015283518351610c24919061120f565b815290505b92915050565b600080610c3f83600001516112ce565b90506000610c5084602001516112ce565b90508067ffffffffffffffff1660408367ffffffffffffffff166fffffffffffffffffffffffffffffffff16901b1792505050919050565b60408051808201909152600080825260208201526040805180820190915260008082526020820152600080604086901c67ffffffffffffffff168691509150610cd5818660200151611335565b60208401528451610ce7908390611335565b83525090949350505050565b60408051808201909152600080825260208201526040805180820190915260008082526020820152600080604085901c67ffffffffffffffff168591509150610d408660200151826113bf565b60208401528551610ce790836113bf565b6040805180820190915260008082526020820152604080518082019091526000808252602082015260408360ff1610610dc2578351610d909084611449565b50610d9b6000611160565b602080830191909152840151610dbb90610db66040866117eb565b611449565b8152610e63565b60ff831615610e5457602084015167ffffffffffffffff60ff85161c90610df390610ded90836114cd565b85611449565b6020830152610e038460406117eb565b60ff1667ffffffffffffffff8016901b9050610e4c610e26866000015186611449565b610e47610e378860200151856114cd565b610e428860406117eb565b6114e3565b61120f565b825250610e63565b60208085015190820152835181525b9392505050565b6040805180820190915260008082526020820152604080518082019091526000808252602082015260408360ff1610610ecc57610eab8460200151846114e3565b508351610ebd90610e426040866117eb565b6020820152610dbb6000611160565b60ff831615610e54576000610ee28460406117eb565b60ff1667ffffffffffffffff8016901c9050610f21610f058660200151866114e3565b610e47610f168860000151856114cd565b610db68860406117eb565b602083015250835167ffffffffffffffff60ff85161b90610e4c90610f4690836114cd565b856114e3565b60408051808201909152600080825260208201526040805180820190915260008082526020820152610f86846020015184602001516114fa565b602082015283518351610c2491906114fa565b60408051808201909152600080825260208201526040805180820190915260008082526020820152600080604086901c67ffffffffffffffff168691509150610fe681866020015161150f565b60208401528451610ce790839061150f565b60408051808201909152600080825260208201526040805180820190915260008082526020820152600080604085901c67ffffffffffffffff1685915091506110458660200151826114cd565b60208401528551610ce790836114cd565b6040805180820190915260008082526020820152604080518082019091526000808252602082015261109084602001518460200151611525565b602082015283518351610c249190611525565b60408051808201909152600080825260208201526040805180820190915260008082526020820152600080604086901c67ffffffffffffffff1686915091506110f081866020015161153a565b60208401528451610ce790839061153a565b60408051808201909152600080825260208201526040805180820190915260008082526020820152600080604085901c67ffffffffffffffff16859150915061114f866020015182611550565b60208401528551610ce79083611550565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0400000000000000000000000000000000000000000000000000000000000000600482015267ffffffffffffffff8216602482015260009060649063d9b60b60906044015b6020604051808303816000875af11580156111eb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c299190611833565b6000606463fb7da35f61122460048085611562565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015260248101869052604481018590526064015b6020604051808303816000875af11580156112aa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e639190611833565b6040517f0cfed5610000000000000000000000000000000000000000000000000000000081527f0400000000000000000000000000000000000000000000000000000000000000600482015260248101829052600090606490630cfed561906044016111cc565b6000606463fb7da35f61134b6004806001611562565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015267ffffffffffffffff861660248201526044810185905260640161128b565b6000606463fb7da35f6113d56004806002611562565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905267ffffffffffffffff8516604482015260640161128b565b60006064631135f71a611460600460016002611562565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905260ff8516604482015260640161128b565b6000606463fe9c73d16113d56004806002611562565b600060646339bd1d8d611460600460016002611562565b6000606463fe9c73d161122460048085611562565b6000606463fe9c73d161134b6004806001611562565b60006064636f962e2c61122460048085611562565b60006064636f962e2c61134b6004806001611562565b60006064636f962e2c6113d560048060025b600081600281111561157657611576611804565b60ff16600884600481111561158d5761158d611804565b61ffff16901b61ffff1660108660048111156115ab576115ab611804565b62ffffff16901b171760e81b949350505050565b5080546000825560010160029004906000526020600020908101906115e491906115e7565b50565b5b808211156115fc57600081556001016115e8565b5090565b60008083601f84011261161257600080fd5b50813567ffffffffffffffff81111561162a57600080fd5b6020830191508360208260051b850101111561164557600080fd5b9250929050565b6000806000806040858703121561166257600080fd5b843567ffffffffffffffff8082111561167a57600080fd5b61168688838901611600565b9096509450602087013591508082111561169f57600080fd5b506116ac87828801611600565b95989497509550505050565b6000602082840312156116ca57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561171257600080fd5b81356fffffffffffffffffffffffffffffffff81168114610e6357600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036117c1576117c1611761565b5060010190565b6000602082840312156117da57600080fd5b813560ff81168114610e6357600080fd5b60ff8281168282160390811115610c2957610c29611761565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60006020828403121561184557600080fd5b505191905056fea164736f6c6343000813000a";
131
+
132
+ type Bitwise128BitTestsContractConstructorParams =
133
+ | [signer?: Signer]
134
+ | ConstructorParameters<typeof ContractFactory>;
135
+
136
+ const isSuperArgs = (
137
+ xs: Bitwise128BitTestsContractConstructorParams
138
+ ): xs is ConstructorParameters<typeof ContractFactory> => xs.length > 1;
139
+
140
+ export class Bitwise128BitTestsContract__factory extends ContractFactory {
141
+ constructor(...args: Bitwise128BitTestsContractConstructorParams) {
142
+ if (isSuperArgs(args)) {
143
+ super(...args);
144
+ } else {
145
+ super(_abi, _bytecode, args[0]);
146
+ }
147
+ }
148
+
149
+ override getDeployTransaction(
150
+ overrides?: NonPayableOverrides & { from?: string }
151
+ ): Promise<ContractDeployTransaction> {
152
+ return super.getDeployTransaction(overrides || {});
153
+ }
154
+ override deploy(overrides?: NonPayableOverrides & { from?: string }) {
155
+ return super.deploy(overrides || {}) as Promise<
156
+ Bitwise128BitTestsContract & {
157
+ deploymentTransaction(): ContractTransactionResponse;
158
+ }
159
+ >;
160
+ }
161
+ override connect(
162
+ runner: ContractRunner | null
163
+ ): Bitwise128BitTestsContract__factory {
164
+ return super.connect(runner) as Bitwise128BitTestsContract__factory;
165
+ }
166
+
167
+ static readonly bytecode = _bytecode;
168
+ static readonly abi = _abi;
169
+ static createInterface(): Bitwise128BitTestsContractInterface {
170
+ return new Interface(_abi) as Bitwise128BitTestsContractInterface;
171
+ }
172
+ static connect(
173
+ address: string,
174
+ runner?: ContractRunner | null
175
+ ): Bitwise128BitTestsContract {
176
+ return new Contract(
177
+ address,
178
+ _abi,
179
+ runner
180
+ ) as unknown as Bitwise128BitTestsContract;
181
+ }
182
+ }