secure-transac-contracts 1.0.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 (63) hide show
  1. package/build/contracts/AccessControl.json +4579 -0
  2. package/build/contracts/Context.json +356 -0
  3. package/build/contracts/CreditSystem.json +6037 -0
  4. package/build/contracts/ECDSA.json +4734 -0
  5. package/build/contracts/EIP712.json +3021 -0
  6. package/build/contracts/ERC165.json +352 -0
  7. package/build/contracts/ERC20.json +6816 -0
  8. package/build/contracts/ERC20Permit.json +2658 -0
  9. package/build/contracts/ERC721.json +12779 -0
  10. package/build/contracts/ERC721Utils.json +1058 -0
  11. package/build/contracts/Groth16Verifier.json +6298 -0
  12. package/build/contracts/Guardian.json +1116 -0
  13. package/build/contracts/IERC1155Errors.json +1687 -0
  14. package/build/contracts/IERC165.json +197 -0
  15. package/build/contracts/IERC20.json +1162 -0
  16. package/build/contracts/IERC20Errors.json +1662 -0
  17. package/build/contracts/IERC20Metadata.json +574 -0
  18. package/build/contracts/IERC20Permit.json +546 -0
  19. package/build/contracts/IERC5267.json +392 -0
  20. package/build/contracts/IERC721.json +1729 -0
  21. package/build/contracts/IERC721Errors.json +1694 -0
  22. package/build/contracts/IERC721Metadata.json +728 -0
  23. package/build/contracts/IERC721Receiver.json +296 -0
  24. package/build/contracts/IGuardian.json +215 -0
  25. package/build/contracts/ITrustRegistry.json +6767 -0
  26. package/build/contracts/IdentityVault.json +11584 -0
  27. package/build/contracts/Math.json +23115 -0
  28. package/build/contracts/MessageHashUtils.json +1668 -0
  29. package/build/contracts/Nonces.json +865 -0
  30. package/build/contracts/Ownable.json +1859 -0
  31. package/build/contracts/Panic.json +798 -0
  32. package/build/contracts/ReportingSystem.json +2787 -0
  33. package/build/contracts/SafeCast.json +21592 -0
  34. package/build/contracts/ScoringSystem.json +11245 -0
  35. package/build/contracts/SecureTransacSBT.json +18823 -0
  36. package/build/contracts/SecureTransacToken.json +19225 -0
  37. package/build/contracts/SecureVault.json +12890 -0
  38. package/build/contracts/ShortStrings.json +2852 -0
  39. package/build/contracts/SignedMath.json +1915 -0
  40. package/build/contracts/StorageSlot.json +1773 -0
  41. package/build/contracts/Strings.json +19001 -0
  42. package/build/contracts/TransactionLogger.json +5325 -0
  43. package/build/contracts/TrustDAO.json +23850 -0
  44. package/build/contracts/TrustRegistry.json +10948 -0
  45. package/build/contracts/VerificationRegistry.json +12811 -0
  46. package/build/contracts/ZKIdentityVerifier.json +13979 -0
  47. package/contracts/AccessControl.sol +34 -0
  48. package/contracts/CreditSystem.sol +48 -0
  49. package/contracts/Guardian.sol +33 -0
  50. package/contracts/IGuardian.sol +7 -0
  51. package/contracts/IdentityVault.sol +57 -0
  52. package/contracts/ReportingSystem.sol +14 -0
  53. package/contracts/ScoringSystem.sol +71 -0
  54. package/contracts/SecureTransacSBT.sol +72 -0
  55. package/contracts/SecureTransacToken.sol +20 -0
  56. package/contracts/SecureVault.sol +24 -0
  57. package/contracts/TransactionLogger.sol +12 -0
  58. package/contracts/TrustDAO.sol +158 -0
  59. package/contracts/TrustRegistry.sol +23 -0
  60. package/contracts/VerificationRegistry.sol +51 -0
  61. package/contracts/ZKIdentityVerifier.sol +38 -0
  62. package/contracts/ZKScoreVerifier.sol +175 -0
  63. package/package.json +32 -0
