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,1859 @@
1
+ {
2
+ "contractName": "Ownable",
3
+ "abi": [
4
+ {
5
+ "inputs": [
6
+ {
7
+ "internalType": "address",
8
+ "name": "owner",
9
+ "type": "address"
10
+ }
11
+ ],
12
+ "name": "OwnableInvalidOwner",
13
+ "type": "error"
14
+ },
15
+ {
16
+ "inputs": [
17
+ {
18
+ "internalType": "address",
19
+ "name": "account",
20
+ "type": "address"
21
+ }
22
+ ],
23
+ "name": "OwnableUnauthorizedAccount",
24
+ "type": "error"
25
+ },
26
+ {
27
+ "anonymous": false,
28
+ "inputs": [
29
+ {
30
+ "indexed": true,
31
+ "internalType": "address",
32
+ "name": "previousOwner",
33
+ "type": "address"
34
+ },
35
+ {
36
+ "indexed": true,
37
+ "internalType": "address",
38
+ "name": "newOwner",
39
+ "type": "address"
40
+ }
41
+ ],
42
+ "name": "OwnershipTransferred",
43
+ "type": "event"
44
+ },
45
+ {
46
+ "inputs": [],
47
+ "name": "owner",
48
+ "outputs": [
49
+ {
50
+ "internalType": "address",
51
+ "name": "",
52
+ "type": "address"
53
+ }
54
+ ],
55
+ "stateMutability": "view",
56
+ "type": "function"
57
+ },
58
+ {
59
+ "inputs": [],
60
+ "name": "renounceOwnership",
61
+ "outputs": [],
62
+ "stateMutability": "nonpayable",
63
+ "type": "function"
64
+ },
65
+ {
66
+ "inputs": [
67
+ {
68
+ "internalType": "address",
69
+ "name": "newOwner",
70
+ "type": "address"
71
+ }
72
+ ],
73
+ "name": "transferOwnership",
74
+ "outputs": [],
75
+ "stateMutability": "nonpayable",
76
+ "type": "function"
77
+ }
78
+ ],
79
+ "metadata": "{\"compiler\":{\"version\":\"0.8.21+commit.d9974bed\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. The initial owner is set to the address provided by the deployer. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.\",\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the contract setting the address provided by the deployer as the initial owner.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/Ownable.sol\":\"Ownable\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}",
80
+ "bytecode": "0x",
81
+ "deployedBytecode": "0x",
82
+ "immutableReferences": {},
83
+ "generatedSources": [],
84
+ "deployedGeneratedSources": [],
85
+ "sourceMap": "",
86
+ "deployedSourceMap": "",
87
+ "source": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\n\npragma solidity ^0.8.20;\n\nimport {Context} from \"../utils/Context.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * The initial owner is set to the address provided by the deployer. This can\n * later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract Ownable is Context {\n address private _owner;\n\n /**\n * @dev The caller account is not authorized to perform an operation.\n */\n error OwnableUnauthorizedAccount(address account);\n\n /**\n * @dev The owner is not a valid owner account. (eg. `address(0)`)\n */\n error OwnableInvalidOwner(address owner);\n\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n /**\n * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\n */\n constructor(address initialOwner) {\n if (initialOwner == address(0)) {\n revert OwnableInvalidOwner(address(0));\n }\n _transferOwnership(initialOwner);\n }\n\n /**\n * @dev Throws if called by any account other than the owner.\n */\n modifier onlyOwner() {\n _checkOwner();\n _;\n }\n\n /**\n * @dev Returns the address of the current owner.\n */\n function owner() public view virtual returns (address) {\n return _owner;\n }\n\n /**\n * @dev Throws if the sender is not the owner.\n */\n function _checkOwner() internal view virtual {\n if (owner() != _msgSender()) {\n revert OwnableUnauthorizedAccount(_msgSender());\n }\n }\n\n /**\n * @dev Leaves the contract without owner. It will not be possible to call\n * `onlyOwner` functions. Can only be called by the current owner.\n *\n * NOTE: Renouncing ownership will leave the contract without an owner,\n * thereby disabling any functionality that is only available to the owner.\n */\n function renounceOwnership() public virtual onlyOwner {\n _transferOwnership(address(0));\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Can only be called by the current owner.\n */\n function transferOwnership(address newOwner) public virtual onlyOwner {\n if (newOwner == address(0)) {\n revert OwnableInvalidOwner(address(0));\n }\n _transferOwnership(newOwner);\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Internal function without access restriction.\n */\n function _transferOwnership(address newOwner) internal virtual {\n address oldOwner = _owner;\n _owner = newOwner;\n emit OwnershipTransferred(oldOwner, newOwner);\n }\n}\n",
88
+ "sourcePath": "@openzeppelin\\contracts\\access\\Ownable.sol",
89
+ "ast": {
90
+ "absolutePath": "@openzeppelin/contracts/access/Ownable.sol",
91
+ "exportedSymbols": {
92
+ "Context": [
93
+ 2345
94
+ ],
95
+ "Ownable": [
96
+ 147
97
+ ]
98
+ },
99
+ "id": 148,
100
+ "license": "MIT",
101
+ "nodeType": "SourceUnit",
102
+ "nodes": [
103
+ {
104
+ "id": 1,
105
+ "literals": [
106
+ "solidity",
107
+ "^",
108
+ "0.8",
109
+ ".20"
110
+ ],
111
+ "nodeType": "PragmaDirective",
112
+ "src": "102:24:0"
113
+ },
114
+ {
115
+ "absolutePath": "@openzeppelin/contracts/utils/Context.sol",
116
+ "file": "../utils/Context.sol",
117
+ "id": 3,
118
+ "nameLocation": "-1:-1:-1",
119
+ "nodeType": "ImportDirective",
120
+ "scope": 148,
121
+ "sourceUnit": 2346,
122
+ "src": "128:45:0",
123
+ "symbolAliases": [
124
+ {
125
+ "foreign": {
126
+ "id": 2,
127
+ "name": "Context",
128
+ "nodeType": "Identifier",
129
+ "overloadedDeclarations": [],
130
+ "referencedDeclaration": 2345,
131
+ "src": "136:7:0",
132
+ "typeDescriptions": {}
133
+ },
134
+ "nameLocation": "-1:-1:-1"
135
+ }
136
+ ],
137
+ "unitAlias": ""
138
+ },
139
+ {
140
+ "abstract": true,
141
+ "baseContracts": [
142
+ {
143
+ "baseName": {
144
+ "id": 5,
145
+ "name": "Context",
146
+ "nameLocations": [
147
+ "692:7:0"
148
+ ],
149
+ "nodeType": "IdentifierPath",
150
+ "referencedDeclaration": 2345,
151
+ "src": "692:7:0"
152
+ },
153
+ "id": 6,
154
+ "nodeType": "InheritanceSpecifier",
155
+ "src": "692:7:0"
156
+ }
157
+ ],
158
+ "canonicalName": "Ownable",
159
+ "contractDependencies": [],
160
+ "contractKind": "contract",
161
+ "documentation": {
162
+ "id": 4,
163
+ "nodeType": "StructuredDocumentation",
164
+ "src": "175:487:0",
165
+ "text": " @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n The initial owner is set to the address provided by the deployer. This can\n later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner."
166
+ },
167
+ "fullyImplemented": true,
168
+ "id": 147,
169
+ "linearizedBaseContracts": [
170
+ 147,
171
+ 2345
172
+ ],
173
+ "name": "Ownable",
174
+ "nameLocation": "681:7:0",
175
+ "nodeType": "ContractDefinition",
176
+ "nodes": [
177
+ {
178
+ "constant": false,
179
+ "id": 8,
180
+ "mutability": "mutable",
181
+ "name": "_owner",
182
+ "nameLocation": "722:6:0",
183
+ "nodeType": "VariableDeclaration",
184
+ "scope": 147,
185
+ "src": "706:22:0",
186
+ "stateVariable": true,
187
+ "storageLocation": "default",
188
+ "typeDescriptions": {
189
+ "typeIdentifier": "t_address",
190
+ "typeString": "address"
191
+ },
192
+ "typeName": {
193
+ "id": 7,
194
+ "name": "address",
195
+ "nodeType": "ElementaryTypeName",
196
+ "src": "706:7:0",
197
+ "stateMutability": "nonpayable",
198
+ "typeDescriptions": {
199
+ "typeIdentifier": "t_address",
200
+ "typeString": "address"
201
+ }
202
+ },
203
+ "visibility": "private"
204
+ },
205
+ {
206
+ "documentation": {
207
+ "id": 9,
208
+ "nodeType": "StructuredDocumentation",
209
+ "src": "735:85:0",
210
+ "text": " @dev The caller account is not authorized to perform an operation."
211
+ },
212
+ "errorSelector": "118cdaa7",
213
+ "id": 13,
214
+ "name": "OwnableUnauthorizedAccount",
215
+ "nameLocation": "831:26:0",
216
+ "nodeType": "ErrorDefinition",
217
+ "parameters": {
218
+ "id": 12,
219
+ "nodeType": "ParameterList",
220
+ "parameters": [
221
+ {
222
+ "constant": false,
223
+ "id": 11,
224
+ "mutability": "mutable",
225
+ "name": "account",
226
+ "nameLocation": "866:7:0",
227
+ "nodeType": "VariableDeclaration",
228
+ "scope": 13,
229
+ "src": "858:15:0",
230
+ "stateVariable": false,
231
+ "storageLocation": "default",
232
+ "typeDescriptions": {
233
+ "typeIdentifier": "t_address",
234
+ "typeString": "address"
235
+ },
236
+ "typeName": {
237
+ "id": 10,
238
+ "name": "address",
239
+ "nodeType": "ElementaryTypeName",
240
+ "src": "858:7:0",
241
+ "stateMutability": "nonpayable",
242
+ "typeDescriptions": {
243
+ "typeIdentifier": "t_address",
244
+ "typeString": "address"
245
+ }
246
+ },
247
+ "visibility": "internal"
248
+ }
249
+ ],
250
+ "src": "857:17:0"
251
+ },
252
+ "src": "825:50:0"
253
+ },
254
+ {
255
+ "documentation": {
256
+ "id": 14,
257
+ "nodeType": "StructuredDocumentation",
258
+ "src": "881:82:0",
259
+ "text": " @dev The owner is not a valid owner account. (eg. `address(0)`)"
260
+ },
261
+ "errorSelector": "1e4fbdf7",
262
+ "id": 18,
263
+ "name": "OwnableInvalidOwner",
264
+ "nameLocation": "974:19:0",
265
+ "nodeType": "ErrorDefinition",
266
+ "parameters": {
267
+ "id": 17,
268
+ "nodeType": "ParameterList",
269
+ "parameters": [
270
+ {
271
+ "constant": false,
272
+ "id": 16,
273
+ "mutability": "mutable",
274
+ "name": "owner",
275
+ "nameLocation": "1002:5:0",
276
+ "nodeType": "VariableDeclaration",
277
+ "scope": 18,
278
+ "src": "994:13:0",
279
+ "stateVariable": false,
280
+ "storageLocation": "default",
281
+ "typeDescriptions": {
282
+ "typeIdentifier": "t_address",
283
+ "typeString": "address"
284
+ },
285
+ "typeName": {
286
+ "id": 15,
287
+ "name": "address",
288
+ "nodeType": "ElementaryTypeName",
289
+ "src": "994:7:0",
290
+ "stateMutability": "nonpayable",
291
+ "typeDescriptions": {
292
+ "typeIdentifier": "t_address",
293
+ "typeString": "address"
294
+ }
295
+ },
296
+ "visibility": "internal"
297
+ }
298
+ ],
299
+ "src": "993:15:0"
300
+ },
301
+ "src": "968:41:0"
302
+ },
303
+ {
304
+ "anonymous": false,
305
+ "eventSelector": "8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0",
306
+ "id": 24,
307
+ "name": "OwnershipTransferred",
308
+ "nameLocation": "1021:20:0",
309
+ "nodeType": "EventDefinition",
310
+ "parameters": {
311
+ "id": 23,
312
+ "nodeType": "ParameterList",
313
+ "parameters": [
314
+ {
315
+ "constant": false,
316
+ "id": 20,
317
+ "indexed": true,
318
+ "mutability": "mutable",
319
+ "name": "previousOwner",
320
+ "nameLocation": "1058:13:0",
321
+ "nodeType": "VariableDeclaration",
322
+ "scope": 24,
323
+ "src": "1042:29:0",
324
+ "stateVariable": false,
325
+ "storageLocation": "default",
326
+ "typeDescriptions": {
327
+ "typeIdentifier": "t_address",
328
+ "typeString": "address"
329
+ },
330
+ "typeName": {
331
+ "id": 19,
332
+ "name": "address",
333
+ "nodeType": "ElementaryTypeName",
334
+ "src": "1042:7:0",
335
+ "stateMutability": "nonpayable",
336
+ "typeDescriptions": {
337
+ "typeIdentifier": "t_address",
338
+ "typeString": "address"
339
+ }
340
+ },
341
+ "visibility": "internal"
342
+ },
343
+ {
344
+ "constant": false,
345
+ "id": 22,
346
+ "indexed": true,
347
+ "mutability": "mutable",
348
+ "name": "newOwner",
349
+ "nameLocation": "1089:8:0",
350
+ "nodeType": "VariableDeclaration",
351
+ "scope": 24,
352
+ "src": "1073:24:0",
353
+ "stateVariable": false,
354
+ "storageLocation": "default",
355
+ "typeDescriptions": {
356
+ "typeIdentifier": "t_address",
357
+ "typeString": "address"
358
+ },
359
+ "typeName": {
360
+ "id": 21,
361
+ "name": "address",
362
+ "nodeType": "ElementaryTypeName",
363
+ "src": "1073:7:0",
364
+ "stateMutability": "nonpayable",
365
+ "typeDescriptions": {
366
+ "typeIdentifier": "t_address",
367
+ "typeString": "address"
368
+ }
369
+ },
370
+ "visibility": "internal"
371
+ }
372
+ ],
373
+ "src": "1041:57:0"
374
+ },
375
+ "src": "1015:84:0"
376
+ },
377
+ {
378
+ "body": {
379
+ "id": 49,
380
+ "nodeType": "Block",
381
+ "src": "1259:153:0",
382
+ "statements": [
383
+ {
384
+ "condition": {
385
+ "commonType": {
386
+ "typeIdentifier": "t_address",
387
+ "typeString": "address"
388
+ },
389
+ "id": 35,
390
+ "isConstant": false,
391
+ "isLValue": false,
392
+ "isPure": false,
393
+ "lValueRequested": false,
394
+ "leftExpression": {
395
+ "id": 30,
396
+ "name": "initialOwner",
397
+ "nodeType": "Identifier",
398
+ "overloadedDeclarations": [],
399
+ "referencedDeclaration": 27,
400
+ "src": "1273:12:0",
401
+ "typeDescriptions": {
402
+ "typeIdentifier": "t_address",
403
+ "typeString": "address"
404
+ }
405
+ },
406
+ "nodeType": "BinaryOperation",
407
+ "operator": "==",
408
+ "rightExpression": {
409
+ "arguments": [
410
+ {
411
+ "hexValue": "30",
412
+ "id": 33,
413
+ "isConstant": false,
414
+ "isLValue": false,
415
+ "isPure": true,
416
+ "kind": "number",
417
+ "lValueRequested": false,
418
+ "nodeType": "Literal",
419
+ "src": "1297:1:0",
420
+ "typeDescriptions": {
421
+ "typeIdentifier": "t_rational_0_by_1",
422
+ "typeString": "int_const 0"
423
+ },
424
+ "value": "0"
425
+ }
426
+ ],
427
+ "expression": {
428
+ "argumentTypes": [
429
+ {
430
+ "typeIdentifier": "t_rational_0_by_1",
431
+ "typeString": "int_const 0"
432
+ }
433
+ ],
434
+ "id": 32,
435
+ "isConstant": false,
436
+ "isLValue": false,
437
+ "isPure": true,
438
+ "lValueRequested": false,
439
+ "nodeType": "ElementaryTypeNameExpression",
440
+ "src": "1289:7:0",
441
+ "typeDescriptions": {
442
+ "typeIdentifier": "t_type$_t_address_$",
443
+ "typeString": "type(address)"
444
+ },
445
+ "typeName": {
446
+ "id": 31,
447
+ "name": "address",
448
+ "nodeType": "ElementaryTypeName",
449
+ "src": "1289:7:0",
450
+ "typeDescriptions": {}
451
+ }
452
+ },
453
+ "id": 34,
454
+ "isConstant": false,
455
+ "isLValue": false,
456
+ "isPure": true,
457
+ "kind": "typeConversion",
458
+ "lValueRequested": false,
459
+ "nameLocations": [],
460
+ "names": [],
461
+ "nodeType": "FunctionCall",
462
+ "src": "1289:10:0",
463
+ "tryCall": false,
464
+ "typeDescriptions": {
465
+ "typeIdentifier": "t_address",
466
+ "typeString": "address"
467
+ }
468
+ },
469
+ "src": "1273:26:0",
470
+ "typeDescriptions": {
471
+ "typeIdentifier": "t_bool",
472
+ "typeString": "bool"
473
+ }
474
+ },
475
+ "id": 44,
476
+ "nodeType": "IfStatement",
477
+ "src": "1269:95:0",
478
+ "trueBody": {
479
+ "id": 43,
480
+ "nodeType": "Block",
481
+ "src": "1301:63:0",
482
+ "statements": [
483
+ {
484
+ "errorCall": {
485
+ "arguments": [
486
+ {
487
+ "arguments": [
488
+ {
489
+ "hexValue": "30",
490
+ "id": 39,
491
+ "isConstant": false,
492
+ "isLValue": false,
493
+ "isPure": true,
494
+ "kind": "number",
495
+ "lValueRequested": false,
496
+ "nodeType": "Literal",
497
+ "src": "1350:1:0",
498
+ "typeDescriptions": {
499
+ "typeIdentifier": "t_rational_0_by_1",
500
+ "typeString": "int_const 0"
501
+ },
502
+ "value": "0"
503
+ }
504
+ ],
505
+ "expression": {
506
+ "argumentTypes": [
507
+ {
508
+ "typeIdentifier": "t_rational_0_by_1",
509
+ "typeString": "int_const 0"
510
+ }
511
+ ],
512
+ "id": 38,
513
+ "isConstant": false,
514
+ "isLValue": false,
515
+ "isPure": true,
516
+ "lValueRequested": false,
517
+ "nodeType": "ElementaryTypeNameExpression",
518
+ "src": "1342:7:0",
519
+ "typeDescriptions": {
520
+ "typeIdentifier": "t_type$_t_address_$",
521
+ "typeString": "type(address)"
522
+ },
523
+ "typeName": {
524
+ "id": 37,
525
+ "name": "address",
526
+ "nodeType": "ElementaryTypeName",
527
+ "src": "1342:7:0",
528
+ "typeDescriptions": {}
529
+ }
530
+ },
531
+ "id": 40,
532
+ "isConstant": false,
533
+ "isLValue": false,
534
+ "isPure": true,
535
+ "kind": "typeConversion",
536
+ "lValueRequested": false,
537
+ "nameLocations": [],
538
+ "names": [],
539
+ "nodeType": "FunctionCall",
540
+ "src": "1342:10:0",
541
+ "tryCall": false,
542
+ "typeDescriptions": {
543
+ "typeIdentifier": "t_address",
544
+ "typeString": "address"
545
+ }
546
+ }
547
+ ],
548
+ "expression": {
549
+ "argumentTypes": [
550
+ {
551
+ "typeIdentifier": "t_address",
552
+ "typeString": "address"
553
+ }
554
+ ],
555
+ "id": 36,
556
+ "name": "OwnableInvalidOwner",
557
+ "nodeType": "Identifier",
558
+ "overloadedDeclarations": [],
559
+ "referencedDeclaration": 18,
560
+ "src": "1322:19:0",
561
+ "typeDescriptions": {
562
+ "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$",
563
+ "typeString": "function (address) pure"
564
+ }
565
+ },
566
+ "id": 41,
567
+ "isConstant": false,
568
+ "isLValue": false,
569
+ "isPure": false,
570
+ "kind": "functionCall",
571
+ "lValueRequested": false,
572
+ "nameLocations": [],
573
+ "names": [],
574
+ "nodeType": "FunctionCall",
575
+ "src": "1322:31:0",
576
+ "tryCall": false,
577
+ "typeDescriptions": {
578
+ "typeIdentifier": "t_tuple$__$",
579
+ "typeString": "tuple()"
580
+ }
581
+ },
582
+ "id": 42,
583
+ "nodeType": "RevertStatement",
584
+ "src": "1315:38:0"
585
+ }
586
+ ]
587
+ }
588
+ },
589
+ {
590
+ "expression": {
591
+ "arguments": [
592
+ {
593
+ "id": 46,
594
+ "name": "initialOwner",
595
+ "nodeType": "Identifier",
596
+ "overloadedDeclarations": [],
597
+ "referencedDeclaration": 27,
598
+ "src": "1392:12:0",
599
+ "typeDescriptions": {
600
+ "typeIdentifier": "t_address",
601
+ "typeString": "address"
602
+ }
603
+ }
604
+ ],
605
+ "expression": {
606
+ "argumentTypes": [
607
+ {
608
+ "typeIdentifier": "t_address",
609
+ "typeString": "address"
610
+ }
611
+ ],
612
+ "id": 45,
613
+ "name": "_transferOwnership",
614
+ "nodeType": "Identifier",
615
+ "overloadedDeclarations": [],
616
+ "referencedDeclaration": 146,
617
+ "src": "1373:18:0",
618
+ "typeDescriptions": {
619
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
620
+ "typeString": "function (address)"
621
+ }
622
+ },
623
+ "id": 47,
624
+ "isConstant": false,
625
+ "isLValue": false,
626
+ "isPure": false,
627
+ "kind": "functionCall",
628
+ "lValueRequested": false,
629
+ "nameLocations": [],
630
+ "names": [],
631
+ "nodeType": "FunctionCall",
632
+ "src": "1373:32:0",
633
+ "tryCall": false,
634
+ "typeDescriptions": {
635
+ "typeIdentifier": "t_tuple$__$",
636
+ "typeString": "tuple()"
637
+ }
638
+ },
639
+ "id": 48,
640
+ "nodeType": "ExpressionStatement",
641
+ "src": "1373:32:0"
642
+ }
643
+ ]
644
+ },
645
+ "documentation": {
646
+ "id": 25,
647
+ "nodeType": "StructuredDocumentation",
648
+ "src": "1105:115:0",
649
+ "text": " @dev Initializes the contract setting the address provided by the deployer as the initial owner."
650
+ },
651
+ "id": 50,
652
+ "implemented": true,
653
+ "kind": "constructor",
654
+ "modifiers": [],
655
+ "name": "",
656
+ "nameLocation": "-1:-1:-1",
657
+ "nodeType": "FunctionDefinition",
658
+ "parameters": {
659
+ "id": 28,
660
+ "nodeType": "ParameterList",
661
+ "parameters": [
662
+ {
663
+ "constant": false,
664
+ "id": 27,
665
+ "mutability": "mutable",
666
+ "name": "initialOwner",
667
+ "nameLocation": "1245:12:0",
668
+ "nodeType": "VariableDeclaration",
669
+ "scope": 50,
670
+ "src": "1237:20:0",
671
+ "stateVariable": false,
672
+ "storageLocation": "default",
673
+ "typeDescriptions": {
674
+ "typeIdentifier": "t_address",
675
+ "typeString": "address"
676
+ },
677
+ "typeName": {
678
+ "id": 26,
679
+ "name": "address",
680
+ "nodeType": "ElementaryTypeName",
681
+ "src": "1237:7:0",
682
+ "stateMutability": "nonpayable",
683
+ "typeDescriptions": {
684
+ "typeIdentifier": "t_address",
685
+ "typeString": "address"
686
+ }
687
+ },
688
+ "visibility": "internal"
689
+ }
690
+ ],
691
+ "src": "1236:22:0"
692
+ },
693
+ "returnParameters": {
694
+ "id": 29,
695
+ "nodeType": "ParameterList",
696
+ "parameters": [],
697
+ "src": "1259:0:0"
698
+ },
699
+ "scope": 147,
700
+ "src": "1225:187:0",
701
+ "stateMutability": "nonpayable",
702
+ "virtual": false,
703
+ "visibility": "internal"
704
+ },
705
+ {
706
+ "body": {
707
+ "id": 57,
708
+ "nodeType": "Block",
709
+ "src": "1521:41:0",
710
+ "statements": [
711
+ {
712
+ "expression": {
713
+ "arguments": [],
714
+ "expression": {
715
+ "argumentTypes": [],
716
+ "id": 53,
717
+ "name": "_checkOwner",
718
+ "nodeType": "Identifier",
719
+ "overloadedDeclarations": [],
720
+ "referencedDeclaration": 84,
721
+ "src": "1531:11:0",
722
+ "typeDescriptions": {
723
+ "typeIdentifier": "t_function_internal_view$__$returns$__$",
724
+ "typeString": "function () view"
725
+ }
726
+ },
727
+ "id": 54,
728
+ "isConstant": false,
729
+ "isLValue": false,
730
+ "isPure": false,
731
+ "kind": "functionCall",
732
+ "lValueRequested": false,
733
+ "nameLocations": [],
734
+ "names": [],
735
+ "nodeType": "FunctionCall",
736
+ "src": "1531:13:0",
737
+ "tryCall": false,
738
+ "typeDescriptions": {
739
+ "typeIdentifier": "t_tuple$__$",
740
+ "typeString": "tuple()"
741
+ }
742
+ },
743
+ "id": 55,
744
+ "nodeType": "ExpressionStatement",
745
+ "src": "1531:13:0"
746
+ },
747
+ {
748
+ "id": 56,
749
+ "nodeType": "PlaceholderStatement",
750
+ "src": "1554:1:0"
751
+ }
752
+ ]
753
+ },
754
+ "documentation": {
755
+ "id": 51,
756
+ "nodeType": "StructuredDocumentation",
757
+ "src": "1418:77:0",
758
+ "text": " @dev Throws if called by any account other than the owner."
759
+ },
760
+ "id": 58,
761
+ "name": "onlyOwner",
762
+ "nameLocation": "1509:9:0",
763
+ "nodeType": "ModifierDefinition",
764
+ "parameters": {
765
+ "id": 52,
766
+ "nodeType": "ParameterList",
767
+ "parameters": [],
768
+ "src": "1518:2:0"
769
+ },
770
+ "src": "1500:62:0",
771
+ "virtual": false,
772
+ "visibility": "internal"
773
+ },
774
+ {
775
+ "body": {
776
+ "id": 66,
777
+ "nodeType": "Block",
778
+ "src": "1693:30:0",
779
+ "statements": [
780
+ {
781
+ "expression": {
782
+ "id": 64,
783
+ "name": "_owner",
784
+ "nodeType": "Identifier",
785
+ "overloadedDeclarations": [],
786
+ "referencedDeclaration": 8,
787
+ "src": "1710:6:0",
788
+ "typeDescriptions": {
789
+ "typeIdentifier": "t_address",
790
+ "typeString": "address"
791
+ }
792
+ },
793
+ "functionReturnParameters": 63,
794
+ "id": 65,
795
+ "nodeType": "Return",
796
+ "src": "1703:13:0"
797
+ }
798
+ ]
799
+ },
800
+ "documentation": {
801
+ "id": 59,
802
+ "nodeType": "StructuredDocumentation",
803
+ "src": "1568:65:0",
804
+ "text": " @dev Returns the address of the current owner."
805
+ },
806
+ "functionSelector": "8da5cb5b",
807
+ "id": 67,
808
+ "implemented": true,
809
+ "kind": "function",
810
+ "modifiers": [],
811
+ "name": "owner",
812
+ "nameLocation": "1647:5:0",
813
+ "nodeType": "FunctionDefinition",
814
+ "parameters": {
815
+ "id": 60,
816
+ "nodeType": "ParameterList",
817
+ "parameters": [],
818
+ "src": "1652:2:0"
819
+ },
820
+ "returnParameters": {
821
+ "id": 63,
822
+ "nodeType": "ParameterList",
823
+ "parameters": [
824
+ {
825
+ "constant": false,
826
+ "id": 62,
827
+ "mutability": "mutable",
828
+ "name": "",
829
+ "nameLocation": "-1:-1:-1",
830
+ "nodeType": "VariableDeclaration",
831
+ "scope": 67,
832
+ "src": "1684:7:0",
833
+ "stateVariable": false,
834
+ "storageLocation": "default",
835
+ "typeDescriptions": {
836
+ "typeIdentifier": "t_address",
837
+ "typeString": "address"
838
+ },
839
+ "typeName": {
840
+ "id": 61,
841
+ "name": "address",
842
+ "nodeType": "ElementaryTypeName",
843
+ "src": "1684:7:0",
844
+ "stateMutability": "nonpayable",
845
+ "typeDescriptions": {
846
+ "typeIdentifier": "t_address",
847
+ "typeString": "address"
848
+ }
849
+ },
850
+ "visibility": "internal"
851
+ }
852
+ ],
853
+ "src": "1683:9:0"
854
+ },
855
+ "scope": 147,
856
+ "src": "1638:85:0",
857
+ "stateMutability": "view",
858
+ "virtual": true,
859
+ "visibility": "public"
860
+ },
861
+ {
862
+ "body": {
863
+ "id": 83,
864
+ "nodeType": "Block",
865
+ "src": "1841:117:0",
866
+ "statements": [
867
+ {
868
+ "condition": {
869
+ "commonType": {
870
+ "typeIdentifier": "t_address",
871
+ "typeString": "address"
872
+ },
873
+ "id": 75,
874
+ "isConstant": false,
875
+ "isLValue": false,
876
+ "isPure": false,
877
+ "lValueRequested": false,
878
+ "leftExpression": {
879
+ "arguments": [],
880
+ "expression": {
881
+ "argumentTypes": [],
882
+ "id": 71,
883
+ "name": "owner",
884
+ "nodeType": "Identifier",
885
+ "overloadedDeclarations": [],
886
+ "referencedDeclaration": 67,
887
+ "src": "1855:5:0",
888
+ "typeDescriptions": {
889
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
890
+ "typeString": "function () view returns (address)"
891
+ }
892
+ },
893
+ "id": 72,
894
+ "isConstant": false,
895
+ "isLValue": false,
896
+ "isPure": false,
897
+ "kind": "functionCall",
898
+ "lValueRequested": false,
899
+ "nameLocations": [],
900
+ "names": [],
901
+ "nodeType": "FunctionCall",
902
+ "src": "1855:7:0",
903
+ "tryCall": false,
904
+ "typeDescriptions": {
905
+ "typeIdentifier": "t_address",
906
+ "typeString": "address"
907
+ }
908
+ },
909
+ "nodeType": "BinaryOperation",
910
+ "operator": "!=",
911
+ "rightExpression": {
912
+ "arguments": [],
913
+ "expression": {
914
+ "argumentTypes": [],
915
+ "id": 73,
916
+ "name": "_msgSender",
917
+ "nodeType": "Identifier",
918
+ "overloadedDeclarations": [],
919
+ "referencedDeclaration": 2327,
920
+ "src": "1866:10:0",
921
+ "typeDescriptions": {
922
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
923
+ "typeString": "function () view returns (address)"
924
+ }
925
+ },
926
+ "id": 74,
927
+ "isConstant": false,
928
+ "isLValue": false,
929
+ "isPure": false,
930
+ "kind": "functionCall",
931
+ "lValueRequested": false,
932
+ "nameLocations": [],
933
+ "names": [],
934
+ "nodeType": "FunctionCall",
935
+ "src": "1866:12:0",
936
+ "tryCall": false,
937
+ "typeDescriptions": {
938
+ "typeIdentifier": "t_address",
939
+ "typeString": "address"
940
+ }
941
+ },
942
+ "src": "1855:23:0",
943
+ "typeDescriptions": {
944
+ "typeIdentifier": "t_bool",
945
+ "typeString": "bool"
946
+ }
947
+ },
948
+ "id": 82,
949
+ "nodeType": "IfStatement",
950
+ "src": "1851:101:0",
951
+ "trueBody": {
952
+ "id": 81,
953
+ "nodeType": "Block",
954
+ "src": "1880:72:0",
955
+ "statements": [
956
+ {
957
+ "errorCall": {
958
+ "arguments": [
959
+ {
960
+ "arguments": [],
961
+ "expression": {
962
+ "argumentTypes": [],
963
+ "id": 77,
964
+ "name": "_msgSender",
965
+ "nodeType": "Identifier",
966
+ "overloadedDeclarations": [],
967
+ "referencedDeclaration": 2327,
968
+ "src": "1928:10:0",
969
+ "typeDescriptions": {
970
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
971
+ "typeString": "function () view returns (address)"
972
+ }
973
+ },
974
+ "id": 78,
975
+ "isConstant": false,
976
+ "isLValue": false,
977
+ "isPure": false,
978
+ "kind": "functionCall",
979
+ "lValueRequested": false,
980
+ "nameLocations": [],
981
+ "names": [],
982
+ "nodeType": "FunctionCall",
983
+ "src": "1928:12:0",
984
+ "tryCall": false,
985
+ "typeDescriptions": {
986
+ "typeIdentifier": "t_address",
987
+ "typeString": "address"
988
+ }
989
+ }
990
+ ],
991
+ "expression": {
992
+ "argumentTypes": [
993
+ {
994
+ "typeIdentifier": "t_address",
995
+ "typeString": "address"
996
+ }
997
+ ],
998
+ "id": 76,
999
+ "name": "OwnableUnauthorizedAccount",
1000
+ "nodeType": "Identifier",
1001
+ "overloadedDeclarations": [],
1002
+ "referencedDeclaration": 13,
1003
+ "src": "1901:26:0",
1004
+ "typeDescriptions": {
1005
+ "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$",
1006
+ "typeString": "function (address) pure"
1007
+ }
1008
+ },
1009
+ "id": 79,
1010
+ "isConstant": false,
1011
+ "isLValue": false,
1012
+ "isPure": false,
1013
+ "kind": "functionCall",
1014
+ "lValueRequested": false,
1015
+ "nameLocations": [],
1016
+ "names": [],
1017
+ "nodeType": "FunctionCall",
1018
+ "src": "1901:40:0",
1019
+ "tryCall": false,
1020
+ "typeDescriptions": {
1021
+ "typeIdentifier": "t_tuple$__$",
1022
+ "typeString": "tuple()"
1023
+ }
1024
+ },
1025
+ "id": 80,
1026
+ "nodeType": "RevertStatement",
1027
+ "src": "1894:47:0"
1028
+ }
1029
+ ]
1030
+ }
1031
+ }
1032
+ ]
1033
+ },
1034
+ "documentation": {
1035
+ "id": 68,
1036
+ "nodeType": "StructuredDocumentation",
1037
+ "src": "1729:62:0",
1038
+ "text": " @dev Throws if the sender is not the owner."
1039
+ },
1040
+ "id": 84,
1041
+ "implemented": true,
1042
+ "kind": "function",
1043
+ "modifiers": [],
1044
+ "name": "_checkOwner",
1045
+ "nameLocation": "1805:11:0",
1046
+ "nodeType": "FunctionDefinition",
1047
+ "parameters": {
1048
+ "id": 69,
1049
+ "nodeType": "ParameterList",
1050
+ "parameters": [],
1051
+ "src": "1816:2:0"
1052
+ },
1053
+ "returnParameters": {
1054
+ "id": 70,
1055
+ "nodeType": "ParameterList",
1056
+ "parameters": [],
1057
+ "src": "1841:0:0"
1058
+ },
1059
+ "scope": 147,
1060
+ "src": "1796:162:0",
1061
+ "stateMutability": "view",
1062
+ "virtual": true,
1063
+ "visibility": "internal"
1064
+ },
1065
+ {
1066
+ "body": {
1067
+ "id": 97,
1068
+ "nodeType": "Block",
1069
+ "src": "2347:47:0",
1070
+ "statements": [
1071
+ {
1072
+ "expression": {
1073
+ "arguments": [
1074
+ {
1075
+ "arguments": [
1076
+ {
1077
+ "hexValue": "30",
1078
+ "id": 93,
1079
+ "isConstant": false,
1080
+ "isLValue": false,
1081
+ "isPure": true,
1082
+ "kind": "number",
1083
+ "lValueRequested": false,
1084
+ "nodeType": "Literal",
1085
+ "src": "2384:1:0",
1086
+ "typeDescriptions": {
1087
+ "typeIdentifier": "t_rational_0_by_1",
1088
+ "typeString": "int_const 0"
1089
+ },
1090
+ "value": "0"
1091
+ }
1092
+ ],
1093
+ "expression": {
1094
+ "argumentTypes": [
1095
+ {
1096
+ "typeIdentifier": "t_rational_0_by_1",
1097
+ "typeString": "int_const 0"
1098
+ }
1099
+ ],
1100
+ "id": 92,
1101
+ "isConstant": false,
1102
+ "isLValue": false,
1103
+ "isPure": true,
1104
+ "lValueRequested": false,
1105
+ "nodeType": "ElementaryTypeNameExpression",
1106
+ "src": "2376:7:0",
1107
+ "typeDescriptions": {
1108
+ "typeIdentifier": "t_type$_t_address_$",
1109
+ "typeString": "type(address)"
1110
+ },
1111
+ "typeName": {
1112
+ "id": 91,
1113
+ "name": "address",
1114
+ "nodeType": "ElementaryTypeName",
1115
+ "src": "2376:7:0",
1116
+ "typeDescriptions": {}
1117
+ }
1118
+ },
1119
+ "id": 94,
1120
+ "isConstant": false,
1121
+ "isLValue": false,
1122
+ "isPure": true,
1123
+ "kind": "typeConversion",
1124
+ "lValueRequested": false,
1125
+ "nameLocations": [],
1126
+ "names": [],
1127
+ "nodeType": "FunctionCall",
1128
+ "src": "2376:10:0",
1129
+ "tryCall": false,
1130
+ "typeDescriptions": {
1131
+ "typeIdentifier": "t_address",
1132
+ "typeString": "address"
1133
+ }
1134
+ }
1135
+ ],
1136
+ "expression": {
1137
+ "argumentTypes": [
1138
+ {
1139
+ "typeIdentifier": "t_address",
1140
+ "typeString": "address"
1141
+ }
1142
+ ],
1143
+ "id": 90,
1144
+ "name": "_transferOwnership",
1145
+ "nodeType": "Identifier",
1146
+ "overloadedDeclarations": [],
1147
+ "referencedDeclaration": 146,
1148
+ "src": "2357:18:0",
1149
+ "typeDescriptions": {
1150
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
1151
+ "typeString": "function (address)"
1152
+ }
1153
+ },
1154
+ "id": 95,
1155
+ "isConstant": false,
1156
+ "isLValue": false,
1157
+ "isPure": false,
1158
+ "kind": "functionCall",
1159
+ "lValueRequested": false,
1160
+ "nameLocations": [],
1161
+ "names": [],
1162
+ "nodeType": "FunctionCall",
1163
+ "src": "2357:30:0",
1164
+ "tryCall": false,
1165
+ "typeDescriptions": {
1166
+ "typeIdentifier": "t_tuple$__$",
1167
+ "typeString": "tuple()"
1168
+ }
1169
+ },
1170
+ "id": 96,
1171
+ "nodeType": "ExpressionStatement",
1172
+ "src": "2357:30:0"
1173
+ }
1174
+ ]
1175
+ },
1176
+ "documentation": {
1177
+ "id": 85,
1178
+ "nodeType": "StructuredDocumentation",
1179
+ "src": "1964:324:0",
1180
+ "text": " @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby disabling any functionality that is only available to the owner."
1181
+ },
1182
+ "functionSelector": "715018a6",
1183
+ "id": 98,
1184
+ "implemented": true,
1185
+ "kind": "function",
1186
+ "modifiers": [
1187
+ {
1188
+ "id": 88,
1189
+ "kind": "modifierInvocation",
1190
+ "modifierName": {
1191
+ "id": 87,
1192
+ "name": "onlyOwner",
1193
+ "nameLocations": [
1194
+ "2337:9:0"
1195
+ ],
1196
+ "nodeType": "IdentifierPath",
1197
+ "referencedDeclaration": 58,
1198
+ "src": "2337:9:0"
1199
+ },
1200
+ "nodeType": "ModifierInvocation",
1201
+ "src": "2337:9:0"
1202
+ }
1203
+ ],
1204
+ "name": "renounceOwnership",
1205
+ "nameLocation": "2302:17:0",
1206
+ "nodeType": "FunctionDefinition",
1207
+ "parameters": {
1208
+ "id": 86,
1209
+ "nodeType": "ParameterList",
1210
+ "parameters": [],
1211
+ "src": "2319:2:0"
1212
+ },
1213
+ "returnParameters": {
1214
+ "id": 89,
1215
+ "nodeType": "ParameterList",
1216
+ "parameters": [],
1217
+ "src": "2347:0:0"
1218
+ },
1219
+ "scope": 147,
1220
+ "src": "2293:101:0",
1221
+ "stateMutability": "nonpayable",
1222
+ "virtual": true,
1223
+ "visibility": "public"
1224
+ },
1225
+ {
1226
+ "body": {
1227
+ "id": 125,
1228
+ "nodeType": "Block",
1229
+ "src": "2613:145:0",
1230
+ "statements": [
1231
+ {
1232
+ "condition": {
1233
+ "commonType": {
1234
+ "typeIdentifier": "t_address",
1235
+ "typeString": "address"
1236
+ },
1237
+ "id": 111,
1238
+ "isConstant": false,
1239
+ "isLValue": false,
1240
+ "isPure": false,
1241
+ "lValueRequested": false,
1242
+ "leftExpression": {
1243
+ "id": 106,
1244
+ "name": "newOwner",
1245
+ "nodeType": "Identifier",
1246
+ "overloadedDeclarations": [],
1247
+ "referencedDeclaration": 101,
1248
+ "src": "2627:8:0",
1249
+ "typeDescriptions": {
1250
+ "typeIdentifier": "t_address",
1251
+ "typeString": "address"
1252
+ }
1253
+ },
1254
+ "nodeType": "BinaryOperation",
1255
+ "operator": "==",
1256
+ "rightExpression": {
1257
+ "arguments": [
1258
+ {
1259
+ "hexValue": "30",
1260
+ "id": 109,
1261
+ "isConstant": false,
1262
+ "isLValue": false,
1263
+ "isPure": true,
1264
+ "kind": "number",
1265
+ "lValueRequested": false,
1266
+ "nodeType": "Literal",
1267
+ "src": "2647:1:0",
1268
+ "typeDescriptions": {
1269
+ "typeIdentifier": "t_rational_0_by_1",
1270
+ "typeString": "int_const 0"
1271
+ },
1272
+ "value": "0"
1273
+ }
1274
+ ],
1275
+ "expression": {
1276
+ "argumentTypes": [
1277
+ {
1278
+ "typeIdentifier": "t_rational_0_by_1",
1279
+ "typeString": "int_const 0"
1280
+ }
1281
+ ],
1282
+ "id": 108,
1283
+ "isConstant": false,
1284
+ "isLValue": false,
1285
+ "isPure": true,
1286
+ "lValueRequested": false,
1287
+ "nodeType": "ElementaryTypeNameExpression",
1288
+ "src": "2639:7:0",
1289
+ "typeDescriptions": {
1290
+ "typeIdentifier": "t_type$_t_address_$",
1291
+ "typeString": "type(address)"
1292
+ },
1293
+ "typeName": {
1294
+ "id": 107,
1295
+ "name": "address",
1296
+ "nodeType": "ElementaryTypeName",
1297
+ "src": "2639:7:0",
1298
+ "typeDescriptions": {}
1299
+ }
1300
+ },
1301
+ "id": 110,
1302
+ "isConstant": false,
1303
+ "isLValue": false,
1304
+ "isPure": true,
1305
+ "kind": "typeConversion",
1306
+ "lValueRequested": false,
1307
+ "nameLocations": [],
1308
+ "names": [],
1309
+ "nodeType": "FunctionCall",
1310
+ "src": "2639:10:0",
1311
+ "tryCall": false,
1312
+ "typeDescriptions": {
1313
+ "typeIdentifier": "t_address",
1314
+ "typeString": "address"
1315
+ }
1316
+ },
1317
+ "src": "2627:22:0",
1318
+ "typeDescriptions": {
1319
+ "typeIdentifier": "t_bool",
1320
+ "typeString": "bool"
1321
+ }
1322
+ },
1323
+ "id": 120,
1324
+ "nodeType": "IfStatement",
1325
+ "src": "2623:91:0",
1326
+ "trueBody": {
1327
+ "id": 119,
1328
+ "nodeType": "Block",
1329
+ "src": "2651:63:0",
1330
+ "statements": [
1331
+ {
1332
+ "errorCall": {
1333
+ "arguments": [
1334
+ {
1335
+ "arguments": [
1336
+ {
1337
+ "hexValue": "30",
1338
+ "id": 115,
1339
+ "isConstant": false,
1340
+ "isLValue": false,
1341
+ "isPure": true,
1342
+ "kind": "number",
1343
+ "lValueRequested": false,
1344
+ "nodeType": "Literal",
1345
+ "src": "2700:1:0",
1346
+ "typeDescriptions": {
1347
+ "typeIdentifier": "t_rational_0_by_1",
1348
+ "typeString": "int_const 0"
1349
+ },
1350
+ "value": "0"
1351
+ }
1352
+ ],
1353
+ "expression": {
1354
+ "argumentTypes": [
1355
+ {
1356
+ "typeIdentifier": "t_rational_0_by_1",
1357
+ "typeString": "int_const 0"
1358
+ }
1359
+ ],
1360
+ "id": 114,
1361
+ "isConstant": false,
1362
+ "isLValue": false,
1363
+ "isPure": true,
1364
+ "lValueRequested": false,
1365
+ "nodeType": "ElementaryTypeNameExpression",
1366
+ "src": "2692:7:0",
1367
+ "typeDescriptions": {
1368
+ "typeIdentifier": "t_type$_t_address_$",
1369
+ "typeString": "type(address)"
1370
+ },
1371
+ "typeName": {
1372
+ "id": 113,
1373
+ "name": "address",
1374
+ "nodeType": "ElementaryTypeName",
1375
+ "src": "2692:7:0",
1376
+ "typeDescriptions": {}
1377
+ }
1378
+ },
1379
+ "id": 116,
1380
+ "isConstant": false,
1381
+ "isLValue": false,
1382
+ "isPure": true,
1383
+ "kind": "typeConversion",
1384
+ "lValueRequested": false,
1385
+ "nameLocations": [],
1386
+ "names": [],
1387
+ "nodeType": "FunctionCall",
1388
+ "src": "2692:10:0",
1389
+ "tryCall": false,
1390
+ "typeDescriptions": {
1391
+ "typeIdentifier": "t_address",
1392
+ "typeString": "address"
1393
+ }
1394
+ }
1395
+ ],
1396
+ "expression": {
1397
+ "argumentTypes": [
1398
+ {
1399
+ "typeIdentifier": "t_address",
1400
+ "typeString": "address"
1401
+ }
1402
+ ],
1403
+ "id": 112,
1404
+ "name": "OwnableInvalidOwner",
1405
+ "nodeType": "Identifier",
1406
+ "overloadedDeclarations": [],
1407
+ "referencedDeclaration": 18,
1408
+ "src": "2672:19:0",
1409
+ "typeDescriptions": {
1410
+ "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$",
1411
+ "typeString": "function (address) pure"
1412
+ }
1413
+ },
1414
+ "id": 117,
1415
+ "isConstant": false,
1416
+ "isLValue": false,
1417
+ "isPure": false,
1418
+ "kind": "functionCall",
1419
+ "lValueRequested": false,
1420
+ "nameLocations": [],
1421
+ "names": [],
1422
+ "nodeType": "FunctionCall",
1423
+ "src": "2672:31:0",
1424
+ "tryCall": false,
1425
+ "typeDescriptions": {
1426
+ "typeIdentifier": "t_tuple$__$",
1427
+ "typeString": "tuple()"
1428
+ }
1429
+ },
1430
+ "id": 118,
1431
+ "nodeType": "RevertStatement",
1432
+ "src": "2665:38:0"
1433
+ }
1434
+ ]
1435
+ }
1436
+ },
1437
+ {
1438
+ "expression": {
1439
+ "arguments": [
1440
+ {
1441
+ "id": 122,
1442
+ "name": "newOwner",
1443
+ "nodeType": "Identifier",
1444
+ "overloadedDeclarations": [],
1445
+ "referencedDeclaration": 101,
1446
+ "src": "2742:8:0",
1447
+ "typeDescriptions": {
1448
+ "typeIdentifier": "t_address",
1449
+ "typeString": "address"
1450
+ }
1451
+ }
1452
+ ],
1453
+ "expression": {
1454
+ "argumentTypes": [
1455
+ {
1456
+ "typeIdentifier": "t_address",
1457
+ "typeString": "address"
1458
+ }
1459
+ ],
1460
+ "id": 121,
1461
+ "name": "_transferOwnership",
1462
+ "nodeType": "Identifier",
1463
+ "overloadedDeclarations": [],
1464
+ "referencedDeclaration": 146,
1465
+ "src": "2723:18:0",
1466
+ "typeDescriptions": {
1467
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
1468
+ "typeString": "function (address)"
1469
+ }
1470
+ },
1471
+ "id": 123,
1472
+ "isConstant": false,
1473
+ "isLValue": false,
1474
+ "isPure": false,
1475
+ "kind": "functionCall",
1476
+ "lValueRequested": false,
1477
+ "nameLocations": [],
1478
+ "names": [],
1479
+ "nodeType": "FunctionCall",
1480
+ "src": "2723:28:0",
1481
+ "tryCall": false,
1482
+ "typeDescriptions": {
1483
+ "typeIdentifier": "t_tuple$__$",
1484
+ "typeString": "tuple()"
1485
+ }
1486
+ },
1487
+ "id": 124,
1488
+ "nodeType": "ExpressionStatement",
1489
+ "src": "2723:28:0"
1490
+ }
1491
+ ]
1492
+ },
1493
+ "documentation": {
1494
+ "id": 99,
1495
+ "nodeType": "StructuredDocumentation",
1496
+ "src": "2400:138:0",
1497
+ "text": " @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."
1498
+ },
1499
+ "functionSelector": "f2fde38b",
1500
+ "id": 126,
1501
+ "implemented": true,
1502
+ "kind": "function",
1503
+ "modifiers": [
1504
+ {
1505
+ "id": 104,
1506
+ "kind": "modifierInvocation",
1507
+ "modifierName": {
1508
+ "id": 103,
1509
+ "name": "onlyOwner",
1510
+ "nameLocations": [
1511
+ "2603:9:0"
1512
+ ],
1513
+ "nodeType": "IdentifierPath",
1514
+ "referencedDeclaration": 58,
1515
+ "src": "2603:9:0"
1516
+ },
1517
+ "nodeType": "ModifierInvocation",
1518
+ "src": "2603:9:0"
1519
+ }
1520
+ ],
1521
+ "name": "transferOwnership",
1522
+ "nameLocation": "2552:17:0",
1523
+ "nodeType": "FunctionDefinition",
1524
+ "parameters": {
1525
+ "id": 102,
1526
+ "nodeType": "ParameterList",
1527
+ "parameters": [
1528
+ {
1529
+ "constant": false,
1530
+ "id": 101,
1531
+ "mutability": "mutable",
1532
+ "name": "newOwner",
1533
+ "nameLocation": "2578:8:0",
1534
+ "nodeType": "VariableDeclaration",
1535
+ "scope": 126,
1536
+ "src": "2570:16:0",
1537
+ "stateVariable": false,
1538
+ "storageLocation": "default",
1539
+ "typeDescriptions": {
1540
+ "typeIdentifier": "t_address",
1541
+ "typeString": "address"
1542
+ },
1543
+ "typeName": {
1544
+ "id": 100,
1545
+ "name": "address",
1546
+ "nodeType": "ElementaryTypeName",
1547
+ "src": "2570:7:0",
1548
+ "stateMutability": "nonpayable",
1549
+ "typeDescriptions": {
1550
+ "typeIdentifier": "t_address",
1551
+ "typeString": "address"
1552
+ }
1553
+ },
1554
+ "visibility": "internal"
1555
+ }
1556
+ ],
1557
+ "src": "2569:18:0"
1558
+ },
1559
+ "returnParameters": {
1560
+ "id": 105,
1561
+ "nodeType": "ParameterList",
1562
+ "parameters": [],
1563
+ "src": "2613:0:0"
1564
+ },
1565
+ "scope": 147,
1566
+ "src": "2543:215:0",
1567
+ "stateMutability": "nonpayable",
1568
+ "virtual": true,
1569
+ "visibility": "public"
1570
+ },
1571
+ {
1572
+ "body": {
1573
+ "id": 145,
1574
+ "nodeType": "Block",
1575
+ "src": "2975:124:0",
1576
+ "statements": [
1577
+ {
1578
+ "assignments": [
1579
+ 133
1580
+ ],
1581
+ "declarations": [
1582
+ {
1583
+ "constant": false,
1584
+ "id": 133,
1585
+ "mutability": "mutable",
1586
+ "name": "oldOwner",
1587
+ "nameLocation": "2993:8:0",
1588
+ "nodeType": "VariableDeclaration",
1589
+ "scope": 145,
1590
+ "src": "2985:16:0",
1591
+ "stateVariable": false,
1592
+ "storageLocation": "default",
1593
+ "typeDescriptions": {
1594
+ "typeIdentifier": "t_address",
1595
+ "typeString": "address"
1596
+ },
1597
+ "typeName": {
1598
+ "id": 132,
1599
+ "name": "address",
1600
+ "nodeType": "ElementaryTypeName",
1601
+ "src": "2985:7:0",
1602
+ "stateMutability": "nonpayable",
1603
+ "typeDescriptions": {
1604
+ "typeIdentifier": "t_address",
1605
+ "typeString": "address"
1606
+ }
1607
+ },
1608
+ "visibility": "internal"
1609
+ }
1610
+ ],
1611
+ "id": 135,
1612
+ "initialValue": {
1613
+ "id": 134,
1614
+ "name": "_owner",
1615
+ "nodeType": "Identifier",
1616
+ "overloadedDeclarations": [],
1617
+ "referencedDeclaration": 8,
1618
+ "src": "3004:6:0",
1619
+ "typeDescriptions": {
1620
+ "typeIdentifier": "t_address",
1621
+ "typeString": "address"
1622
+ }
1623
+ },
1624
+ "nodeType": "VariableDeclarationStatement",
1625
+ "src": "2985:25:0"
1626
+ },
1627
+ {
1628
+ "expression": {
1629
+ "id": 138,
1630
+ "isConstant": false,
1631
+ "isLValue": false,
1632
+ "isPure": false,
1633
+ "lValueRequested": false,
1634
+ "leftHandSide": {
1635
+ "id": 136,
1636
+ "name": "_owner",
1637
+ "nodeType": "Identifier",
1638
+ "overloadedDeclarations": [],
1639
+ "referencedDeclaration": 8,
1640
+ "src": "3020:6:0",
1641
+ "typeDescriptions": {
1642
+ "typeIdentifier": "t_address",
1643
+ "typeString": "address"
1644
+ }
1645
+ },
1646
+ "nodeType": "Assignment",
1647
+ "operator": "=",
1648
+ "rightHandSide": {
1649
+ "id": 137,
1650
+ "name": "newOwner",
1651
+ "nodeType": "Identifier",
1652
+ "overloadedDeclarations": [],
1653
+ "referencedDeclaration": 129,
1654
+ "src": "3029:8:0",
1655
+ "typeDescriptions": {
1656
+ "typeIdentifier": "t_address",
1657
+ "typeString": "address"
1658
+ }
1659
+ },
1660
+ "src": "3020:17:0",
1661
+ "typeDescriptions": {
1662
+ "typeIdentifier": "t_address",
1663
+ "typeString": "address"
1664
+ }
1665
+ },
1666
+ "id": 139,
1667
+ "nodeType": "ExpressionStatement",
1668
+ "src": "3020:17:0"
1669
+ },
1670
+ {
1671
+ "eventCall": {
1672
+ "arguments": [
1673
+ {
1674
+ "id": 141,
1675
+ "name": "oldOwner",
1676
+ "nodeType": "Identifier",
1677
+ "overloadedDeclarations": [],
1678
+ "referencedDeclaration": 133,
1679
+ "src": "3073:8:0",
1680
+ "typeDescriptions": {
1681
+ "typeIdentifier": "t_address",
1682
+ "typeString": "address"
1683
+ }
1684
+ },
1685
+ {
1686
+ "id": 142,
1687
+ "name": "newOwner",
1688
+ "nodeType": "Identifier",
1689
+ "overloadedDeclarations": [],
1690
+ "referencedDeclaration": 129,
1691
+ "src": "3083:8:0",
1692
+ "typeDescriptions": {
1693
+ "typeIdentifier": "t_address",
1694
+ "typeString": "address"
1695
+ }
1696
+ }
1697
+ ],
1698
+ "expression": {
1699
+ "argumentTypes": [
1700
+ {
1701
+ "typeIdentifier": "t_address",
1702
+ "typeString": "address"
1703
+ },
1704
+ {
1705
+ "typeIdentifier": "t_address",
1706
+ "typeString": "address"
1707
+ }
1708
+ ],
1709
+ "id": 140,
1710
+ "name": "OwnershipTransferred",
1711
+ "nodeType": "Identifier",
1712
+ "overloadedDeclarations": [],
1713
+ "referencedDeclaration": 24,
1714
+ "src": "3052:20:0",
1715
+ "typeDescriptions": {
1716
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
1717
+ "typeString": "function (address,address)"
1718
+ }
1719
+ },
1720
+ "id": 143,
1721
+ "isConstant": false,
1722
+ "isLValue": false,
1723
+ "isPure": false,
1724
+ "kind": "functionCall",
1725
+ "lValueRequested": false,
1726
+ "nameLocations": [],
1727
+ "names": [],
1728
+ "nodeType": "FunctionCall",
1729
+ "src": "3052:40:0",
1730
+ "tryCall": false,
1731
+ "typeDescriptions": {
1732
+ "typeIdentifier": "t_tuple$__$",
1733
+ "typeString": "tuple()"
1734
+ }
1735
+ },
1736
+ "id": 144,
1737
+ "nodeType": "EmitStatement",
1738
+ "src": "3047:45:0"
1739
+ }
1740
+ ]
1741
+ },
1742
+ "documentation": {
1743
+ "id": 127,
1744
+ "nodeType": "StructuredDocumentation",
1745
+ "src": "2764:143:0",
1746
+ "text": " @dev Transfers ownership of the contract to a new account (`newOwner`).\n Internal function without access restriction."
1747
+ },
1748
+ "id": 146,
1749
+ "implemented": true,
1750
+ "kind": "function",
1751
+ "modifiers": [],
1752
+ "name": "_transferOwnership",
1753
+ "nameLocation": "2921:18:0",
1754
+ "nodeType": "FunctionDefinition",
1755
+ "parameters": {
1756
+ "id": 130,
1757
+ "nodeType": "ParameterList",
1758
+ "parameters": [
1759
+ {
1760
+ "constant": false,
1761
+ "id": 129,
1762
+ "mutability": "mutable",
1763
+ "name": "newOwner",
1764
+ "nameLocation": "2948:8:0",
1765
+ "nodeType": "VariableDeclaration",
1766
+ "scope": 146,
1767
+ "src": "2940:16:0",
1768
+ "stateVariable": false,
1769
+ "storageLocation": "default",
1770
+ "typeDescriptions": {
1771
+ "typeIdentifier": "t_address",
1772
+ "typeString": "address"
1773
+ },
1774
+ "typeName": {
1775
+ "id": 128,
1776
+ "name": "address",
1777
+ "nodeType": "ElementaryTypeName",
1778
+ "src": "2940:7:0",
1779
+ "stateMutability": "nonpayable",
1780
+ "typeDescriptions": {
1781
+ "typeIdentifier": "t_address",
1782
+ "typeString": "address"
1783
+ }
1784
+ },
1785
+ "visibility": "internal"
1786
+ }
1787
+ ],
1788
+ "src": "2939:18:0"
1789
+ },
1790
+ "returnParameters": {
1791
+ "id": 131,
1792
+ "nodeType": "ParameterList",
1793
+ "parameters": [],
1794
+ "src": "2975:0:0"
1795
+ },
1796
+ "scope": 147,
1797
+ "src": "2912:187:0",
1798
+ "stateMutability": "nonpayable",
1799
+ "virtual": true,
1800
+ "visibility": "internal"
1801
+ }
1802
+ ],
1803
+ "scope": 148,
1804
+ "src": "663:2438:0",
1805
+ "usedErrors": [
1806
+ 13,
1807
+ 18
1808
+ ],
1809
+ "usedEvents": [
1810
+ 24
1811
+ ]
1812
+ }
1813
+ ],
1814
+ "src": "102:3000:0"
1815
+ },
1816
+ "compiler": {
1817
+ "name": "solc",
1818
+ "version": "0.8.21+commit.d9974bed.Emscripten.clang"
1819
+ },
1820
+ "networks": {},
1821
+ "schemaVersion": "3.4.16",
1822
+ "updatedAt": "2026-01-24T20:23:03.754Z",
1823
+ "devdoc": {
1824
+ "details": "Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. The initial owner is set to the address provided by the deployer. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.",
1825
+ "errors": {
1826
+ "OwnableInvalidOwner(address)": [
1827
+ {
1828
+ "details": "The owner is not a valid owner account. (eg. `address(0)`)"
1829
+ }
1830
+ ],
1831
+ "OwnableUnauthorizedAccount(address)": [
1832
+ {
1833
+ "details": "The caller account is not authorized to perform an operation."
1834
+ }
1835
+ ]
1836
+ },
1837
+ "kind": "dev",
1838
+ "methods": {
1839
+ "constructor": {
1840
+ "details": "Initializes the contract setting the address provided by the deployer as the initial owner."
1841
+ },
1842
+ "owner()": {
1843
+ "details": "Returns the address of the current owner."
1844
+ },
1845
+ "renounceOwnership()": {
1846
+ "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."
1847
+ },
1848
+ "transferOwnership(address)": {
1849
+ "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
1850
+ }
1851
+ },
1852
+ "version": 1
1853
+ },
1854
+ "userdoc": {
1855
+ "kind": "user",
1856
+ "methods": {},
1857
+ "version": 1
1858
+ }
1859
+ }