@@ -0,0 +1,1915 @@
1
+ {
2
+ "contractName": "SignedMath",
3
+ "abi": [],
4
+ "metadata": "{\"compiler\":{\"version\":\"0.8.21+commit.d9974bed\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard signed math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/math/SignedMath.sol\":\"SignedMath\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]}},\"version\":1}",
5
+ "bytecode": "0x6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212201330fb07d75c42db237b3bc31ce59df2ae331f89847b1ccf0f65553dd59d06be64736f6c63430008150033",
6
+ "deployedBytecode": "0x730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212201330fb07d75c42db237b3bc31ce59df2ae331f89847b1ccf0f65553dd59d06be64736f6c63430008150033",
7
+ "immutableReferences": {},
8
+ "generatedSources": [],
9
+ "deployedGeneratedSources": [],
10
+ "sourceMap": "258:2354:26:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;",
11
+ "deployedSourceMap": "258:2354:26:-:0;;;;;;;;",
12
+ "source": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/math/SignedMath.sol)\n\npragma solidity ^0.8.20;\n\nimport {SafeCast} from \"./SafeCast.sol\";\n\n/**\n * @dev Standard signed math utilities missing in the Solidity language.\n */\nlibrary SignedMath {\n /**\n * @dev Branchless ternary evaluation for `a ? b : c`. Gas costs are constant.\n *\n * IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone.\n * However, the compiler may optimize Solidity ternary operations (i.e. `a ? b : c`) to only compute\n * one branch when needed, making this function more expensive.\n */\n function ternary(bool condition, int256 a, int256 b) internal pure returns (int256) {\n unchecked {\n // branchless ternary works because:\n // b ^ (a ^ b) == a\n // b ^ 0 == b\n return b ^ ((a ^ b) * int256(SafeCast.toUint(condition)));\n }\n }\n\n /**\n * @dev Returns the largest of two signed numbers.\n */\n function max(int256 a, int256 b) internal pure returns (int256) {\n return ternary(a > b, a, b);\n }\n\n /**\n * @dev Returns the smallest of two signed numbers.\n */\n function min(int256 a, int256 b) internal pure returns (int256) {\n return ternary(a < b, a, b);\n }\n\n /**\n * @dev Returns the average of two signed numbers without overflow.\n * The result is rounded towards zero.\n */\n function average(int256 a, int256 b) internal pure returns (int256) {\n // Formula from the book \"Hacker's Delight\"\n int256 x = (a & b) + ((a ^ b) >> 1);\n return x + (int256(uint256(x) >> 255) & (a ^ b));\n }\n\n /**\n * @dev Returns the absolute unsigned value of a signed value.\n */\n function abs(int256 n) internal pure returns (uint256) {\n unchecked {\n // Formula from the \"Bit Twiddling Hacks\" by Sean Eron Anderson.\n // Since `n` is a signed integer, the generated bytecode will use the SAR opcode to perform the right shift,\n // taking advantage of the most significant (or \"sign\" bit) in two's complement representation.\n // This opcode adds new most significant bits set to the value of the previous most significant bit. As a result,\n // the mask will either be `bytes32(0)` (if n is positive) or `~bytes32(0)` (if n is negative).\n int256 mask = n >> 255;\n\n // A `bytes32(0)` mask leaves the input unchanged, while a `~bytes32(0)` mask complements it.\n return uint256((n + mask) ^ mask);\n }\n }\n}\n",
13
+ "sourcePath": "@openzeppelin\\contracts\\utils\\math\\SignedMath.sol",
14
+ "ast": {
15
+ "absolutePath": "@openzeppelin/contracts/utils/math/SignedMath.sol",
16
+ "exportedSymbols": {
17
+ "SafeCast": [
18
+ 8291
19
+ ],
20
+ "SignedMath": [
21
+ 8435
22
+ ]
23
+ },
24
+ "id": 8436,
25
+ "license": "MIT",
26
+ "nodeType": "SourceUnit",
27
+ "nodes": [
28
+ {
29
+ "id": 8293,
30
+ "literals": [
31
+ "solidity",
32
+ "^",
33
+ "0.8",
34
+ ".20"
35
+ ],
36
+ "nodeType": "PragmaDirective",
37
+ "src": "109:24:26"
38
+ },
39
+ {
40
+ "absolutePath": "@openzeppelin/contracts/utils/math/SafeCast.sol",
41
+ "file": "./SafeCast.sol",
42
+ "id": 8295,
43
+ "nameLocation": "-1:-1:-1",
44
+ "nodeType": "ImportDirective",
45
+ "scope": 8436,
46
+ "sourceUnit": 8292,
47
+ "src": "135:40:26",
48
+ "symbolAliases": [
49
+ {
50
+ "foreign": {
51
+ "id": 8294,
52
+ "name": "SafeCast",
53
+ "nodeType": "Identifier",
54
+ "overloadedDeclarations": [],
55
+ "referencedDeclaration": 8291,
56
+ "src": "143:8:26",
57
+ "typeDescriptions": {}
58
+ },
59
+ "nameLocation": "-1:-1:-1"
60
+ }
61
+ ],
62
+ "unitAlias": ""
63
+ },
64
+ {
65
+ "abstract": false,
66
+ "baseContracts": [],
67
+ "canonicalName": "SignedMath",
68
+ "contractDependencies": [],
69
+ "contractKind": "library",
70
+ "documentation": {
71
+ "id": 8296,
72
+ "nodeType": "StructuredDocumentation",
73
+ "src": "177:80:26",
74
+ "text": " @dev Standard signed math utilities missing in the Solidity language."
75
+ },
76
+ "fullyImplemented": true,
77
+ "id": 8435,
78
+ "linearizedBaseContracts": [
79
+ 8435
80
+ ],
81
+ "name": "SignedMath",
82
+ "nameLocation": "266:10:26",
83
+ "nodeType": "ContractDefinition",
84
+ "nodes": [
85
+ {
86
+ "body": {
87
+ "id": 8325,
88
+ "nodeType": "Block",
89
+ "src": "746:215:26",
90
+ "statements": [
91
+ {
92
+ "id": 8324,
93
+ "nodeType": "UncheckedBlock",
94
+ "src": "756:199:26",
95
+ "statements": [
96
+ {
97
+ "expression": {
98
+ "commonType": {
99
+ "typeIdentifier": "t_int256",
100
+ "typeString": "int256"
101
+ },
102
+ "id": 8322,
103
+ "isConstant": false,
104
+ "isLValue": false,
105
+ "isPure": false,
106
+ "lValueRequested": false,
107
+ "leftExpression": {
108
+ "id": 8308,
109
+ "name": "b",
110
+ "nodeType": "Identifier",
111
+ "overloadedDeclarations": [],
112
+ "referencedDeclaration": 8303,
113
+ "src": "894:1:26",
114
+ "typeDescriptions": {
115
+ "typeIdentifier": "t_int256",
116
+ "typeString": "int256"
117
+ }
118
+ },
119
+ "nodeType": "BinaryOperation",
120
+ "operator": "^",
121
+ "rightExpression": {
122
+ "components": [
123
+ {
124
+ "commonType": {
125
+ "typeIdentifier": "t_int256",
126
+ "typeString": "int256"
127
+ },
128
+ "id": 8320,
129
+ "isConstant": false,
130
+ "isLValue": false,
131
+ "isPure": false,
132
+ "lValueRequested": false,
133
+ "leftExpression": {
134
+ "components": [
135
+ {
136
+ "commonType": {
137
+ "typeIdentifier": "t_int256",
138
+ "typeString": "int256"
139
+ },
140
+ "id": 8311,
141
+ "isConstant": false,
142
+ "isLValue": false,
143
+ "isPure": false,
144
+ "lValueRequested": false,
145
+ "leftExpression": {
146
+ "id": 8309,
147
+ "name": "a",
148
+ "nodeType": "Identifier",
149
+ "overloadedDeclarations": [],
150
+ "referencedDeclaration": 8301,
151
+ "src": "900:1:26",
152
+ "typeDescriptions": {
153
+ "typeIdentifier": "t_int256",
154
+ "typeString": "int256"
155
+ }
156
+ },
157
+ "nodeType": "BinaryOperation",
158
+ "operator": "^",
159
+ "rightExpression": {
160
+ "id": 8310,
161
+ "name": "b",
162
+ "nodeType": "Identifier",
163
+ "overloadedDeclarations": [],
164
+ "referencedDeclaration": 8303,
165
+ "src": "904:1:26",
166
+ "typeDescriptions": {
167
+ "typeIdentifier": "t_int256",
168
+ "typeString": "int256"
169
+ }
170
+ },
171
+ "src": "900:5:26",
172
+ "typeDescriptions": {
173
+ "typeIdentifier": "t_int256",
174
+ "typeString": "int256"
175
+ }
176
+ }
177
+ ],
178
+ "id": 8312,
179
+ "isConstant": false,
180
+ "isInlineArray": false,
181
+ "isLValue": false,
182
+ "isPure": false,
183
+ "lValueRequested": false,
184
+ "nodeType": "TupleExpression",
185
+ "src": "899:7:26",
186
+ "typeDescriptions": {
187
+ "typeIdentifier": "t_int256",
188
+ "typeString": "int256"
189
+ }
190
+ },
191
+ "nodeType": "BinaryOperation",
192
+ "operator": "*",
193
+ "rightExpression": {
194
+ "arguments": [
195
+ {
196
+ "arguments": [
197
+ {
198
+ "id": 8317,
199
+ "name": "condition",
200
+ "nodeType": "Identifier",
201
+ "overloadedDeclarations": [],
202
+ "referencedDeclaration": 8299,
203
+ "src": "932:9:26",
204
+ "typeDescriptions": {
205
+ "typeIdentifier": "t_bool",
206
+ "typeString": "bool"
207
+ }
208
+ }
209
+ ],
210
+ "expression": {
211
+ "argumentTypes": [
212
+ {
213
+ "typeIdentifier": "t_bool",
214
+ "typeString": "bool"
215
+ }
216
+ ],
217
+ "expression": {
218
+ "id": 8315,
219
+ "name": "SafeCast",
220
+ "nodeType": "Identifier",
221
+ "overloadedDeclarations": [],
222
+ "referencedDeclaration": 8291,
223
+ "src": "916:8:26",
224
+ "typeDescriptions": {
225
+ "typeIdentifier": "t_type$_t_contract$_SafeCast_$8291_$",
226
+ "typeString": "type(library SafeCast)"
227
+ }
228
+ },
229
+ "id": 8316,
230
+ "isConstant": false,
231
+ "isLValue": false,
232
+ "isPure": false,
233
+ "lValueRequested": false,
234
+ "memberLocation": "925:6:26",
235
+ "memberName": "toUint",
236
+ "nodeType": "MemberAccess",
237
+ "referencedDeclaration": 8290,
238
+ "src": "916:15:26",
239
+ "typeDescriptions": {
240
+ "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$",
241
+ "typeString": "function (bool) pure returns (uint256)"
242
+ }
243
+ },
244
+ "id": 8318,
245
+ "isConstant": false,
246
+ "isLValue": false,
247
+ "isPure": false,
248
+ "kind": "functionCall",
249
+ "lValueRequested": false,
250
+ "nameLocations": [],
251
+ "names": [],
252
+ "nodeType": "FunctionCall",
253
+ "src": "916:26:26",
254
+ "tryCall": false,
255
+ "typeDescriptions": {
256
+ "typeIdentifier": "t_uint256",
257
+ "typeString": "uint256"
258
+ }
259
+ }
260
+ ],
261
+ "expression": {
262
+ "argumentTypes": [
263
+ {
264
+ "typeIdentifier": "t_uint256",
265
+ "typeString": "uint256"
266
+ }
267
+ ],
268
+ "id": 8314,
269
+ "isConstant": false,
270
+ "isLValue": false,
271
+ "isPure": true,
272
+ "lValueRequested": false,
273
+ "nodeType": "ElementaryTypeNameExpression",
274
+ "src": "909:6:26",
275
+ "typeDescriptions": {
276
+ "typeIdentifier": "t_type$_t_int256_$",
277
+ "typeString": "type(int256)"
278
+ },
279
+ "typeName": {
280
+ "id": 8313,
281
+ "name": "int256",
282
+ "nodeType": "ElementaryTypeName",
283
+ "src": "909:6:26",
284
+ "typeDescriptions": {}
285
+ }
286
+ },
287
+ "id": 8319,
288
+ "isConstant": false,
289
+ "isLValue": false,
290
+ "isPure": false,
291
+ "kind": "typeConversion",
292
+ "lValueRequested": false,
293
+ "nameLocations": [],
294
+ "names": [],
295
+ "nodeType": "FunctionCall",
296
+ "src": "909:34:26",
297
+ "tryCall": false,
298
+ "typeDescriptions": {
299
+ "typeIdentifier": "t_int256",
300
+ "typeString": "int256"
301
+ }
302
+ },
303
+ "src": "899:44:26",
304
+ "typeDescriptions": {
305
+ "typeIdentifier": "t_int256",
306
+ "typeString": "int256"
307
+ }
308
+ }
309
+ ],
310
+ "id": 8321,
311
+ "isConstant": false,
312
+ "isInlineArray": false,
313
+ "isLValue": false,
314
+ "isPure": false,
315
+ "lValueRequested": false,
316
+ "nodeType": "TupleExpression",
317
+ "src": "898:46:26",
318
+ "typeDescriptions": {
319
+ "typeIdentifier": "t_int256",
320
+ "typeString": "int256"
321
+ }
322
+ },
323
+ "src": "894:50:26",
324
+ "typeDescriptions": {
325
+ "typeIdentifier": "t_int256",
326
+ "typeString": "int256"
327
+ }
328
+ },
329
+ "functionReturnParameters": 8307,
330
+ "id": 8323,
331
+ "nodeType": "Return",
332
+ "src": "887:57:26"
333
+ }
334
+ ]
335
+ }
336
+ ]
337
+ },
338
+ "documentation": {
339
+ "id": 8297,
340
+ "nodeType": "StructuredDocumentation",
341
+ "src": "283:374:26",
342
+ "text": " @dev Branchless ternary evaluation for `a ? b : c`. Gas costs are constant.\n IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone.\n However, the compiler may optimize Solidity ternary operations (i.e. `a ? b : c`) to only compute\n one branch when needed, making this function more expensive."
343
+ },
344
+ "id": 8326,
345
+ "implemented": true,
346
+ "kind": "function",
347
+ "modifiers": [],
348
+ "name": "ternary",
349
+ "nameLocation": "671:7:26",
350
+ "nodeType": "FunctionDefinition",
351
+ "parameters": {
352
+ "id": 8304,
353
+ "nodeType": "ParameterList",
354
+ "parameters": [
355
+ {
356
+ "constant": false,
357
+ "id": 8299,
358
+ "mutability": "mutable",
359
+ "name": "condition",
360
+ "nameLocation": "684:9:26",
361
+ "nodeType": "VariableDeclaration",
362
+ "scope": 8326,
363
+ "src": "679:14:26",
364
+ "stateVariable": false,
365
+ "storageLocation": "default",
366
+ "typeDescriptions": {
367
+ "typeIdentifier": "t_bool",
368
+ "typeString": "bool"
369
+ },
370
+ "typeName": {
371
+ "id": 8298,
372
+ "name": "bool",
373
+ "nodeType": "ElementaryTypeName",
374
+ "src": "679:4:26",
375
+ "typeDescriptions": {
376
+ "typeIdentifier": "t_bool",
377
+ "typeString": "bool"
378
+ }
379
+ },
380
+ "visibility": "internal"
381
+ },
382
+ {
383
+ "constant": false,
384
+ "id": 8301,
385
+ "mutability": "mutable",
386
+ "name": "a",
387
+ "nameLocation": "702:1:26",
388
+ "nodeType": "VariableDeclaration",
389
+ "scope": 8326,
390
+ "src": "695:8:26",
391
+ "stateVariable": false,
392
+ "storageLocation": "default",
393
+ "typeDescriptions": {
394
+ "typeIdentifier": "t_int256",
395
+ "typeString": "int256"
396
+ },
397
+ "typeName": {
398
+ "id": 8300,
399
+ "name": "int256",
400
+ "nodeType": "ElementaryTypeName",
401
+ "src": "695:6:26",
402
+ "typeDescriptions": {
403
+ "typeIdentifier": "t_int256",
404
+ "typeString": "int256"
405
+ }
406
+ },
407
+ "visibility": "internal"
408
+ },
409
+ {
410
+ "constant": false,
411
+ "id": 8303,
412
+ "mutability": "mutable",
413
+ "name": "b",
414
+ "nameLocation": "712:1:26",
415
+ "nodeType": "VariableDeclaration",
416
+ "scope": 8326,
417
+ "src": "705:8:26",
418
+ "stateVariable": false,
419
+ "storageLocation": "default",
420
+ "typeDescriptions": {
421
+ "typeIdentifier": "t_int256",
422
+ "typeString": "int256"
423
+ },
424
+ "typeName": {
425
+ "id": 8302,
426
+ "name": "int256",
427
+ "nodeType": "ElementaryTypeName",
428
+ "src": "705:6:26",
429
+ "typeDescriptions": {
430
+ "typeIdentifier": "t_int256",
431
+ "typeString": "int256"
432
+ }
433
+ },
434
+ "visibility": "internal"
435
+ }
436
+ ],
437
+ "src": "678:36:26"
438
+ },
439
+ "returnParameters": {
440
+ "id": 8307,
441
+ "nodeType": "ParameterList",
442
+ "parameters": [
443
+ {
444
+ "constant": false,
445
+ "id": 8306,
446
+ "mutability": "mutable",
447
+ "name": "",
448
+ "nameLocation": "-1:-1:-1",
449
+ "nodeType": "VariableDeclaration",
450
+ "scope": 8326,
451
+ "src": "738:6:26",
452
+ "stateVariable": false,
453
+ "storageLocation": "default",
454
+ "typeDescriptions": {
455
+ "typeIdentifier": "t_int256",
456
+ "typeString": "int256"
457
+ },
458
+ "typeName": {
459
+ "id": 8305,
460
+ "name": "int256",
461
+ "nodeType": "ElementaryTypeName",
462
+ "src": "738:6:26",
463
+ "typeDescriptions": {
464
+ "typeIdentifier": "t_int256",
465
+ "typeString": "int256"
466
+ }
467
+ },
468
+ "visibility": "internal"
469
+ }
470
+ ],
471
+ "src": "737:8:26"
472
+ },
473
+ "scope": 8435,
474
+ "src": "662:299:26",
475
+ "stateMutability": "pure",
476
+ "virtual": false,
477
+ "visibility": "internal"
478
+ },
479
+ {
480
+ "body": {
481
+ "id": 8344,
482
+ "nodeType": "Block",
483
+ "src": "1102:44:26",
484
+ "statements": [
485
+ {
486
+ "expression": {
487
+ "arguments": [
488
+ {
489
+ "commonType": {
490
+ "typeIdentifier": "t_int256",
491
+ "typeString": "int256"
492
+ },
493
+ "id": 8339,
494
+ "isConstant": false,
495
+ "isLValue": false,
496
+ "isPure": false,
497
+ "lValueRequested": false,
498
+ "leftExpression": {
499
+ "id": 8337,
500
+ "name": "a",
501
+ "nodeType": "Identifier",
502
+ "overloadedDeclarations": [],
503
+ "referencedDeclaration": 8329,
504
+ "src": "1127:1:26",
505
+ "typeDescriptions": {
506
+ "typeIdentifier": "t_int256",
507
+ "typeString": "int256"
508
+ }
509
+ },
510
+ "nodeType": "BinaryOperation",
511
+ "operator": ">",
512
+ "rightExpression": {
513
+ "id": 8338,
514
+ "name": "b",
515
+ "nodeType": "Identifier",
516
+ "overloadedDeclarations": [],
517
+ "referencedDeclaration": 8331,
518
+ "src": "1131:1:26",
519
+ "typeDescriptions": {
520
+ "typeIdentifier": "t_int256",
521
+ "typeString": "int256"
522
+ }
523
+ },
524
+ "src": "1127:5:26",
525
+ "typeDescriptions": {
526
+ "typeIdentifier": "t_bool",
527
+ "typeString": "bool"
528
+ }
529
+ },
530
+ {
531
+ "id": 8340,
532
+ "name": "a",
533
+ "nodeType": "Identifier",
534
+ "overloadedDeclarations": [],
535
+ "referencedDeclaration": 8329,
536
+ "src": "1134:1:26",
537
+ "typeDescriptions": {
538
+ "typeIdentifier": "t_int256",
539
+ "typeString": "int256"
540
+ }
541
+ },
542
+ {
543
+ "id": 8341,
544
+ "name": "b",
545
+ "nodeType": "Identifier",
546
+ "overloadedDeclarations": [],
547
+ "referencedDeclaration": 8331,
548
+ "src": "1137:1:26",
549
+ "typeDescriptions": {
550
+ "typeIdentifier": "t_int256",
551
+ "typeString": "int256"
552
+ }
553
+ }
554
+ ],
555
+ "expression": {
556
+ "argumentTypes": [
557
+ {
558
+ "typeIdentifier": "t_bool",
559
+ "typeString": "bool"
560
+ },
561
+ {
562
+ "typeIdentifier": "t_int256",
563
+ "typeString": "int256"
564
+ },
565
+ {
566
+ "typeIdentifier": "t_int256",
567
+ "typeString": "int256"
568
+ }
569
+ ],
570
+ "id": 8336,
571
+ "name": "ternary",
572
+ "nodeType": "Identifier",
573
+ "overloadedDeclarations": [],
574
+ "referencedDeclaration": 8326,
575
+ "src": "1119:7:26",
576
+ "typeDescriptions": {
577
+ "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_int256_$_t_int256_$returns$_t_int256_$",
578
+ "typeString": "function (bool,int256,int256) pure returns (int256)"
579
+ }
580
+ },
581
+ "id": 8342,
582
+ "isConstant": false,
583
+ "isLValue": false,
584
+ "isPure": false,
585
+ "kind": "functionCall",
586
+ "lValueRequested": false,
587
+ "nameLocations": [],
588
+ "names": [],
589
+ "nodeType": "FunctionCall",
590
+ "src": "1119:20:26",
591
+ "tryCall": false,
592
+ "typeDescriptions": {
593
+ "typeIdentifier": "t_int256",
594
+ "typeString": "int256"
595
+ }
596
+ },
597
+ "functionReturnParameters": 8335,
598
+ "id": 8343,
599
+ "nodeType": "Return",
600
+ "src": "1112:27:26"
601
+ }
602
+ ]
603
+ },
604
+ "documentation": {
605
+ "id": 8327,
606
+ "nodeType": "StructuredDocumentation",
607
+ "src": "967:66:26",
608
+ "text": " @dev Returns the largest of two signed numbers."
609
+ },
610
+ "id": 8345,
611
+ "implemented": true,
612
+ "kind": "function",
613
+ "modifiers": [],
614
+ "name": "max",
615
+ "nameLocation": "1047:3:26",
616
+ "nodeType": "FunctionDefinition",
617
+ "parameters": {
618
+ "id": 8332,
619
+ "nodeType": "ParameterList",
620
+ "parameters": [
621
+ {
622
+ "constant": false,
623
+ "id": 8329,
624
+ "mutability": "mutable",
625
+ "name": "a",
626
+ "nameLocation": "1058:1:26",
627
+ "nodeType": "VariableDeclaration",
628
+ "scope": 8345,
629
+ "src": "1051:8:26",
630
+ "stateVariable": false,
631
+ "storageLocation": "default",
632
+ "typeDescriptions": {
633
+ "typeIdentifier": "t_int256",
634
+ "typeString": "int256"
635
+ },
636
+ "typeName": {
637
+ "id": 8328,
638
+ "name": "int256",
639
+ "nodeType": "ElementaryTypeName",
640
+ "src": "1051:6:26",
641
+ "typeDescriptions": {
642
+ "typeIdentifier": "t_int256",
643
+ "typeString": "int256"
644
+ }
645
+ },
646
+ "visibility": "internal"
647
+ },
648
+ {
649
+ "constant": false,
650
+ "id": 8331,
651
+ "mutability": "mutable",
652
+ "name": "b",
653
+ "nameLocation": "1068:1:26",
654
+ "nodeType": "VariableDeclaration",
655
+ "scope": 8345,
656
+ "src": "1061:8:26",
657
+ "stateVariable": false,
658
+ "storageLocation": "default",
659
+ "typeDescriptions": {
660
+ "typeIdentifier": "t_int256",
661
+ "typeString": "int256"
662
+ },
663
+ "typeName": {
664
+ "id": 8330,
665
+ "name": "int256",
666
+ "nodeType": "ElementaryTypeName",
667
+ "src": "1061:6:26",
668
+ "typeDescriptions": {
669
+ "typeIdentifier": "t_int256",
670
+ "typeString": "int256"
671
+ }
672
+ },
673
+ "visibility": "internal"
674
+ }
675
+ ],
676
+ "src": "1050:20:26"
677
+ },
678
+ "returnParameters": {
679
+ "id": 8335,
680
+ "nodeType": "ParameterList",
681
+ "parameters": [
682
+ {
683
+ "constant": false,
684
+ "id": 8334,
685
+ "mutability": "mutable",
686
+ "name": "",
687
+ "nameLocation": "-1:-1:-1",
688
+ "nodeType": "VariableDeclaration",
689
+ "scope": 8345,
690
+ "src": "1094:6:26",
691
+ "stateVariable": false,
692
+ "storageLocation": "default",
693
+ "typeDescriptions": {
694
+ "typeIdentifier": "t_int256",
695
+ "typeString": "int256"
696
+ },
697
+ "typeName": {
698
+ "id": 8333,
699
+ "name": "int256",
700
+ "nodeType": "ElementaryTypeName",
701
+ "src": "1094:6:26",
702
+ "typeDescriptions": {
703
+ "typeIdentifier": "t_int256",
704
+ "typeString": "int256"
705
+ }
706
+ },
707
+ "visibility": "internal"
708
+ }
709
+ ],
710
+ "src": "1093:8:26"
711
+ },
712
+ "scope": 8435,
713
+ "src": "1038:108:26",
714
+ "stateMutability": "pure",
715
+ "virtual": false,
716
+ "visibility": "internal"
717
+ },
718
+ {
719
+ "body": {
720
+ "id": 8363,
721
+ "nodeType": "Block",
722
+ "src": "1288:44:26",
723
+ "statements": [
724
+ {
725
+ "expression": {
726
+ "arguments": [
727
+ {
728
+ "commonType": {
729
+ "typeIdentifier": "t_int256",
730
+ "typeString": "int256"
731
+ },
732
+ "id": 8358,
733
+ "isConstant": false,
734
+ "isLValue": false,
735
+ "isPure": false,
736
+ "lValueRequested": false,
737
+ "leftExpression": {
738
+ "id": 8356,
739
+ "name": "a",
740
+ "nodeType": "Identifier",
741
+ "overloadedDeclarations": [],
742
+ "referencedDeclaration": 8348,
743
+ "src": "1313:1:26",
744
+ "typeDescriptions": {
745
+ "typeIdentifier": "t_int256",
746
+ "typeString": "int256"
747
+ }
748
+ },
749
+ "nodeType": "BinaryOperation",
750
+ "operator": "<",
751
+ "rightExpression": {
752
+ "id": 8357,
753
+ "name": "b",
754
+ "nodeType": "Identifier",
755
+ "overloadedDeclarations": [],
756
+ "referencedDeclaration": 8350,
757
+ "src": "1317:1:26",
758
+ "typeDescriptions": {
759
+ "typeIdentifier": "t_int256",
760
+ "typeString": "int256"
761
+ }
762
+ },
763
+ "src": "1313:5:26",
764
+ "typeDescriptions": {
765
+ "typeIdentifier": "t_bool",
766
+ "typeString": "bool"
767
+ }
768
+ },
769
+ {
770
+ "id": 8359,
771
+ "name": "a",
772
+ "nodeType": "Identifier",
773
+ "overloadedDeclarations": [],
774
+ "referencedDeclaration": 8348,
775
+ "src": "1320:1:26",
776
+ "typeDescriptions": {
777
+ "typeIdentifier": "t_int256",
778
+ "typeString": "int256"
779
+ }
780
+ },
781
+ {
782
+ "id": 8360,
783
+ "name": "b",
784
+ "nodeType": "Identifier",
785
+ "overloadedDeclarations": [],
786
+ "referencedDeclaration": 8350,
787
+ "src": "1323:1:26",
788
+ "typeDescriptions": {
789
+ "typeIdentifier": "t_int256",
790
+ "typeString": "int256"
791
+ }
792
+ }
793
+ ],
794
+ "expression": {
795
+ "argumentTypes": [
796
+ {
797
+ "typeIdentifier": "t_bool",
798
+ "typeString": "bool"
799
+ },
800
+ {
801
+ "typeIdentifier": "t_int256",
802
+ "typeString": "int256"
803
+ },
804
+ {
805
+ "typeIdentifier": "t_int256",
806
+ "typeString": "int256"
807
+ }
808
+ ],
809
+ "id": 8355,
810
+ "name": "ternary",
811
+ "nodeType": "Identifier",
812
+ "overloadedDeclarations": [],
813
+ "referencedDeclaration": 8326,
814
+ "src": "1305:7:26",
815
+ "typeDescriptions": {
816
+ "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_int256_$_t_int256_$returns$_t_int256_$",
817
+ "typeString": "function (bool,int256,int256) pure returns (int256)"
818
+ }
819
+ },
820
+ "id": 8361,
821
+ "isConstant": false,
822
+ "isLValue": false,
823
+ "isPure": false,
824
+ "kind": "functionCall",
825
+ "lValueRequested": false,
826
+ "nameLocations": [],
827
+ "names": [],
828
+ "nodeType": "FunctionCall",
829
+ "src": "1305:20:26",
830
+ "tryCall": false,
831
+ "typeDescriptions": {
832
+ "typeIdentifier": "t_int256",
833
+ "typeString": "int256"
834
+ }
835
+ },
836
+ "functionReturnParameters": 8354,
837
+ "id": 8362,
838
+ "nodeType": "Return",
839
+ "src": "1298:27:26"
840
+ }
841
+ ]
842
+ },
843
+ "documentation": {
844
+ "id": 8346,
845
+ "nodeType": "StructuredDocumentation",
846
+ "src": "1152:67:26",
847
+ "text": " @dev Returns the smallest of two signed numbers."
848
+ },
849
+ "id": 8364,
850
+ "implemented": true,
851
+ "kind": "function",
852
+ "modifiers": [],
853
+ "name": "min",
854
+ "nameLocation": "1233:3:26",
855
+ "nodeType": "FunctionDefinition",
856
+ "parameters": {
857
+ "id": 8351,
858
+ "nodeType": "ParameterList",
859
+ "parameters": [
860
+ {
861
+ "constant": false,
862
+ "id": 8348,
863
+ "mutability": "mutable",
864
+ "name": "a",
865
+ "nameLocation": "1244:1:26",
866
+ "nodeType": "VariableDeclaration",
867
+ "scope": 8364,
868
+ "src": "1237:8:26",
869
+ "stateVariable": false,
870
+ "storageLocation": "default",
871
+ "typeDescriptions": {
872
+ "typeIdentifier": "t_int256",
873
+ "typeString": "int256"
874
+ },
875
+ "typeName": {
876
+ "id": 8347,
877
+ "name": "int256",
878
+ "nodeType": "ElementaryTypeName",
879
+ "src": "1237:6:26",
880
+ "typeDescriptions": {
881
+ "typeIdentifier": "t_int256",
882
+ "typeString": "int256"
883
+ }
884
+ },
885
+ "visibility": "internal"
886
+ },
887
+ {
888
+ "constant": false,
889
+ "id": 8350,
890
+ "mutability": "mutable",
891
+ "name": "b",
892
+ "nameLocation": "1254:1:26",
893
+ "nodeType": "VariableDeclaration",
894
+ "scope": 8364,
895
+ "src": "1247:8:26",
896
+ "stateVariable": false,
897
+ "storageLocation": "default",
898
+ "typeDescriptions": {
899
+ "typeIdentifier": "t_int256",
900
+ "typeString": "int256"
901
+ },
902
+ "typeName": {
903
+ "id": 8349,
904
+ "name": "int256",
905
+ "nodeType": "ElementaryTypeName",
906
+ "src": "1247:6:26",
907
+ "typeDescriptions": {
908
+ "typeIdentifier": "t_int256",
909
+ "typeString": "int256"
910
+ }
911
+ },
912
+ "visibility": "internal"
913
+ }
914
+ ],
915
+ "src": "1236:20:26"
916
+ },
917
+ "returnParameters": {
918
+ "id": 8354,
919
+ "nodeType": "ParameterList",
920
+ "parameters": [
921
+ {
922
+ "constant": false,
923
+ "id": 8353,
924
+ "mutability": "mutable",
925
+ "name": "",
926
+ "nameLocation": "-1:-1:-1",
927
+ "nodeType": "VariableDeclaration",
928
+ "scope": 8364,
929
+ "src": "1280:6:26",
930
+ "stateVariable": false,
931
+ "storageLocation": "default",
932
+ "typeDescriptions": {
933
+ "typeIdentifier": "t_int256",
934
+ "typeString": "int256"
935
+ },
936
+ "typeName": {
937
+ "id": 8352,
938
+ "name": "int256",
939
+ "nodeType": "ElementaryTypeName",
940
+ "src": "1280:6:26",
941
+ "typeDescriptions": {
942
+ "typeIdentifier": "t_int256",
943
+ "typeString": "int256"
944
+ }
945
+ },
946
+ "visibility": "internal"
947
+ }
948
+ ],
949
+ "src": "1279:8:26"
950
+ },
951
+ "scope": 8435,
952
+ "src": "1224:108:26",
953
+ "stateMutability": "pure",
954
+ "virtual": false,
955
+ "visibility": "internal"
956
+ },
957
+ {
958
+ "body": {
959
+ "id": 8407,
960
+ "nodeType": "Block",
961
+ "src": "1537:162:26",
962
+ "statements": [
963
+ {
964
+ "assignments": [
965
+ 8375
966
+ ],
967
+ "declarations": [
968
+ {
969
+ "constant": false,
970
+ "id": 8375,
971
+ "mutability": "mutable",
972
+ "name": "x",
973
+ "nameLocation": "1606:1:26",
974
+ "nodeType": "VariableDeclaration",
975
+ "scope": 8407,
976
+ "src": "1599:8:26",
977
+ "stateVariable": false,
978
+ "storageLocation": "default",
979
+ "typeDescriptions": {
980
+ "typeIdentifier": "t_int256",
981
+ "typeString": "int256"
982
+ },
983
+ "typeName": {
984
+ "id": 8374,
985
+ "name": "int256",
986
+ "nodeType": "ElementaryTypeName",
987
+ "src": "1599:6:26",
988
+ "typeDescriptions": {
989
+ "typeIdentifier": "t_int256",
990
+ "typeString": "int256"
991
+ }
992
+ },
993
+ "visibility": "internal"
994
+ }
995
+ ],
996
+ "id": 8388,
997
+ "initialValue": {
998
+ "commonType": {
999
+ "typeIdentifier": "t_int256",
1000
+ "typeString": "int256"
1001
+ },
1002
+ "id": 8387,
1003
+ "isConstant": false,
1004
+ "isLValue": false,
1005
+ "isPure": false,
1006
+ "lValueRequested": false,
1007
+ "leftExpression": {
1008
+ "components": [
1009
+ {
1010
+ "commonType": {
1011
+ "typeIdentifier": "t_int256",
1012
+ "typeString": "int256"
1013
+ },
1014
+ "id": 8378,
1015
+ "isConstant": false,
1016
+ "isLValue": false,
1017
+ "isPure": false,
1018
+ "lValueRequested": false,
1019
+ "leftExpression": {
1020
+ "id": 8376,
1021
+ "name": "a",
1022
+ "nodeType": "Identifier",
1023
+ "overloadedDeclarations": [],
1024
+ "referencedDeclaration": 8367,
1025
+ "src": "1611:1:26",
1026
+ "typeDescriptions": {
1027
+ "typeIdentifier": "t_int256",
1028
+ "typeString": "int256"
1029
+ }
1030
+ },
1031
+ "nodeType": "BinaryOperation",
1032
+ "operator": "&",
1033
+ "rightExpression": {
1034
+ "id": 8377,
1035
+ "name": "b",
1036
+ "nodeType": "Identifier",
1037
+ "overloadedDeclarations": [],
1038
+ "referencedDeclaration": 8369,
1039
+ "src": "1615:1:26",
1040
+ "typeDescriptions": {
1041
+ "typeIdentifier": "t_int256",
1042
+ "typeString": "int256"
1043
+ }
1044
+ },
1045
+ "src": "1611:5:26",
1046
+ "typeDescriptions": {
1047
+ "typeIdentifier": "t_int256",
1048
+ "typeString": "int256"
1049
+ }
1050
+ }
1051
+ ],
1052
+ "id": 8379,
1053
+ "isConstant": false,
1054
+ "isInlineArray": false,
1055
+ "isLValue": false,
1056
+ "isPure": false,
1057
+ "lValueRequested": false,
1058
+ "nodeType": "TupleExpression",
1059
+ "src": "1610:7:26",
1060
+ "typeDescriptions": {
1061
+ "typeIdentifier": "t_int256",
1062
+ "typeString": "int256"
1063
+ }
1064
+ },
1065
+ "nodeType": "BinaryOperation",
1066
+ "operator": "+",
1067
+ "rightExpression": {
1068
+ "components": [
1069
+ {
1070
+ "commonType": {
1071
+ "typeIdentifier": "t_int256",
1072
+ "typeString": "int256"
1073
+ },
1074
+ "id": 8385,
1075
+ "isConstant": false,
1076
+ "isLValue": false,
1077
+ "isPure": false,
1078
+ "lValueRequested": false,
1079
+ "leftExpression": {
1080
+ "components": [
1081
+ {
1082
+ "commonType": {
1083
+ "typeIdentifier": "t_int256",
1084
+ "typeString": "int256"
1085
+ },
1086
+ "id": 8382,
1087
+ "isConstant": false,
1088
+ "isLValue": false,
1089
+ "isPure": false,
1090
+ "lValueRequested": false,
1091
+ "leftExpression": {
1092
+ "id": 8380,
1093
+ "name": "a",
1094
+ "nodeType": "Identifier",
1095
+ "overloadedDeclarations": [],
1096
+ "referencedDeclaration": 8367,
1097
+ "src": "1622:1:26",
1098
+ "typeDescriptions": {
1099
+ "typeIdentifier": "t_int256",
1100
+ "typeString": "int256"
1101
+ }
1102
+ },
1103
+ "nodeType": "BinaryOperation",
1104
+ "operator": "^",
1105
+ "rightExpression": {
1106
+ "id": 8381,
1107
+ "name": "b",
1108
+ "nodeType": "Identifier",
1109
+ "overloadedDeclarations": [],
1110
+ "referencedDeclaration": 8369,
1111
+ "src": "1626:1:26",
1112
+ "typeDescriptions": {
1113
+ "typeIdentifier": "t_int256",
1114
+ "typeString": "int256"
1115
+ }
1116
+ },
1117
+ "src": "1622:5:26",
1118
+ "typeDescriptions": {
1119
+ "typeIdentifier": "t_int256",
1120
+ "typeString": "int256"
1121
+ }
1122
+ }
1123
+ ],
1124
+ "id": 8383,
1125
+ "isConstant": false,
1126
+ "isInlineArray": false,
1127
+ "isLValue": false,
1128
+ "isPure": false,
1129
+ "lValueRequested": false,
1130
+ "nodeType": "TupleExpression",
1131
+ "src": "1621:7:26",
1132
+ "typeDescriptions": {
1133
+ "typeIdentifier": "t_int256",
1134
+ "typeString": "int256"
1135
+ }
1136
+ },
1137
+ "nodeType": "BinaryOperation",
1138
+ "operator": ">>",
1139
+ "rightExpression": {
1140
+ "hexValue": "31",
1141
+ "id": 8384,
1142
+ "isConstant": false,
1143
+ "isLValue": false,
1144
+ "isPure": true,
1145
+ "kind": "number",
1146
+ "lValueRequested": false,
1147
+ "nodeType": "Literal",
1148
+ "src": "1632:1:26",
1149
+ "typeDescriptions": {
1150
+ "typeIdentifier": "t_rational_1_by_1",
1151
+ "typeString": "int_const 1"
1152
+ },
1153
+ "value": "1"
1154
+ },
1155
+ "src": "1621:12:26",
1156
+ "typeDescriptions": {
1157
+ "typeIdentifier": "t_int256",
1158
+ "typeString": "int256"
1159
+ }
1160
+ }
1161
+ ],
1162
+ "id": 8386,
1163
+ "isConstant": false,
1164
+ "isInlineArray": false,
1165
+ "isLValue": false,
1166
+ "isPure": false,
1167
+ "lValueRequested": false,
1168
+ "nodeType": "TupleExpression",
1169
+ "src": "1620:14:26",
1170
+ "typeDescriptions": {
1171
+ "typeIdentifier": "t_int256",
1172
+ "typeString": "int256"
1173
+ }
1174
+ },
1175
+ "src": "1610:24:26",
1176
+ "typeDescriptions": {
1177
+ "typeIdentifier": "t_int256",
1178
+ "typeString": "int256"
1179
+ }
1180
+ },
1181
+ "nodeType": "VariableDeclarationStatement",
1182
+ "src": "1599:35:26"
1183
+ },
1184
+ {
1185
+ "expression": {
1186
+ "commonType": {
1187
+ "typeIdentifier": "t_int256",
1188
+ "typeString": "int256"
1189
+ },
1190
+ "id": 8405,
1191
+ "isConstant": false,
1192
+ "isLValue": false,
1193
+ "isPure": false,
1194
+ "lValueRequested": false,
1195
+ "leftExpression": {
1196
+ "id": 8389,
1197
+ "name": "x",
1198
+ "nodeType": "Identifier",
1199
+ "overloadedDeclarations": [],
1200
+ "referencedDeclaration": 8375,
1201
+ "src": "1651:1:26",
1202
+ "typeDescriptions": {
1203
+ "typeIdentifier": "t_int256",
1204
+ "typeString": "int256"
1205
+ }
1206
+ },
1207
+ "nodeType": "BinaryOperation",
1208
+ "operator": "+",
1209
+ "rightExpression": {
1210
+ "components": [
1211
+ {
1212
+ "commonType": {
1213
+ "typeIdentifier": "t_int256",
1214
+ "typeString": "int256"
1215
+ },
1216
+ "id": 8403,
1217
+ "isConstant": false,
1218
+ "isLValue": false,
1219
+ "isPure": false,
1220
+ "lValueRequested": false,
1221
+ "leftExpression": {
1222
+ "arguments": [
1223
+ {
1224
+ "commonType": {
1225
+ "typeIdentifier": "t_uint256",
1226
+ "typeString": "uint256"
1227
+ },
1228
+ "id": 8397,
1229
+ "isConstant": false,
1230
+ "isLValue": false,
1231
+ "isPure": false,
1232
+ "lValueRequested": false,
1233
+ "leftExpression": {
1234
+ "arguments": [
1235
+ {
1236
+ "id": 8394,
1237
+ "name": "x",
1238
+ "nodeType": "Identifier",
1239
+ "overloadedDeclarations": [],
1240
+ "referencedDeclaration": 8375,
1241
+ "src": "1671:1:26",
1242
+ "typeDescriptions": {
1243
+ "typeIdentifier": "t_int256",
1244
+ "typeString": "int256"
1245
+ }
1246
+ }
1247
+ ],
1248
+ "expression": {
1249
+ "argumentTypes": [
1250
+ {
1251
+ "typeIdentifier": "t_int256",
1252
+ "typeString": "int256"
1253
+ }
1254
+ ],
1255
+ "id": 8393,
1256
+ "isConstant": false,
1257
+ "isLValue": false,
1258
+ "isPure": true,
1259
+ "lValueRequested": false,
1260
+ "nodeType": "ElementaryTypeNameExpression",
1261
+ "src": "1663:7:26",
1262
+ "typeDescriptions": {
1263
+ "typeIdentifier": "t_type$_t_uint256_$",
1264
+ "typeString": "type(uint256)"
1265
+ },
1266
+ "typeName": {
1267
+ "id": 8392,
1268
+ "name": "uint256",
1269
+ "nodeType": "ElementaryTypeName",
1270
+ "src": "1663:7:26",
1271
+ "typeDescriptions": {}
1272
+ }
1273
+ },
1274
+ "id": 8395,
1275
+ "isConstant": false,
1276
+ "isLValue": false,
1277
+ "isPure": false,
1278
+ "kind": "typeConversion",
1279
+ "lValueRequested": false,
1280
+ "nameLocations": [],
1281
+ "names": [],
1282
+ "nodeType": "FunctionCall",
1283
+ "src": "1663:10:26",
1284
+ "tryCall": false,
1285
+ "typeDescriptions": {
1286
+ "typeIdentifier": "t_uint256",
1287
+ "typeString": "uint256"
1288
+ }
1289
+ },
1290
+ "nodeType": "BinaryOperation",
1291
+ "operator": ">>",
1292
+ "rightExpression": {
1293
+ "hexValue": "323535",
1294
+ "id": 8396,
1295
+ "isConstant": false,
1296
+ "isLValue": false,
1297
+ "isPure": true,
1298
+ "kind": "number",
1299
+ "lValueRequested": false,
1300
+ "nodeType": "Literal",
1301
+ "src": "1677:3:26",
1302
+ "typeDescriptions": {
1303
+ "typeIdentifier": "t_rational_255_by_1",
1304
+ "typeString": "int_const 255"
1305
+ },
1306
+ "value": "255"
1307
+ },
1308
+ "src": "1663:17:26",
1309
+ "typeDescriptions": {
1310
+ "typeIdentifier": "t_uint256",
1311
+ "typeString": "uint256"
1312
+ }
1313
+ }
1314
+ ],
1315
+ "expression": {
1316
+ "argumentTypes": [
1317
+ {
1318
+ "typeIdentifier": "t_uint256",
1319
+ "typeString": "uint256"
1320
+ }
1321
+ ],
1322
+ "id": 8391,
1323
+ "isConstant": false,
1324
+ "isLValue": false,
1325
+ "isPure": true,
1326
+ "lValueRequested": false,
1327
+ "nodeType": "ElementaryTypeNameExpression",
1328
+ "src": "1656:6:26",
1329
+ "typeDescriptions": {
1330
+ "typeIdentifier": "t_type$_t_int256_$",
1331
+ "typeString": "type(int256)"
1332
+ },
1333
+ "typeName": {
1334
+ "id": 8390,
1335
+ "name": "int256",
1336
+ "nodeType": "ElementaryTypeName",
1337
+ "src": "1656:6:26",
1338
+ "typeDescriptions": {}
1339
+ }
1340
+ },
1341
+ "id": 8398,
1342
+ "isConstant": false,
1343
+ "isLValue": false,
1344
+ "isPure": false,
1345
+ "kind": "typeConversion",
1346
+ "lValueRequested": false,
1347
+ "nameLocations": [],
1348
+ "names": [],
1349
+ "nodeType": "FunctionCall",
1350
+ "src": "1656:25:26",
1351
+ "tryCall": false,
1352
+ "typeDescriptions": {
1353
+ "typeIdentifier": "t_int256",
1354
+ "typeString": "int256"
1355
+ }
1356
+ },
1357
+ "nodeType": "BinaryOperation",
1358
+ "operator": "&",
1359
+ "rightExpression": {
1360
+ "components": [
1361
+ {
1362
+ "commonType": {
1363
+ "typeIdentifier": "t_int256",
1364
+ "typeString": "int256"
1365
+ },
1366
+ "id": 8401,
1367
+ "isConstant": false,
1368
+ "isLValue": false,
1369
+ "isPure": false,
1370
+ "lValueRequested": false,
1371
+ "leftExpression": {
1372
+ "id": 8399,
1373
+ "name": "a",
1374
+ "nodeType": "Identifier",
1375
+ "overloadedDeclarations": [],
1376
+ "referencedDeclaration": 8367,
1377
+ "src": "1685:1:26",
1378
+ "typeDescriptions": {
1379
+ "typeIdentifier": "t_int256",
1380
+ "typeString": "int256"
1381
+ }
1382
+ },
1383
+ "nodeType": "BinaryOperation",
1384
+ "operator": "^",
1385
+ "rightExpression": {
1386
+ "id": 8400,
1387
+ "name": "b",
1388
+ "nodeType": "Identifier",
1389
+ "overloadedDeclarations": [],
1390
+ "referencedDeclaration": 8369,
1391
+ "src": "1689:1:26",
1392
+ "typeDescriptions": {
1393
+ "typeIdentifier": "t_int256",
1394
+ "typeString": "int256"
1395
+ }
1396
+ },
1397
+ "src": "1685:5:26",
1398
+ "typeDescriptions": {
1399
+ "typeIdentifier": "t_int256",
1400
+ "typeString": "int256"
1401
+ }
1402
+ }
1403
+ ],
1404
+ "id": 8402,
1405
+ "isConstant": false,
1406
+ "isInlineArray": false,
1407
+ "isLValue": false,
1408
+ "isPure": false,
1409
+ "lValueRequested": false,
1410
+ "nodeType": "TupleExpression",
1411
+ "src": "1684:7:26",
1412
+ "typeDescriptions": {
1413
+ "typeIdentifier": "t_int256",
1414
+ "typeString": "int256"
1415
+ }
1416
+ },
1417
+ "src": "1656:35:26",
1418
+ "typeDescriptions": {
1419
+ "typeIdentifier": "t_int256",
1420
+ "typeString": "int256"
1421
+ }
1422
+ }
1423
+ ],
1424
+ "id": 8404,
1425
+ "isConstant": false,
1426
+ "isInlineArray": false,
1427
+ "isLValue": false,
1428
+ "isPure": false,
1429
+ "lValueRequested": false,
1430
+ "nodeType": "TupleExpression",
1431
+ "src": "1655:37:26",
1432
+ "typeDescriptions": {
1433
+ "typeIdentifier": "t_int256",
1434
+ "typeString": "int256"
1435
+ }
1436
+ },
1437
+ "src": "1651:41:26",
1438
+ "typeDescriptions": {
1439
+ "typeIdentifier": "t_int256",
1440
+ "typeString": "int256"
1441
+ }
1442
+ },
1443
+ "functionReturnParameters": 8373,
1444
+ "id": 8406,
1445
+ "nodeType": "Return",
1446
+ "src": "1644:48:26"
1447
+ }
1448
+ ]
1449
+ },
1450
+ "documentation": {
1451
+ "id": 8365,
1452
+ "nodeType": "StructuredDocumentation",
1453
+ "src": "1338:126:26",
1454
+ "text": " @dev Returns the average of two signed numbers without overflow.\n The result is rounded towards zero."
1455
+ },
1456
+ "id": 8408,
1457
+ "implemented": true,
1458
+ "kind": "function",
1459
+ "modifiers": [],
1460
+ "name": "average",
1461
+ "nameLocation": "1478:7:26",
1462
+ "nodeType": "FunctionDefinition",
1463
+ "parameters": {
1464
+ "id": 8370,
1465
+ "nodeType": "ParameterList",
1466
+ "parameters": [
1467
+ {
1468
+ "constant": false,
1469
+ "id": 8367,
1470
+ "mutability": "mutable",
1471
+ "name": "a",
1472
+ "nameLocation": "1493:1:26",
1473
+ "nodeType": "VariableDeclaration",
1474
+ "scope": 8408,
1475
+ "src": "1486:8:26",
1476
+ "stateVariable": false,
1477
+ "storageLocation": "default",
1478
+ "typeDescriptions": {
1479
+ "typeIdentifier": "t_int256",
1480
+ "typeString": "int256"
1481
+ },
1482
+ "typeName": {
1483
+ "id": 8366,
1484
+ "name": "int256",
1485
+ "nodeType": "ElementaryTypeName",
1486
+ "src": "1486:6:26",
1487
+ "typeDescriptions": {
1488
+ "typeIdentifier": "t_int256",
1489
+ "typeString": "int256"
1490
+ }
1491
+ },
1492
+ "visibility": "internal"
1493
+ },
1494
+ {
1495
+ "constant": false,
1496
+ "id": 8369,
1497
+ "mutability": "mutable",
1498
+ "name": "b",
1499
+ "nameLocation": "1503:1:26",
1500
+ "nodeType": "VariableDeclaration",
1501
+ "scope": 8408,
1502
+ "src": "1496:8:26",
1503
+ "stateVariable": false,
1504
+ "storageLocation": "default",
1505
+ "typeDescriptions": {
1506
+ "typeIdentifier": "t_int256",
1507
+ "typeString": "int256"
1508
+ },
1509
+ "typeName": {
1510
+ "id": 8368,
1511
+ "name": "int256",
1512
+ "nodeType": "ElementaryTypeName",
1513
+ "src": "1496:6:26",
1514
+ "typeDescriptions": {
1515
+ "typeIdentifier": "t_int256",
1516
+ "typeString": "int256"
1517
+ }
1518
+ },
1519
+ "visibility": "internal"
1520
+ }
1521
+ ],
1522
+ "src": "1485:20:26"
1523
+ },
1524
+ "returnParameters": {
1525
+ "id": 8373,
1526
+ "nodeType": "ParameterList",
1527
+ "parameters": [
1528
+ {
1529
+ "constant": false,
1530
+ "id": 8372,
1531
+ "mutability": "mutable",
1532
+ "name": "",
1533
+ "nameLocation": "-1:-1:-1",
1534
+ "nodeType": "VariableDeclaration",
1535
+ "scope": 8408,
1536
+ "src": "1529:6:26",
1537
+ "stateVariable": false,
1538
+ "storageLocation": "default",
1539
+ "typeDescriptions": {
1540
+ "typeIdentifier": "t_int256",
1541
+ "typeString": "int256"
1542
+ },
1543
+ "typeName": {
1544
+ "id": 8371,
1545
+ "name": "int256",
1546
+ "nodeType": "ElementaryTypeName",
1547
+ "src": "1529:6:26",
1548
+ "typeDescriptions": {
1549
+ "typeIdentifier": "t_int256",
1550
+ "typeString": "int256"
1551
+ }
1552
+ },
1553
+ "visibility": "internal"
1554
+ }
1555
+ ],
1556
+ "src": "1528:8:26"
1557
+ },
1558
+ "scope": 8435,
1559
+ "src": "1469:230:26",
1560
+ "stateMutability": "pure",
1561
+ "virtual": false,
1562
+ "visibility": "internal"
1563
+ },
1564
+ {
1565
+ "body": {
1566
+ "id": 8433,
1567
+ "nodeType": "Block",
1568
+ "src": "1843:767:26",
1569
+ "statements": [
1570
+ {
1571
+ "id": 8432,
1572
+ "nodeType": "UncheckedBlock",
1573
+ "src": "1853:751:26",
1574
+ "statements": [
1575
+ {
1576
+ "assignments": [
1577
+ 8417
1578
+ ],
1579
+ "declarations": [
1580
+ {
1581
+ "constant": false,
1582
+ "id": 8417,
1583
+ "mutability": "mutable",
1584
+ "name": "mask",
1585
+ "nameLocation": "2424:4:26",
1586
+ "nodeType": "VariableDeclaration",
1587
+ "scope": 8432,
1588
+ "src": "2417:11:26",
1589
+ "stateVariable": false,
1590
+ "storageLocation": "default",
1591
+ "typeDescriptions": {
1592
+ "typeIdentifier": "t_int256",
1593
+ "typeString": "int256"
1594
+ },
1595
+ "typeName": {
1596
+ "id": 8416,
1597
+ "name": "int256",
1598
+ "nodeType": "ElementaryTypeName",
1599
+ "src": "2417:6:26",
1600
+ "typeDescriptions": {
1601
+ "typeIdentifier": "t_int256",
1602
+ "typeString": "int256"
1603
+ }
1604
+ },
1605
+ "visibility": "internal"
1606
+ }
1607
+ ],
1608
+ "id": 8421,
1609
+ "initialValue": {
1610
+ "commonType": {
1611
+ "typeIdentifier": "t_int256",
1612
+ "typeString": "int256"
1613
+ },
1614
+ "id": 8420,
1615
+ "isConstant": false,
1616
+ "isLValue": false,
1617
+ "isPure": false,
1618
+ "lValueRequested": false,
1619
+ "leftExpression": {
1620
+ "id": 8418,
1621
+ "name": "n",
1622
+ "nodeType": "Identifier",
1623
+ "overloadedDeclarations": [],
1624
+ "referencedDeclaration": 8411,
1625
+ "src": "2431:1:26",
1626
+ "typeDescriptions": {
1627
+ "typeIdentifier": "t_int256",
1628
+ "typeString": "int256"
1629
+ }
1630
+ },
1631
+ "nodeType": "BinaryOperation",
1632
+ "operator": ">>",
1633
+ "rightExpression": {
1634
+ "hexValue": "323535",
1635
+ "id": 8419,
1636
+ "isConstant": false,
1637
+ "isLValue": false,
1638
+ "isPure": true,
1639
+ "kind": "number",
1640
+ "lValueRequested": false,
1641
+ "nodeType": "Literal",
1642
+ "src": "2436:3:26",
1643
+ "typeDescriptions": {
1644
+ "typeIdentifier": "t_rational_255_by_1",
1645
+ "typeString": "int_const 255"
1646
+ },
1647
+ "value": "255"
1648
+ },
1649
+ "src": "2431:8:26",
1650
+ "typeDescriptions": {
1651
+ "typeIdentifier": "t_int256",
1652
+ "typeString": "int256"
1653
+ }
1654
+ },
1655
+ "nodeType": "VariableDeclarationStatement",
1656
+ "src": "2417:22:26"
1657
+ },
1658
+ {
1659
+ "expression": {
1660
+ "arguments": [
1661
+ {
1662
+ "commonType": {
1663
+ "typeIdentifier": "t_int256",
1664
+ "typeString": "int256"
1665
+ },
1666
+ "id": 8429,
1667
+ "isConstant": false,
1668
+ "isLValue": false,
1669
+ "isPure": false,
1670
+ "lValueRequested": false,
1671
+ "leftExpression": {
1672
+ "components": [
1673
+ {
1674
+ "commonType": {
1675
+ "typeIdentifier": "t_int256",
1676
+ "typeString": "int256"
1677
+ },
1678
+ "id": 8426,
1679
+ "isConstant": false,
1680
+ "isLValue": false,
1681
+ "isPure": false,
1682
+ "lValueRequested": false,
1683
+ "leftExpression": {
1684
+ "id": 8424,
1685
+ "name": "n",
1686
+ "nodeType": "Identifier",
1687
+ "overloadedDeclarations": [],
1688
+ "referencedDeclaration": 8411,
1689
+ "src": "2576:1:26",
1690
+ "typeDescriptions": {
1691
+ "typeIdentifier": "t_int256",
1692
+ "typeString": "int256"
1693
+ }
1694
+ },
1695
+ "nodeType": "BinaryOperation",
1696
+ "operator": "+",
1697
+ "rightExpression": {
1698
+ "id": 8425,
1699
+ "name": "mask",
1700
+ "nodeType": "Identifier",
1701
+ "overloadedDeclarations": [],
1702
+ "referencedDeclaration": 8417,
1703
+ "src": "2580:4:26",
1704
+ "typeDescriptions": {
1705
+ "typeIdentifier": "t_int256",
1706
+ "typeString": "int256"
1707
+ }
1708
+ },
1709
+ "src": "2576:8:26",
1710
+ "typeDescriptions": {
1711
+ "typeIdentifier": "t_int256",
1712
+ "typeString": "int256"
1713
+ }
1714
+ }
1715
+ ],
1716
+ "id": 8427,
1717
+ "isConstant": false,
1718
+ "isInlineArray": false,
1719
+ "isLValue": false,
1720
+ "isPure": false,
1721
+ "lValueRequested": false,
1722
+ "nodeType": "TupleExpression",
1723
+ "src": "2575:10:26",
1724
+ "typeDescriptions": {
1725
+ "typeIdentifier": "t_int256",
1726
+ "typeString": "int256"
1727
+ }
1728
+ },
1729
+ "nodeType": "BinaryOperation",
1730
+ "operator": "^",
1731
+ "rightExpression": {
1732
+ "id": 8428,
1733
+ "name": "mask",
1734
+ "nodeType": "Identifier",
1735
+ "overloadedDeclarations": [],
1736
+ "referencedDeclaration": 8417,
1737
+ "src": "2588:4:26",
1738
+ "typeDescriptions": {
1739
+ "typeIdentifier": "t_int256",
1740
+ "typeString": "int256"
1741
+ }
1742
+ },
1743
+ "src": "2575:17:26",
1744
+ "typeDescriptions": {
1745
+ "typeIdentifier": "t_int256",
1746
+ "typeString": "int256"
1747
+ }
1748
+ }
1749
+ ],
1750
+ "expression": {
1751
+ "argumentTypes": [
1752
+ {
1753
+ "typeIdentifier": "t_int256",
1754
+ "typeString": "int256"
1755
+ }
1756
+ ],
1757
+ "id": 8423,
1758
+ "isConstant": false,
1759
+ "isLValue": false,
1760
+ "isPure": true,
1761
+ "lValueRequested": false,
1762
+ "nodeType": "ElementaryTypeNameExpression",
1763
+ "src": "2567:7:26",
1764
+ "typeDescriptions": {
1765
+ "typeIdentifier": "t_type$_t_uint256_$",
1766
+ "typeString": "type(uint256)"
1767
+ },
1768
+ "typeName": {
1769
+ "id": 8422,
1770
+ "name": "uint256",
1771
+ "nodeType": "ElementaryTypeName",
1772
+ "src": "2567:7:26",
1773
+ "typeDescriptions": {}
1774
+ }
1775
+ },
1776
+ "id": 8430,
1777
+ "isConstant": false,
1778
+ "isLValue": false,
1779
+ "isPure": false,
1780
+ "kind": "typeConversion",
1781
+ "lValueRequested": false,
1782
+ "nameLocations": [],
1783
+ "names": [],
1784
+ "nodeType": "FunctionCall",
1785
+ "src": "2567:26:26",
1786
+ "tryCall": false,
1787
+ "typeDescriptions": {
1788
+ "typeIdentifier": "t_uint256",
1789
+ "typeString": "uint256"
1790
+ }
1791
+ },
1792
+ "functionReturnParameters": 8415,
1793
+ "id": 8431,
1794
+ "nodeType": "Return",
1795
+ "src": "2560:33:26"
1796
+ }
1797
+ ]
1798
+ }
1799
+ ]
1800
+ },
1801
+ "documentation": {
1802
+ "id": 8409,
1803
+ "nodeType": "StructuredDocumentation",
1804
+ "src": "1705:78:26",
1805
+ "text": " @dev Returns the absolute unsigned value of a signed value."
1806
+ },
1807
+ "id": 8434,
1808
+ "implemented": true,
1809
+ "kind": "function",
1810
+ "modifiers": [],
1811
+ "name": "abs",
1812
+ "nameLocation": "1797:3:26",
1813
+ "nodeType": "FunctionDefinition",
1814
+ "parameters": {
1815
+ "id": 8412,
1816
+ "nodeType": "ParameterList",
1817
+ "parameters": [
1818
+ {
1819
+ "constant": false,
1820
+ "id": 8411,
1821
+ "mutability": "mutable",
1822
+ "name": "n",
1823
+ "nameLocation": "1808:1:26",
1824
+ "nodeType": "VariableDeclaration",
1825
+ "scope": 8434,
1826
+ "src": "1801:8:26",
1827
+ "stateVariable": false,
1828
+ "storageLocation": "default",
1829
+ "typeDescriptions": {
1830
+ "typeIdentifier": "t_int256",
1831
+ "typeString": "int256"
1832
+ },
1833
+ "typeName": {
1834
+ "id": 8410,
1835
+ "name": "int256",
1836
+ "nodeType": "ElementaryTypeName",
1837
+ "src": "1801:6:26",
1838
+ "typeDescriptions": {
1839
+ "typeIdentifier": "t_int256",
1840
+ "typeString": "int256"
1841
+ }
1842
+ },
1843
+ "visibility": "internal"
1844
+ }
1845
+ ],
1846
+ "src": "1800:10:26"
1847
+ },
1848
+ "returnParameters": {
1849
+ "id": 8415,
1850
+ "nodeType": "ParameterList",
1851
+ "parameters": [
1852
+ {
1853
+ "constant": false,
1854
+ "id": 8414,
1855
+ "mutability": "mutable",
1856
+ "name": "",
1857
+ "nameLocation": "-1:-1:-1",
1858
+ "nodeType": "VariableDeclaration",
1859
+ "scope": 8434,
1860
+ "src": "1834:7:26",
1861
+ "stateVariable": false,
1862
+ "storageLocation": "default",
1863
+ "typeDescriptions": {
1864
+ "typeIdentifier": "t_uint256",
1865
+ "typeString": "uint256"
1866
+ },
1867
+ "typeName": {
1868
+ "id": 8413,
1869
+ "name": "uint256",
1870
+ "nodeType": "ElementaryTypeName",
1871
+ "src": "1834:7:26",
1872
+ "typeDescriptions": {
1873
+ "typeIdentifier": "t_uint256",
1874
+ "typeString": "uint256"
1875
+ }
1876
+ },
1877
+ "visibility": "internal"
1878
+ }
1879
+ ],
1880
+ "src": "1833:9:26"
1881
+ },
1882
+ "scope": 8435,
1883
+ "src": "1788:822:26",
1884
+ "stateMutability": "pure",
1885
+ "virtual": false,
1886
+ "visibility": "internal"
1887
+ }
1888
+ ],
1889
+ "scope": 8436,
1890
+ "src": "258:2354:26",
1891
+ "usedErrors": [],
1892
+ "usedEvents": []
1893
+ }
1894
+ ],
1895
+ "src": "109:2504:26"
1896
+ },
1897
+ "compiler": {
1898
+ "name": "solc",
1899
+ "version": "0.8.21+commit.d9974bed.Emscripten.clang"
1900
+ },
1901
+ "networks": {},
1902
+ "schemaVersion": "3.4.16",
1903
+ "updatedAt": "2026-01-24T20:23:04.306Z",
1904
+ "devdoc": {
1905
+ "details": "Standard signed math utilities missing in the Solidity language.",
1906
+ "kind": "dev",
1907
+ "methods": {},
1908
+ "version": 1
1909
+ },
1910
+ "userdoc": {
1911
+ "kind": "user",
1912
+ "methods": {},
1913
+ "version": 1
1914
+ }
1915
+ }