diff --git a/deployments/ronin-mainnet/OwnedMulticaller.json b/deployments/ronin-mainnet/OwnedMulticaller.json index dcc8851..6a8aed3 100644 --- a/deployments/ronin-mainnet/OwnedMulticaller.json +++ b/deployments/ronin-mainnet/OwnedMulticaller.json @@ -1,2609 +1,291 @@ { "abi": [ { + "type": "constructor", "inputs": [ { - "internalType": "address", "name": "owner_", - "type": "address" + "type": "address", + "internalType": "address" } ], - "stateMutability": "nonpayable", - "type": "constructor" + "stateMutability": "nonpayable" }, { - "anonymous": false, + "type": "function", + "name": "multicall", "inputs": [ { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" + "name": "tos", + "type": "address[]", + "internalType": "address[]" }, { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" + "name": "callDatas", + "type": "bytes[]", + "internalType": "bytes[]" + }, + { + "name": "values", + "type": "uint256[]", + "internalType": "uint256[]" } ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "inputs": [], - "name": "kill", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + "outputs": [ + { + "name": "results", + "type": "bool[]", + "internalType": "bool[]" + }, + { + "name": "returnDatas", + "type": "bytes[]", + "internalType": "bytes[]" + } + ], + "stateMutability": "payable" }, { + "type": "function", + "name": "onERC1155BatchReceived", "inputs": [ { - "internalType": "contract INSUnified", - "name": "rns", - "type": "address" + "name": "", + "type": "address", + "internalType": "address" }, { - "internalType": "uint256", - "name": "parentId", - "type": "uint256" + "name": "", + "type": "address", + "internalType": "address" }, { - "internalType": "address", - "name": "resolver", - "type": "address" + "name": "", + "type": "uint256[]", + "internalType": "uint256[]" }, { - "internalType": "uint64", - "name": "duration", - "type": "uint64" + "name": "", + "type": "uint256[]", + "internalType": "uint256[]" }, { - "internalType": "address[]", - "name": "tos", - "type": "address[]" - }, + "name": "", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ { - "internalType": "string[]", - "name": "labels", - "type": "string[]" + "name": "", + "type": "bytes4", + "internalType": "bytes4" } ], - "name": "multiMint", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + "stateMutability": "pure" }, { + "type": "function", + "name": "onERC1155Received", "inputs": [ { - "internalType": "address[]", - "name": "tos", - "type": "address[]" + "name": "", + "type": "address", + "internalType": "address" }, { - "internalType": "bytes[]", - "name": "callDatas", - "type": "bytes[]" + "name": "", + "type": "address", + "internalType": "address" }, { - "internalType": "uint256[]", - "name": "values", - "type": "uint256[]" + "name": "", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "", + "type": "bytes", + "internalType": "bytes" } ], - "name": "multicall", "outputs": [ { - "internalType": "bool[]", - "name": "results", - "type": "bool[]" + "name": "", + "type": "bytes4", + "internalType": "bytes4" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "onERC721Received", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" }, { - "internalType": "bytes[]", - "name": "returnDatas", - "type": "bytes[]" + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes4", + "internalType": "bytes4" } ], - "stateMutability": "payable", - "type": "function" + "stateMutability": "pure" }, { - "inputs": [], + "type": "function", "name": "owner", + "inputs": [], "outputs": [ { - "internalType": "address", "name": "", - "type": "address" + "type": "address", + "internalType": "address" } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { - "inputs": [], + "type": "function", "name": "renounceOwnership", + "inputs": [], "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + "stateMutability": "nonpayable" }, { + "type": "function", + "name": "supportsInterface", "inputs": [ { - "internalType": "address", - "name": "newOwner", - "type": "address" + "name": "interfaceId", + "type": "bytes4", + "internalType": "bytes4" } ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", "name": "transferOwnership", + "inputs": [ + { + "name": "newOwner", + "type": "address", + "internalType": "address" + } + ], "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { + "name": "previousOwner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newOwner", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false } ], - "address": "0x8975923D01132bEB6c412F827f63D44712726E13", - "args": "0x0000000000000000000000000f68edbe14c8f68481771016d7e2871d6a35de11", - "ast": { - "absolutePath": "src/utils/OwnedMulticaller.sol", - "id": 72285, - "exportedSymbols": { - "ErrorHandler": [ - 68409 - ], - "INSUnified": [ - 67496 - ], - "Ownable": [ - 48818 - ], - "OwnedMulticaller": [ - 72284 - ] - }, - "nodeType": "SourceUnit", - "src": "32:1384:143", - "nodes": [ - { - "id": 72095, - "nodeType": "PragmaDirective", - "src": "32:24:143", - "nodes": [], - "literals": [ - "solidity", - "^", - "0.8", - ".19" - ] - }, - { - "id": 72097, - "nodeType": "ImportDirective", - "src": "58:69:143", - "nodes": [], - "absolutePath": "lib/openzeppelin-contracts/contracts/access/Ownable.sol", - "file": "@openzeppelin/contracts/access/Ownable.sol", - "nameLocation": "-1:-1:-1", - "scope": 72285, - "sourceUnit": 48819, - "symbolAliases": [ - { - "foreign": { - "id": 72096, - "name": "Ownable", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48818, - "src": "67:7:143", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 72099, - "nodeType": "ImportDirective", - "src": "128:58:143", - "nodes": [], - "absolutePath": "src/interfaces/INSUnified.sol", - "file": "../interfaces/INSUnified.sol", - "nameLocation": "-1:-1:-1", - "scope": 72285, - "sourceUnit": 67497, - "symbolAliases": [ - { - "foreign": { - "id": 72098, - "name": "INSUnified", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 67496, - "src": "137:10:143", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 72101, - "nodeType": "ImportDirective", - "src": "187:61:143", - "nodes": [], - "absolutePath": "src/libraries/ErrorHandler.sol", - "file": "../libraries/ErrorHandler.sol", - "nameLocation": "-1:-1:-1", - "scope": 72285, - "sourceUnit": 68410, - "symbolAliases": [ - { - "foreign": { - "id": 72100, - "name": "ErrorHandler", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 68409, - "src": "196:12:143", - "typeDescriptions": {} - }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 72284, - "nodeType": "ContractDefinition", - "src": "250:1165:143", - "nodes": [ - { - "id": 72106, - "nodeType": "UsingForDirective", - "src": "291:28:143", - "nodes": [], - "global": false, - "libraryName": { - "id": 72104, - "name": "ErrorHandler", - "nameLocations": [ - "297:12:143" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 68409, - "src": "297:12:143" - }, - "typeName": { - "id": 72105, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "314:4:143", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - { - "id": 72126, - "nodeType": "FunctionDefinition", - "src": "323:126:143", - "nodes": [], - "body": { - "id": 72125, - "nodeType": "Block", - "src": "351:98:143", - "nodes": [], - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 72117, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 72112, - "name": "owner_", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 72108, - "src": "365:6:143", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "arguments": [ - { - "hexValue": "30", - "id": 72115, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "383:1:143", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 72114, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "375:7:143", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 72113, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "375:7:143", - "typeDescriptions": {} - } - }, - "id": 72116, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "375:10:143", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "365:20:143", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "6f776e65725f203d3d20616464726573732830783029", - "id": 72118, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "387:24:143", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_1bbd090cbbfc1ac7ee019603f738fd2553e99943ad898a7711d265d6378f7213", - "typeString": "literal_string \"owner_ == address(0x0)\"" - }, - "value": "owner_ == address(0x0)" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_1bbd090cbbfc1ac7ee019603f738fd2553e99943ad898a7711d265d6378f7213", - "typeString": "literal_string \"owner_ == address(0x0)\"" - } - ], - "id": 72111, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "357:7:143", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 72119, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "357:55:143", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 72120, - "nodeType": "ExpressionStatement", - "src": "357:55:143" - }, - { - "expression": { - "arguments": [ - { - "id": 72122, - "name": "owner_", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 72108, - "src": "437:6:143", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 72121, - "name": "_transferOwnership", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48817, - "src": "418:18:143", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", - "typeString": "function (address)" - } - }, - "id": 72123, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "418:26:143", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 72124, - "nodeType": "ExpressionStatement", - "src": "418:26:143" - } - ] - }, - "implemented": true, - "kind": "constructor", - "modifiers": [], - "name": "", - "nameLocation": "-1:-1:-1", - "parameters": { - "id": 72109, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 72108, - "mutability": "mutable", - "name": "owner_", - "nameLocation": "343:6:143", - "nodeType": "VariableDeclaration", - "scope": 72126, - "src": "335:14:143", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 72107, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "335:7:143", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "334:16:143" - }, - "returnParameters": { - "id": 72110, - "nodeType": "ParameterList", - "parameters": [], - "src": "351:0:143" - }, - "scope": 72284, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - { - "id": 72140, - "nodeType": "FunctionDefinition", - "src": "453:81:143", - "nodes": [], - "body": { - "id": 72139, - "nodeType": "Block", - "src": "488:46:143", - "nodes": [], - "statements": [ - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 72134, - "name": "_msgSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51938, - "src": "515:10:143", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", - "typeString": "function () view returns (address)" - } - }, - "id": 72135, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "515:12:143", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 72133, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "507:8:143", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_payable_$", - "typeString": "type(address payable)" - }, - "typeName": { - "id": 72132, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "507:8:143", - "stateMutability": "payable", - "typeDescriptions": {} - } - }, - "id": 72136, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "507:21:143", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "id": 72131, - "name": "selfdestruct", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -21, - "src": "494:12:143", - "typeDescriptions": { - "typeIdentifier": "t_function_selfdestruct_nonpayable$_t_address_payable_$returns$__$", - "typeString": "function (address payable)" - } - }, - "id": 72137, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "494:35:143", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 72138, - "nodeType": "ExpressionStatement", - "src": "494:35:143" - } - ] - }, - "functionSelector": "41c0e1b5", - "implemented": true, - "kind": "function", - "modifiers": [ - { - "id": 72129, - "kind": "modifierInvocation", - "modifierName": { - "id": 72128, - "name": "onlyOwner", - "nameLocations": [ - "478:9:143" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 48737, - "src": "478:9:143" - }, - "nodeType": "ModifierInvocation", - "src": "478:9:143" - } - ], - "name": "kill", - "nameLocation": "462:4:143", - "parameters": { - "id": 72127, - "nodeType": "ParameterList", - "parameters": [], - "src": "466:2:143" - }, - "returnParameters": { - "id": 72130, - "nodeType": "ParameterList", - "parameters": [], - "src": "488:0:143" - }, - "scope": 72284, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 72187, - "nodeType": "FunctionDefinition", - "src": "538:307:143", - "nodes": [], - "body": { - "id": 72186, - "nodeType": "Block", - "src": "723:122:143", - "nodes": [], - "statements": [ - { - "body": { - "id": 72184, - "nodeType": "Block", - "src": "769:72:143", - "statements": [ - { - "expression": { - "arguments": [ - { - "id": 72173, - "name": "parentId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 72145, - "src": "786:8:143", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "baseExpression": { - "id": 72174, - "name": "labels", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 72155, - "src": "796:6:143", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr", - "typeString": "string calldata[] calldata" - } - }, - "id": 72176, - "indexExpression": { - "id": 72175, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 72161, - "src": "803:1:143", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "796:9:143", - "typeDescriptions": { - "typeIdentifier": "t_string_calldata_ptr", - "typeString": "string calldata" - } - }, - { - "id": 72177, - "name": "resolver", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 72147, - "src": "807:8:143", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "baseExpression": { - "id": 72178, - "name": "tos", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 72152, - "src": "817:3:143", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", - "typeString": "address[] calldata" - } - }, - "id": 72180, - "indexExpression": { - "id": 72179, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 72161, - "src": "821:1:143", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "817:6:143", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 72181, - "name": "duration", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 72149, - "src": "825:8:143", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_string_calldata_ptr", - "typeString": "string calldata" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - ], - "expression": { - "id": 72170, - "name": "rns", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 72143, - "src": "777:3:143", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSUnified_$67496", - "typeString": "contract INSUnified" - } - }, - "id": 72172, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "781:4:143", - "memberName": "mint", - "nodeType": "MemberAccess", - "referencedDeclaration": 67416, - "src": "777:8:143", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_string_memory_ptr_$_t_address_$_t_address_$_t_uint64_$returns$_t_uint64_$_t_uint256_$", - "typeString": "function (uint256,string memory,address,address,uint64) external returns (uint64,uint256)" - } - }, - "id": 72182, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "777:57:143", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint64_$_t_uint256_$", - "typeString": "tuple(uint64,uint256)" - } - }, - "id": 72183, - "nodeType": "ExpressionStatement", - "src": "777:57:143" - } - ] - }, - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 72166, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 72163, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 72161, - "src": "745:1:143", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "expression": { - "id": 72164, - "name": "labels", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 72155, - "src": "749:6:143", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr", - "typeString": "string calldata[] calldata" - } - }, - "id": 72165, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "756:6:143", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "749:13:143", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "745:17:143", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 72185, - "initializationExpression": { - "assignments": [ - 72161 - ], - "declarations": [ - { - "constant": false, - "id": 72161, - "mutability": "mutable", - "name": "i", - "nameLocation": "742:1:143", - "nodeType": "VariableDeclaration", - "scope": 72185, - "src": "734:9:143", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 72160, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "734:7:143", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 72162, - "nodeType": "VariableDeclarationStatement", - "src": "734:9:143" - }, - "loopExpression": { - "expression": { - "id": 72168, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": true, - "src": "764:3:143", - "subExpression": { - "id": 72167, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 72161, - "src": "766:1:143", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 72169, - "nodeType": "ExpressionStatement", - "src": "764:3:143" - }, - "nodeType": "ForStatement", - "src": "729:112:143" - } - ] - }, - "functionSelector": "38745180", - "implemented": true, - "kind": "function", - "modifiers": [ - { - "id": 72158, - "kind": "modifierInvocation", - "modifierName": { - "id": 72157, - "name": "onlyOwner", - "nameLocations": [ - "713:9:143" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 48737, - "src": "713:9:143" - }, - "nodeType": "ModifierInvocation", - "src": "713:9:143" - } - ], - "name": "multiMint", - "nameLocation": "547:9:143", - "parameters": { - "id": 72156, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 72143, - "mutability": "mutable", - "name": "rns", - "nameLocation": "573:3:143", - "nodeType": "VariableDeclaration", - "scope": 72187, - "src": "562:14:143", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSUnified_$67496", - "typeString": "contract INSUnified" - }, - "typeName": { - "id": 72142, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 72141, - "name": "INSUnified", - "nameLocations": [ - "562:10:143" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 67496, - "src": "562:10:143" - }, - "referencedDeclaration": 67496, - "src": "562:10:143", - "typeDescriptions": { - "typeIdentifier": "t_contract$_INSUnified_$67496", - "typeString": "contract INSUnified" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 72145, - "mutability": "mutable", - "name": "parentId", - "nameLocation": "590:8:143", - "nodeType": "VariableDeclaration", - "scope": 72187, - "src": "582:16:143", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 72144, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "582:7:143", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 72147, - "mutability": "mutable", - "name": "resolver", - "nameLocation": "612:8:143", - "nodeType": "VariableDeclaration", - "scope": 72187, - "src": "604:16:143", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 72146, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "604:7:143", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 72149, - "mutability": "mutable", - "name": "duration", - "nameLocation": "633:8:143", - "nodeType": "VariableDeclaration", - "scope": 72187, - "src": "626:15:143", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - }, - "typeName": { - "id": 72148, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "626:6:143", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 72152, - "mutability": "mutable", - "name": "tos", - "nameLocation": "666:3:143", - "nodeType": "VariableDeclaration", - "scope": 72187, - "src": "647:22:143", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", - "typeString": "address[]" - }, - "typeName": { - "baseType": { - "id": 72150, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "647:7:143", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 72151, - "nodeType": "ArrayTypeName", - "src": "647:9:143", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 72155, - "mutability": "mutable", - "name": "labels", - "nameLocation": "693:6:143", - "nodeType": "VariableDeclaration", - "scope": 72187, - "src": "675:24:143", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr", - "typeString": "string[]" - }, - "typeName": { - "baseType": { - "id": 72153, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "675:6:143", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "id": 72154, - "nodeType": "ArrayTypeName", - "src": "675:8:143", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", - "typeString": "string[]" - } - }, - "visibility": "internal" - } - ], - "src": "556:147:143" - }, - "returnParameters": { - "id": 72159, - "nodeType": "ParameterList", - "parameters": [], - "src": "723:0:143" - }, - "scope": 72284, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 72283, - "nodeType": "FunctionDefinition", - "src": "849:564:143", - "nodes": [], - "body": { - "id": 72282, - "nodeType": "Block", - "src": "1052:361:143", - "nodes": [], - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 72218, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 72212, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 72208, - "name": "tos", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 72190, - "src": "1066:3:143", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", - "typeString": "address[] calldata" - } - }, - "id": 72209, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1070:6:143", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "1066:10:143", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "expression": { - "id": 72210, - "name": "callDatas", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 72193, - "src": "1080:9:143", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", - "typeString": "bytes calldata[] calldata" - } - }, - "id": 72211, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1090:6:143", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "1080:16:143", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1066:30:143", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 72217, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 72213, - "name": "tos", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 72190, - "src": "1100:3:143", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", - "typeString": "address[] calldata" - } - }, - "id": 72214, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1104:6:143", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "1100:10:143", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "expression": { - "id": 72215, - "name": "values", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 72196, - "src": "1114:6:143", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", - "typeString": "uint256[] calldata" - } - }, - "id": 72216, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1121:6:143", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "1114:13:143", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1100:27:143", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "1066:61:143", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "696e76616c6964206c656e677468", - "id": 72219, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1129:16:143", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_fbfa0f4a5ba9793c902faca35c0edd6ed6a737c9d8f9267150b00b96beb5b04f", - "typeString": "literal_string \"invalid length\"" - }, - "value": "invalid length" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_fbfa0f4a5ba9793c902faca35c0edd6ed6a737c9d8f9267150b00b96beb5b04f", - "typeString": "literal_string \"invalid length\"" - } - ], - "id": 72207, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "1058:7:143", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 72220, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1058:88:143", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 72221, - "nodeType": "ExpressionStatement", - "src": "1058:88:143" - }, - { - "expression": { - "id": 72229, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 72222, - "name": "results", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 72202, - "src": "1152:7:143", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr", - "typeString": "bool[] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "expression": { - "id": 72226, - "name": "tos", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 72190, - "src": "1173:3:143", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", - "typeString": "address[] calldata" - } - }, - "id": 72227, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1177:6:143", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "1173:10:143", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 72225, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "NewExpression", - "src": "1162:10:143", - "typeDescriptions": { - "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bool_$dyn_memory_ptr_$", - "typeString": "function (uint256) pure returns (bool[] memory)" - }, - "typeName": { - "baseType": { - "id": 72223, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "1166:4:143", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 72224, - "nodeType": "ArrayTypeName", - "src": "1166:6:143", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr", - "typeString": "bool[]" - } - } - }, - "id": 72228, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1162:22:143", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr", - "typeString": "bool[] memory" - } - }, - "src": "1152:32:143", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr", - "typeString": "bool[] memory" - } - }, - "id": 72230, - "nodeType": "ExpressionStatement", - "src": "1152:32:143" - }, - { - "expression": { - "id": 72238, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 72231, - "name": "returnDatas", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 72205, - "src": "1190:11:143", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", - "typeString": "bytes memory[] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "expression": { - "id": 72235, - "name": "tos", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 72190, - "src": "1216:3:143", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", - "typeString": "address[] calldata" - } - }, - "id": 72236, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1220:6:143", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "1216:10:143", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 72234, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "NewExpression", - "src": "1204:11:143", - "typeDescriptions": { - "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$", - "typeString": "function (uint256) pure returns (bytes memory[] memory)" - }, - "typeName": { - "baseType": { - "id": 72232, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "1208:5:143", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "id": 72233, - "nodeType": "ArrayTypeName", - "src": "1208:7:143", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", - "typeString": "bytes[]" - } - } - }, - "id": 72237, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1204:23:143", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", - "typeString": "bytes memory[] memory" - } - }, - "src": "1190:37:143", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", - "typeString": "bytes memory[] memory" - } - }, - "id": 72239, - "nodeType": "ExpressionStatement", - "src": "1190:37:143" - }, - { - "body": { - "id": 72280, - "nodeType": "Block", - "src": "1271:138:143", - "statements": [ - { - "expression": { - "id": 72269, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "components": [ - { - "baseExpression": { - "id": 72250, - "name": "results", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 72202, - "src": "1280:7:143", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr", - "typeString": "bool[] memory" - } - }, - "id": 72252, - "indexExpression": { - "id": 72251, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 72241, - "src": "1288:1:143", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "1280:10:143", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "baseExpression": { - "id": 72253, - "name": "returnDatas", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 72205, - "src": "1292:11:143", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", - "typeString": "bytes memory[] memory" - } - }, - "id": 72255, - "indexExpression": { - "id": 72254, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 72241, - "src": "1304:1:143", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "1292:14:143", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "id": 72256, - "isConstant": false, - "isInlineArray": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "TupleExpression", - "src": "1279:28:143", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", - "typeString": "tuple(bool,bytes memory)" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "baseExpression": { - "id": 72265, - "name": "callDatas", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 72193, - "src": "1342:9:143", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", - "typeString": "bytes calldata[] calldata" - } - }, - "id": 72267, - "indexExpression": { - "id": 72266, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 72241, - "src": "1352:1:143", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1342:12:143", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - ], - "expression": { - "baseExpression": { - "id": 72257, - "name": "tos", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 72190, - "src": "1310:3:143", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", - "typeString": "address[] calldata" - } - }, - "id": 72259, - "indexExpression": { - "id": 72258, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 72241, - "src": "1314:1:143", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1310:6:143", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 72260, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1317:4:143", - "memberName": "call", - "nodeType": "MemberAccess", - "src": "1310:11:143", - "typeDescriptions": { - "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory) payable returns (bool,bytes memory)" - } - }, - "id": 72264, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "names": [ - "value" - ], - "nodeType": "FunctionCallOptions", - "options": [ - { - "baseExpression": { - "id": 72261, - "name": "values", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 72196, - "src": "1330:6:143", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", - "typeString": "uint256[] calldata" - } - }, - "id": 72263, - "indexExpression": { - "id": 72262, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 72241, - "src": "1337:1:143", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1330:9:143", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "src": "1310:31:143", - "typeDescriptions": { - "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value", - "typeString": "function (bytes memory) payable returns (bool,bytes memory)" - } - }, - "id": 72268, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1310:45:143", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", - "typeString": "tuple(bool,bytes memory)" - } - }, - "src": "1279:76:143", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 72270, - "nodeType": "ExpressionStatement", - "src": "1279:76:143" - }, - { - "expression": { - "arguments": [ - { - "baseExpression": { - "id": 72275, - "name": "returnDatas", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 72205, - "src": "1387:11:143", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", - "typeString": "bytes memory[] memory" - } - }, - "id": 72277, - "indexExpression": { - "id": 72276, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 72241, - "src": "1399:1:143", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1387:14:143", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "expression": { - "baseExpression": { - "id": 72271, - "name": "results", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 72202, - "src": "1363:7:143", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr", - "typeString": "bool[] memory" - } - }, - "id": 72273, - "indexExpression": { - "id": 72272, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 72241, - "src": "1371:1:143", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1363:10:143", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 72274, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1374:12:143", - "memberName": "handleRevert", - "nodeType": "MemberAccess", - "referencedDeclaration": 68408, - "src": "1363:23:143", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$returns$__$attached_to$_t_bool_$", - "typeString": "function (bool,bytes memory) pure" - } - }, - "id": 72278, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1363:39:143", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 72279, - "nodeType": "ExpressionStatement", - "src": "1363:39:143" - } - ] - }, - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 72246, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 72243, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 72241, - "src": "1250:1:143", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "expression": { - "id": 72244, - "name": "tos", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 72190, - "src": "1254:3:143", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", - "typeString": "address[] calldata" - } - }, - "id": 72245, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1258:6:143", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "1254:10:143", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1250:14:143", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 72281, - "initializationExpression": { - "assignments": [ - 72241 - ], - "declarations": [ - { - "constant": false, - "id": 72241, - "mutability": "mutable", - "name": "i", - "nameLocation": "1247:1:143", - "nodeType": "VariableDeclaration", - "scope": 72281, - "src": "1239:9:143", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 72240, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1239:7:143", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 72242, - "nodeType": "VariableDeclarationStatement", - "src": "1239:9:143" - }, - "loopExpression": { - "expression": { - "id": 72248, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": true, - "src": "1266:3:143", - "subExpression": { - "id": 72247, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 72241, - "src": "1268:1:143", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 72249, - "nodeType": "ExpressionStatement", - "src": "1266:3:143" - }, - "nodeType": "ForStatement", - "src": "1234:175:143" - } - ] - }, - "functionSelector": "28181829", - "implemented": true, - "kind": "function", - "modifiers": [ - { - "id": 72199, - "kind": "modifierInvocation", - "modifierName": { - "id": 72198, - "name": "onlyOwner", - "nameLocations": [ - "976:9:143" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 48737, - "src": "976:9:143" - }, - "nodeType": "ModifierInvocation", - "src": "976:9:143" - } - ], - "name": "multicall", - "nameLocation": "858:9:143", - "parameters": { - "id": 72197, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 72190, - "mutability": "mutable", - "name": "tos", - "nameLocation": "887:3:143", - "nodeType": "VariableDeclaration", - "scope": 72283, - "src": "868:22:143", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", - "typeString": "address[]" - }, - "typeName": { - "baseType": { - "id": 72188, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "868:7:143", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 72189, - "nodeType": "ArrayTypeName", - "src": "868:9:143", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 72193, - "mutability": "mutable", - "name": "callDatas", - "nameLocation": "909:9:143", - "nodeType": "VariableDeclaration", - "scope": 72283, - "src": "892:26:143", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", - "typeString": "bytes[]" - }, - "typeName": { - "baseType": { - "id": 72191, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "892:5:143", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "id": 72192, - "nodeType": "ArrayTypeName", - "src": "892:7:143", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", - "typeString": "bytes[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 72196, - "mutability": "mutable", - "name": "values", - "nameLocation": "939:6:143", - "nodeType": "VariableDeclaration", - "scope": 72283, - "src": "920:25:143", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", - "typeString": "uint256[]" - }, - "typeName": { - "baseType": { - "id": 72194, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "920:7:143", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 72195, - "nodeType": "ArrayTypeName", - "src": "920:9:143", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", - "typeString": "uint256[]" - } - }, - "visibility": "internal" - } - ], - "src": "867:79:143" - }, - "returnParameters": { - "id": 72206, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 72202, - "mutability": "mutable", - "name": "results", - "nameLocation": "1013:7:143", - "nodeType": "VariableDeclaration", - "scope": 72283, - "src": "999:21:143", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr", - "typeString": "bool[]" - }, - "typeName": { - "baseType": { - "id": 72200, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "999:4:143", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 72201, - "nodeType": "ArrayTypeName", - "src": "999:6:143", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr", - "typeString": "bool[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 72205, - "mutability": "mutable", - "name": "returnDatas", - "nameLocation": "1037:11:143", - "nodeType": "VariableDeclaration", - "scope": 72283, - "src": "1022:26:143", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", - "typeString": "bytes[]" - }, - "typeName": { - "baseType": { - "id": 72203, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "1022:5:143", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "id": 72204, - "nodeType": "ArrayTypeName", - "src": "1022:7:143", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", - "typeString": "bytes[]" - } - }, - "visibility": "internal" - } - ], - "src": "998:51:143" - }, - "scope": 72284, - "stateMutability": "payable", - "virtual": false, - "visibility": "external" - } - ], - "abstract": false, - "baseContracts": [ - { - "baseName": { - "id": 72102, - "name": "Ownable", - "nameLocations": [ - "279:7:143" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 48818, - "src": "279:7:143" - }, - "id": 72103, - "nodeType": "InheritanceSpecifier", - "src": "279:7:143" - } - ], - "canonicalName": "OwnedMulticaller", - "contractDependencies": [], - "contractKind": "contract", - "fullyImplemented": true, - "linearizedBaseContracts": [ - 72284, - 48818, - 51948 - ], - "name": "OwnedMulticaller", - "nameLocation": "259:16:143", - "scope": 72285, - "usedErrors": [], - "usedEvents": [ - 48719 - ] - } - ], - "license": "MIT" - }, - "blockNumber": 29370124, - "bytecode": "0x608060405234801561001057600080fd5b50604051610b16380380610b1683398101604081905261002f916100f1565b610038336100a1565b6001600160a01b0381166100925760405162461bcd60e51b815260206004820152601660248201527f6f776e65725f203d3d2061646472657373283078302900000000000000000000604482015260640160405180910390fd5b61009b816100a1565b50610121565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561010357600080fd5b81516001600160a01b038116811461011a57600080fd5b9392505050565b6109e6806101306000396000f3fe6080604052600436106100555760003560e01c8063281818291461005a578063387451801461008457806341c0e1b5146100a6578063715018a6146100bb5780638da5cb5b146100d0578063f2fde38b146100f8575b600080fd5b61006d610068366004610618565b610118565b60405161007b9291906106b2565b60405180910390f35b34801561009057600080fd5b506100a461009f3660046107a6565b610372565b005b3480156100b257600080fd5b506100a4610463565b3480156100c757600080fd5b506100a461046e565b3480156100dc57600080fd5b506000546040516001600160a01b03909116815260200161007b565b34801561010457600080fd5b506100a4610113366004610857565b610482565b6060806101236104fb565b868514801561013157508683145b6101735760405162461bcd60e51b815260206004820152600e60248201526d0d2dcecc2d8d2c840d8cadccee8d60931b60448201526064015b60405180910390fd5b8667ffffffffffffffff81111561018c5761018c61087b565b6040519080825280602002602001820160405280156101b5578160200160208202803683370190505b5091508667ffffffffffffffff8111156101d1576101d161087b565b60405190808252806020026020018201604052801561020457816020015b60608152602001906001900390816101ef5790505b50905060005b878110156103665788888281811061022457610224610891565b90506020020160208101906102399190610857565b6001600160a01b031685858381811061025457610254610891565b9050602002013588888481811061026d5761026d610891565b905060200281019061027f91906108a7565b60405161028d9291906108ee565b60006040518083038185875af1925050503d80600081146102ca576040519150601f19603f3d011682016040523d82523d6000602084013e6102cf565b606091505b508483815181106102e2576102e2610891565b602002602001018484815181106102fb576102fb610891565b602002602001018290528215151515815250505061035682828151811061032457610324610891565b602002602001015184838151811061033e5761033e610891565b6020026020010151151561055590919063ffffffff16565b61035f816108fe565b905061020a565b50965096945050505050565b61037a6104fb565b60005b8181101561045857886001600160a01b0316630570891f898585858181106103a7576103a7610891565b90506020028101906103b991906108a7565b8b8a8a888181106103cc576103cc610891565b90506020020160208101906103e19190610857565b8c6040518763ffffffff1660e01b815260040161040396959493929190610925565b60408051808303816000875af1158015610421573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104459190610982565b505080610451906108fe565b905061037d565b505050505050505050565b61046b6104fb565b33ff5b6104766104fb565b610480600061057c565b565b61048a6104fb565b6001600160a01b0381166104ef5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161016a565b6104f88161057c565b50565b6000546001600160a01b031633146104805760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161016a565b816105785780518015610569578060208301fd5b5063350c20f16000526004601cfd5b5050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083601f8401126105de57600080fd5b50813567ffffffffffffffff8111156105f657600080fd5b6020830191508360208260051b850101111561061157600080fd5b9250929050565b6000806000806000806060878903121561063157600080fd5b863567ffffffffffffffff8082111561064957600080fd5b6106558a838b016105cc565b9098509650602089013591508082111561066e57600080fd5b61067a8a838b016105cc565b9096509450604089013591508082111561069357600080fd5b506106a089828a016105cc565b979a9699509497509295939492505050565b604080825283519082018190526000906020906060840190828701845b828110156106ed5781511515845292840192908401906001016106cf565b50505083810382850152845180825282820190600581901b8301840187850160005b8381101561076c57601f19808785030186528251805180865260005b81811015610746578281018b01518782018c01528a0161072b565b5060008682018b015296890196601f01909116909301870192509086019060010161070f565b50909998505050505050505050565b6001600160a01b03811681146104f857600080fd5b67ffffffffffffffff811681146104f857600080fd5b60008060008060008060008060c0898b0312156107c257600080fd5b88356107cd8161077b565b97506020890135965060408901356107e48161077b565b955060608901356107f481610790565b9450608089013567ffffffffffffffff8082111561081157600080fd5b61081d8c838d016105cc565b909650945060a08b013591508082111561083657600080fd5b506108438b828c016105cc565b999c989b5096995094979396929594505050565b60006020828403121561086957600080fd5b81356108748161077b565b9392505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000808335601e198436030181126108be57600080fd5b83018035915067ffffffffffffffff8211156108d957600080fd5b60200191503681900382131561061157600080fd5b8183823760009101908152919050565b60006001820161091e57634e487b7160e01b600052601160045260246000fd5b5060010190565b86815260a060208201528460a0820152848660c0830137600060c08683018101919091526001600160a01b03948516604083015292909316606084015267ffffffffffffffff166080830152601f909201601f1916010192915050565b6000806040838503121561099557600080fd5b82516109a081610790565b602093909301519294929350505056fea264697066735822122012bd3f094f885f140be9c6457fdeaec77d126758f41b77d9fe178dbec6cf7fb664736f6c63430008150033", + "absolutePath": "OwnedMulticaller.sol", + "address": "0x27876429DB2cDDF017DBb63560D0366E4B4E6f8a", + "ast": "", + "blockNumber": 36397491, + "bytecode": "0x608060405234801561001057600080fd5b50604051610c03380380610c0383398101604081905261002f916100f1565b610038336100a1565b6001600160a01b0381166100925760405162461bcd60e51b815260206004820181905260248201527f4f776e65644d756c746963616c6c65723a206f776e65725f206973206e756c6c604482015260640160405180910390fd5b61009b816100a1565b50610121565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561010357600080fd5b81516001600160a01b038116811461011a57600080fd5b9392505050565b610ad3806101306000396000f3fe60806040526004361061007b5760003560e01c80638da5cb5b1161004e5780638da5cb5b14610137578063bc197c811461015f578063f23a6e6114610193578063f2fde38b146101c557600080fd5b806301ffc9a714610080578063150b7a02146100b557806328181829146100ff578063715018a614610120575b600080fd5b34801561008c57600080fd5b506100a061009b36600461060a565b6101e5565b60405190151581526020015b60405180910390f35b3480156100c157600080fd5b506100e66100d03660046106a0565b6001600160e01b03196000351695945050505050565b6040516001600160e01b031990911681526020016100ac565b61011261010d366004610754565b610237565b6040516100ac9291906107ee565b34801561012c57600080fd5b506101356104ac565b005b34801561014357600080fd5b506000546040516001600160a01b0390911681526020016100ac565b34801561016b57600080fd5b506100e661017a3660046108b7565b6001600160e01b03196000351698975050505050505050565b34801561019f57600080fd5b506100e66101ae366004610972565b6001600160e01b0319600035169695505050505050565b3480156101d157600080fd5b506101356101e03660046109d8565b6104c0565b60006001600160e01b031982166301ffc9a760e01b148061021657506001600160e01b03198216630a85bd0160e11b145b8061023157506001600160e01b03198216630271189760e51b145b92915050565b606080610242610539565b86858114801561025157508084145b6102ac5760405162461bcd60e51b815260206004820152602160248201527f4f776e65644d756c746963616c6c65723a206d69736d61746368206c656e67746044820152600d60fb1b60648201526084015b60405180910390fd5b8067ffffffffffffffff8111156102c5576102c56109f3565b6040519080825280602002602001820160405280156102ee578160200160208202803683370190505b5092508067ffffffffffffffff81111561030a5761030a6109f3565b60405190808252806020026020018201604052801561033d57816020015b60608152602001906001900390816103285790505b50915060005b8181101561049f5789898281811061035d5761035d610a09565b905060200201602081019061037291906109d8565b6001600160a01b031686868381811061038d5761038d610a09565b905060200201358989848181106103a6576103a6610a09565b90506020028101906103b89190610a1f565b6040516103c6929190610a66565b60006040518083038185875af1925050503d8060008114610403576040519150601f19603f3d011682016040523d82523d6000602084013e610408565b606091505b5085838151811061041b5761041b610a09565b6020026020010185848151811061043457610434610a09565b602002602001018290528215151515815250505061048f83828151811061045d5761045d610a09565b602002602001015185838151811061047757610477610a09565b6020026020010151151561059390919063ffffffff16565b61049881610a76565b9050610343565b5050965096945050505050565b6104b4610539565b6104be60006105ba565b565b6104c8610539565b6001600160a01b03811661052d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102a3565b610536816105ba565b50565b6000546001600160a01b031633146104be5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102a3565b816105b657805180156105a7578060208301fd5b5063350c20f16000526004601cfd5b5050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561061c57600080fd5b81356001600160e01b03198116811461063457600080fd5b9392505050565b80356001600160a01b038116811461065257600080fd5b919050565b60008083601f84011261066957600080fd5b50813567ffffffffffffffff81111561068157600080fd5b60208301915083602082850101111561069957600080fd5b9250929050565b6000806000806000608086880312156106b857600080fd5b6106c18661063b565b94506106cf6020870161063b565b935060408601359250606086013567ffffffffffffffff8111156106f257600080fd5b6106fe88828901610657565b969995985093965092949392505050565b60008083601f84011261072157600080fd5b50813567ffffffffffffffff81111561073957600080fd5b6020830191508360208260051b850101111561069957600080fd5b6000806000806000806060878903121561076d57600080fd5b863567ffffffffffffffff8082111561078557600080fd5b6107918a838b0161070f565b909850965060208901359150808211156107aa57600080fd5b6107b68a838b0161070f565b909650945060408901359150808211156107cf57600080fd5b506107dc89828a0161070f565b979a9699509497509295939492505050565b604080825283519082018190526000906020906060840190828701845b8281101561082957815115158452928401929084019060010161080b565b50505083810382850152845180825282820190600581901b8301840187850160005b838110156108a857601f19808785030186528251805180865260005b81811015610882578281018b01518782018c01528a01610867565b5060008682018b015296890196601f01909116909301870192509086019060010161084b565b50909998505050505050505050565b60008060008060008060008060a0898b0312156108d357600080fd5b6108dc8961063b565b97506108ea60208a0161063b565b9650604089013567ffffffffffffffff8082111561090757600080fd5b6109138c838d0161070f565b909850965060608b013591508082111561092c57600080fd5b6109388c838d0161070f565b909650945060808b013591508082111561095157600080fd5b5061095e8b828c01610657565b999c989b5096995094979396929594505050565b60008060008060008060a0878903121561098b57600080fd5b6109948761063b565b95506109a26020880161063b565b94506040870135935060608701359250608087013567ffffffffffffffff8111156109cc57600080fd5b6107dc89828a01610657565b6000602082840312156109ea57600080fd5b6106348261063b565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000808335601e19843603018112610a3657600080fd5b83018035915067ffffffffffffffff821115610a5157600080fd5b60200191503681900382131561069957600080fd5b8183823760009101908152919050565b600060018201610a9657634e487b7160e01b600052601160045260246000fd5b506001019056fea2646970667358221220c6e782435409115b4deccd23086900709e0132eb6d6810b5c9d00eb571d0ce0164736f6c63430008150033", + "callValue": 0, "chainId": 2020, + "constructorArgs": "0x0000000000000000000000000ebf93387093d7b7cda9a4de5d558507810af5ed", "contractName": "OwnedMulticaller", - "deployedBytecode": "0x6080604052600436106100555760003560e01c8063281818291461005a578063387451801461008457806341c0e1b5146100a6578063715018a6146100bb5780638da5cb5b146100d0578063f2fde38b146100f8575b600080fd5b61006d610068366004610618565b610118565b60405161007b9291906106b2565b60405180910390f35b34801561009057600080fd5b506100a461009f3660046107a6565b610372565b005b3480156100b257600080fd5b506100a4610463565b3480156100c757600080fd5b506100a461046e565b3480156100dc57600080fd5b506000546040516001600160a01b03909116815260200161007b565b34801561010457600080fd5b506100a4610113366004610857565b610482565b6060806101236104fb565b868514801561013157508683145b6101735760405162461bcd60e51b815260206004820152600e60248201526d0d2dcecc2d8d2c840d8cadccee8d60931b60448201526064015b60405180910390fd5b8667ffffffffffffffff81111561018c5761018c61087b565b6040519080825280602002602001820160405280156101b5578160200160208202803683370190505b5091508667ffffffffffffffff8111156101d1576101d161087b565b60405190808252806020026020018201604052801561020457816020015b60608152602001906001900390816101ef5790505b50905060005b878110156103665788888281811061022457610224610891565b90506020020160208101906102399190610857565b6001600160a01b031685858381811061025457610254610891565b9050602002013588888481811061026d5761026d610891565b905060200281019061027f91906108a7565b60405161028d9291906108ee565b60006040518083038185875af1925050503d80600081146102ca576040519150601f19603f3d011682016040523d82523d6000602084013e6102cf565b606091505b508483815181106102e2576102e2610891565b602002602001018484815181106102fb576102fb610891565b602002602001018290528215151515815250505061035682828151811061032457610324610891565b602002602001015184838151811061033e5761033e610891565b6020026020010151151561055590919063ffffffff16565b61035f816108fe565b905061020a565b50965096945050505050565b61037a6104fb565b60005b8181101561045857886001600160a01b0316630570891f898585858181106103a7576103a7610891565b90506020028101906103b991906108a7565b8b8a8a888181106103cc576103cc610891565b90506020020160208101906103e19190610857565b8c6040518763ffffffff1660e01b815260040161040396959493929190610925565b60408051808303816000875af1158015610421573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104459190610982565b505080610451906108fe565b905061037d565b505050505050505050565b61046b6104fb565b33ff5b6104766104fb565b610480600061057c565b565b61048a6104fb565b6001600160a01b0381166104ef5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161016a565b6104f88161057c565b50565b6000546001600160a01b031633146104805760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161016a565b816105785780518015610569578060208301fd5b5063350c20f16000526004601cfd5b5050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083601f8401126105de57600080fd5b50813567ffffffffffffffff8111156105f657600080fd5b6020830191508360208260051b850101111561061157600080fd5b9250929050565b6000806000806000806060878903121561063157600080fd5b863567ffffffffffffffff8082111561064957600080fd5b6106558a838b016105cc565b9098509650602089013591508082111561066e57600080fd5b61067a8a838b016105cc565b9096509450604089013591508082111561069357600080fd5b506106a089828a016105cc565b979a9699509497509295939492505050565b604080825283519082018190526000906020906060840190828701845b828110156106ed5781511515845292840192908401906001016106cf565b50505083810382850152845180825282820190600581901b8301840187850160005b8381101561076c57601f19808785030186528251805180865260005b81811015610746578281018b01518782018c01528a0161072b565b5060008682018b015296890196601f01909116909301870192509086019060010161070f565b50909998505050505050505050565b6001600160a01b03811681146104f857600080fd5b67ffffffffffffffff811681146104f857600080fd5b60008060008060008060008060c0898b0312156107c257600080fd5b88356107cd8161077b565b97506020890135965060408901356107e48161077b565b955060608901356107f481610790565b9450608089013567ffffffffffffffff8082111561081157600080fd5b61081d8c838d016105cc565b909650945060a08b013591508082111561083657600080fd5b506108438b828c016105cc565b999c989b5096995094979396929594505050565b60006020828403121561086957600080fd5b81356108748161077b565b9392505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000808335601e198436030181126108be57600080fd5b83018035915067ffffffffffffffff8211156108d957600080fd5b60200191503681900382131561061157600080fd5b8183823760009101908152919050565b60006001820161091e57634e487b7160e01b600052601160045260246000fd5b5060010190565b86815260a060208201528460a0820152848660c0830137600060c08683018101919091526001600160a01b03948516604083015292909316606084015267ffffffffffffffff166080830152601f909201601f1916010192915050565b6000806040838503121561099557600080fd5b82516109a081610790565b602093909301519294929350505056fea264697066735822122012bd3f094f885f140be9c6457fdeaec77d126758f41b77d9fe178dbec6cf7fb664736f6c63430008150033", - "deployer": "0x0F68eDBE14C8f68481771016d7E2871d6a35DE11", + "deployedBytecode": "0x60806040526004361061007b5760003560e01c80638da5cb5b1161004e5780638da5cb5b14610137578063bc197c811461015f578063f23a6e6114610193578063f2fde38b146101c557600080fd5b806301ffc9a714610080578063150b7a02146100b557806328181829146100ff578063715018a614610120575b600080fd5b34801561008c57600080fd5b506100a061009b36600461060a565b6101e5565b60405190151581526020015b60405180910390f35b3480156100c157600080fd5b506100e66100d03660046106a0565b6001600160e01b03196000351695945050505050565b6040516001600160e01b031990911681526020016100ac565b61011261010d366004610754565b610237565b6040516100ac9291906107ee565b34801561012c57600080fd5b506101356104ac565b005b34801561014357600080fd5b506000546040516001600160a01b0390911681526020016100ac565b34801561016b57600080fd5b506100e661017a3660046108b7565b6001600160e01b03196000351698975050505050505050565b34801561019f57600080fd5b506100e66101ae366004610972565b6001600160e01b0319600035169695505050505050565b3480156101d157600080fd5b506101356101e03660046109d8565b6104c0565b60006001600160e01b031982166301ffc9a760e01b148061021657506001600160e01b03198216630a85bd0160e11b145b8061023157506001600160e01b03198216630271189760e51b145b92915050565b606080610242610539565b86858114801561025157508084145b6102ac5760405162461bcd60e51b815260206004820152602160248201527f4f776e65644d756c746963616c6c65723a206d69736d61746368206c656e67746044820152600d60fb1b60648201526084015b60405180910390fd5b8067ffffffffffffffff8111156102c5576102c56109f3565b6040519080825280602002602001820160405280156102ee578160200160208202803683370190505b5092508067ffffffffffffffff81111561030a5761030a6109f3565b60405190808252806020026020018201604052801561033d57816020015b60608152602001906001900390816103285790505b50915060005b8181101561049f5789898281811061035d5761035d610a09565b905060200201602081019061037291906109d8565b6001600160a01b031686868381811061038d5761038d610a09565b905060200201358989848181106103a6576103a6610a09565b90506020028101906103b89190610a1f565b6040516103c6929190610a66565b60006040518083038185875af1925050503d8060008114610403576040519150601f19603f3d011682016040523d82523d6000602084013e610408565b606091505b5085838151811061041b5761041b610a09565b6020026020010185848151811061043457610434610a09565b602002602001018290528215151515815250505061048f83828151811061045d5761045d610a09565b602002602001015185838151811061047757610477610a09565b6020026020010151151561059390919063ffffffff16565b61049881610a76565b9050610343565b5050965096945050505050565b6104b4610539565b6104be60006105ba565b565b6104c8610539565b6001600160a01b03811661052d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102a3565b610536816105ba565b50565b6000546001600160a01b031633146104be5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102a3565b816105b657805180156105a7578060208301fd5b5063350c20f16000526004601cfd5b5050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561061c57600080fd5b81356001600160e01b03198116811461063457600080fd5b9392505050565b80356001600160a01b038116811461065257600080fd5b919050565b60008083601f84011261066957600080fd5b50813567ffffffffffffffff81111561068157600080fd5b60208301915083602082850101111561069957600080fd5b9250929050565b6000806000806000608086880312156106b857600080fd5b6106c18661063b565b94506106cf6020870161063b565b935060408601359250606086013567ffffffffffffffff8111156106f257600080fd5b6106fe88828901610657565b969995985093965092949392505050565b60008083601f84011261072157600080fd5b50813567ffffffffffffffff81111561073957600080fd5b6020830191508360208260051b850101111561069957600080fd5b6000806000806000806060878903121561076d57600080fd5b863567ffffffffffffffff8082111561078557600080fd5b6107918a838b0161070f565b909850965060208901359150808211156107aa57600080fd5b6107b68a838b0161070f565b909650945060408901359150808211156107cf57600080fd5b506107dc89828a0161070f565b979a9699509497509295939492505050565b604080825283519082018190526000906020906060840190828701845b8281101561082957815115158452928401929084019060010161080b565b50505083810382850152845180825282820190600581901b8301840187850160005b838110156108a857601f19808785030186528251805180865260005b81811015610882578281018b01518782018c01528a01610867565b5060008682018b015296890196601f01909116909301870192509086019060010161084b565b50909998505050505050505050565b60008060008060008060008060a0898b0312156108d357600080fd5b6108dc8961063b565b97506108ea60208a0161063b565b9650604089013567ffffffffffffffff8082111561090757600080fd5b6109138c838d0161070f565b909850965060608b013591508082111561092c57600080fd5b6109388c838d0161070f565b909650945060808b013591508082111561095157600080fd5b5061095e8b828c01610657565b999c989b5096995094979396929594505050565b60008060008060008060a0878903121561098b57600080fd5b6109948761063b565b95506109a26020880161063b565b94506040870135935060608701359250608087013567ffffffffffffffff8111156109cc57600080fd5b6107dc89828a01610657565b6000602082840312156109ea57600080fd5b6106348261063b565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000808335601e19843603018112610a3657600080fd5b83018035915067ffffffffffffffff821115610a5157600080fd5b60200191503681900382131561069957600080fd5b8183823760009101908152919050565b600060018201610a9657634e487b7160e01b600052601160045260246000fd5b506001019056fea2646970667358221220c6e782435409115b4deccd23086900709e0132eb6d6810b5c9d00eb571d0ce0164736f6c63430008150033", + "deployer": "0x08295771719b138a241F45023B13CC868D72827D", "devdoc": { "version": 1, "kind": "dev", "methods": { + "multicall(address[],bytes[],uint256[])": { + "details": "Execute multiple calls in a single transaction.", + "params": { + "callDatas": "The call data for each call.", + "tos": "The addresses to call.", + "values": "The value to send for each call." + }, + "returns": { + "results": "The results of each call.", + "returnDatas": "The return data of each call." + } + }, + "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)": { + "details": "See {IERC1155Receiver-onERC1155Received}." + }, + "onERC1155Received(address,address,uint256,uint256,bytes)": { + "details": "See {IERC1155Receiver-onERC1155Received}." + }, + "onERC721Received(address,address,uint256,bytes)": { + "details": "See {IERC721Receiver-onERC721Received}." + }, "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." }, + "supportsInterface(bytes4)": { + "details": "See {IERC165-supportsInterface}." + }, "transferOwnership(address)": { "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner." } } }, "isFoundry": true, - "metadata": "{\"compiler\":{\"version\":\"0.8.21+commit.d9974bed\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"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\":\"kill\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract INSUnified\",\"name\":\"rns\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"parentId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"duration\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"tos\",\"type\":\"address[]\"},{\"internalType\":\"string[]\",\"name\":\"labels\",\"type\":\"string[]\"}],\"name\":\"multiMint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"tos\",\"type\":\"address[]\"},{\"internalType\":\"bytes[]\",\"name\":\"callDatas\",\"type\":\"bytes[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"results\",\"type\":\"bool[]\"},{\"internalType\":\"bytes[]\",\"name\":\"returnDatas\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"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\":{\"kind\":\"dev\",\"methods\":{\"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\":{\"src/utils/OwnedMulticaller.sol\":\"OwnedMulticaller\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":@pythnetwork/=lib/pyth-sdk-solidity/\",\":@rns-contracts/=src/\",\":buffer/=lib/buffer/contracts/\",\":contract-template/=lib/contract-template/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":ens-contracts/=lib/ens-contracts/contracts/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":foundry-deployment-kit/=lib/foundry-deployment-kit/script/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":pyth-sdk-solidity/=lib/pyth-sdk-solidity/\",\":solady/=lib/solady/src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev External interface of AccessControl declared to support ERC165 detection.\\n */\\ninterface IAccessControl {\\n /**\\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\\n *\\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\\n * {RoleAdminChanged} not being emitted signaling this.\\n *\\n * _Available since v3.1._\\n */\\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\\n\\n /**\\n * @dev Emitted when `account` is granted `role`.\\n *\\n * `sender` is the account that originated the contract call, an admin role\\n * bearer except when using {AccessControl-_setupRole}.\\n */\\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Emitted when `account` is revoked `role`.\\n *\\n * `sender` is the account that originated the contract call:\\n * - if using `revokeRole`, it is the admin role bearer\\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\\n */\\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Returns `true` if `account` has been granted `role`.\\n */\\n function hasRole(bytes32 role, address account) external view returns (bool);\\n\\n /**\\n * @dev Returns the admin role that controls `role`. See {grantRole} and\\n * {revokeRole}.\\n *\\n * To change a role's admin, use {AccessControl-_setRoleAdmin}.\\n */\\n function getRoleAdmin(bytes32 role) external view returns (bytes32);\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function grantRole(bytes32 role, address account) external;\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function revokeRole(bytes32 role, address account) external;\\n\\n /**\\n * @dev Revokes `role` from the calling account.\\n *\\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\\n * purpose is to provide a mechanism for accounts to lose their privileges\\n * if they are compromised (such as when a trusted device is misplaced).\\n *\\n * If the calling account had been granted `role`, emits a {RoleRevoked}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must be `account`.\\n */\\n function renounceRole(bytes32 role, address account) external;\\n}\\n\",\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/access/IAccessControlEnumerable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (access/IAccessControlEnumerable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IAccessControl.sol\\\";\\n\\n/**\\n * @dev External interface of AccessControlEnumerable declared to support ERC165 detection.\\n */\\ninterface IAccessControlEnumerable is IAccessControl {\\n /**\\n * @dev Returns one of the accounts that have `role`. `index` must be a\\n * value between 0 and {getRoleMemberCount}, non-inclusive.\\n *\\n * Role bearers are not sorted in any particular way, and their ordering may\\n * change at any point.\\n *\\n * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\\n * you perform all queries on the same block. See the following\\n * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\\n * for more information.\\n */\\n function getRoleMember(bytes32 role, uint256 index) external view returns (address);\\n\\n /**\\n * @dev Returns the number of accounts that have `role`. Can be used\\n * together with {getRoleMember} to enumerate all bearers of a role.\\n */\\n function getRoleMemberCount(bytes32 role) external view returns (uint256);\\n}\\n\",\"keccak256\":\"0xba4459ab871dfa300f5212c6c30178b63898c03533a1ede28436f11546626676\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../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 * By default, the owner account will be the one that deploys the contract. This\\n * can 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 event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n /**\\n * @dev Initializes the contract setting the deployer as the initial owner.\\n */\\n constructor() {\\n _transferOwnership(_msgSender());\\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 require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\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 require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\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\",\"keccak256\":\"0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 compliant contract.\\n */\\ninterface IERC721 is IERC165 {\\n /**\\n * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n */\\n event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n */\\n event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n /**\\n * @dev Returns the number of tokens in ``owner``'s account.\\n */\\n function balanceOf(address owner) external view returns (uint256 balance);\\n\\n /**\\n * @dev Returns the owner of the `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(address from, address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Transfers `tokenId` token from `from` to `to`.\\n *\\n * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\\n * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\\n * understand this adds an external call which potentially creates a reentrancy vulnerability.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n * The approval is cleared when the token is transferred.\\n *\\n * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n *\\n * Requirements:\\n *\\n * - The caller must own the token or be an approved operator.\\n * - `tokenId` must exist.\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Approve or remove `operator` as an operator for the caller.\\n * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n *\\n * Requirements:\\n *\\n * - The `operator` cannot be the caller.\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function setApprovalForAll(address operator, bool approved) external;\\n\\n /**\\n * @dev Returns the account approved for `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n /**\\n * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n *\\n * See {setApprovalForAll}\\n */\\n function isApprovedForAll(address owner, address operator) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721Metadata is IERC721 {\\n /**\\n * @dev Returns the token collection name.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the token collection symbol.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n */\\n function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"src/interfaces/INSUnified.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nimport { IERC721Metadata } from \\\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\\\";\\nimport { IAccessControlEnumerable } from \\\"@openzeppelin/contracts/access/IAccessControlEnumerable.sol\\\";\\nimport { ModifyingIndicator } from \\\"../types/ModifyingIndicator.sol\\\";\\n\\ninterface INSUnified is IAccessControlEnumerable, IERC721Metadata {\\n /// @dev Error: The provided token id is expired.\\n error Expired();\\n /// @dev Error: The provided token id is unexists.\\n error Unexists();\\n /// @dev Error: The provided token id's depth level is greater than 3.\\n error ThirdLevelDomainUnallowed();\\n /// @dev Error: The provided id expiry is greater than parent id expiry.\\n error ExceedParentExpiry();\\n /// @dev Error: The provided name is unavailable for registration.\\n error Unavailable();\\n /// @dev Error: The sender lacks the necessary permissions.\\n error Unauthorized();\\n /// @dev Error: Missing controller role required for modification.\\n error MissingControllerRole();\\n /// @dev Error: Attempting to set an immutable field, which cannot be modified.\\n error CannotSetImmutableField();\\n /// @dev Error: Missing protected settler role required for modification.\\n error MissingProtectedSettlerRole();\\n /// @dev Error: Attempting to set an expiry time that is not larger than the previous one.\\n error ExpiryTimeMustBeLargerThanTheOldOne();\\n /// @dev Error: The provided name must be registered or is in a grace period.\\n error NameMustBeRegisteredOrInGracePeriod();\\n\\n /**\\n * | Fields\\\\Idc | Modifying Indicator |\\n * | ---------- | ------------------- |\\n * | depth | 0b00000001 |\\n * | parentId | 0b00000010 |\\n * | label | 0b00000100 |\\n */\\n struct ImmutableRecord {\\n // The level-th of a domain.\\n uint8 depth;\\n // The node of parent token. Eg, parent node of vip.duke.ron equals to namehash('duke.ron')\\n uint256 parentId;\\n // The label of a domain. Eg, label is vip for domain vip.duke.ron\\n string label;\\n }\\n\\n /**\\n * | Fields\\\\Idc,Roles | Modifying Indicator | Controller | Protected setter | (Parent) Owner/Spender |\\n * | ---------------- | ------------------- | ---------- | ---------------- | ---------------------- |\\n * | resolver | 0b00001000 | x | | x |\\n * | owner | 0b00010000 | x | | x |\\n * | expiry | 0b00100000 | x | | |\\n * | protected | 0b01000000 | | x | |\\n * Note: (Parent) Owner/Spender means parent owner or current owner or current token spender.\\n */\\n struct MutableRecord {\\n // The resolver address.\\n address resolver;\\n // The record owner. This field must equal to the owner of token.\\n address owner;\\n // Expiry timestamp.\\n uint64 expiry;\\n // Flag indicating whether the token is protected or not.\\n bool protected;\\n }\\n\\n struct Record {\\n ImmutableRecord immut;\\n MutableRecord mut;\\n }\\n\\n /// @dev Emitted when a base URI is updated.\\n event BaseURIUpdated(address indexed operator, string newURI);\\n /// @dev Emitted when the grace period for all domain is updated.\\n event GracePeriodUpdated(address indexed operator, uint64 newGracePeriod);\\n\\n /**\\n * @dev Emitted when the record of node is updated.\\n * @param indicator The binary index of updated fields. Eg, 0b10101011 means fields at position 1, 2, 4, 6, 8 (right\\n * to left) needs to be updated.\\n * @param record The updated fields.\\n */\\n event RecordUpdated(uint256 indexed node, ModifyingIndicator indicator, Record record);\\n\\n /**\\n * @dev Returns the controller role.\\n * @notice Can set all fields {Record.mut} in token record, excepting {Record.mut.protected}.\\n */\\n function CONTROLLER_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Returns the protected setter role.\\n * @notice Can set field {Record.mut.protected} in token record by using method `bulkSetProtected`.\\n */\\n function PROTECTED_SETTLER_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Returns the reservation role.\\n * @notice Never expire for token owner has this role.\\n */\\n function RESERVATION_ROLE() external pure returns (bytes32);\\n\\n /**\\n * @dev Returns the max expiry value.\\n */\\n function MAX_EXPIRY() external pure returns (uint64);\\n\\n /**\\n * @dev Returns the name hash output of a domain.\\n */\\n function namehash(string memory domain) external pure returns (bytes32 node);\\n\\n /**\\n * @dev Returns true if the specified name is available for registration.\\n * Note: Only available after passing the grace period.\\n */\\n function available(uint256 id) external view returns (bool);\\n\\n /**\\n * @dev Returns the grace period in second(s).\\n * Note: This period affects the availability of the domain.\\n */\\n function getGracePeriod() external view returns (uint64);\\n\\n /**\\n * @dev Returns the total minted ids.\\n * Note: Burning id will not affect `totalMinted`.\\n */\\n function totalMinted() external view returns (uint256);\\n\\n /**\\n * @dev Sets the grace period in second(s).\\n *\\n * Requirements:\\n * - The method caller must have controller role.\\n *\\n * Note: This period affects the availability of the domain.\\n */\\n function setGracePeriod(uint64) external;\\n\\n /**\\n * @dev Sets the base uri.\\n *\\n * Requirements:\\n * - The method caller must be contract owner.\\n *\\n */\\n function setBaseURI(string calldata baseTokenURI) external;\\n\\n /**\\n * @dev Mints token for subnode.\\n *\\n * Requirements:\\n * - The token must be available.\\n * - The method caller must be (parent) owner or approved spender. See struct {MutableRecord}.\\n *\\n * Emits an event {RecordUpdated}.\\n *\\n * @param parentId The parent node to mint or create subnode.\\n * @param label The domain label. Eg, label is duke for domain duke.ron.\\n * @param resolver The resolver address.\\n * @param owner The token owner.\\n * @param duration Duration in second(s) to expire. Leave 0 to set as parent.\\n */\\n function mint(uint256 parentId, string calldata label, address resolver, address owner, uint64 duration)\\n external\\n returns (uint64 expiryTime, uint256 id);\\n\\n /**\\n * @dev Returns all record of a domain.\\n * Reverts if the token is non existent.\\n */\\n function getRecord(uint256 id) external view returns (Record memory record);\\n\\n /**\\n * @dev Returns the domain name of id.\\n */\\n function getDomain(uint256 id) external view returns (string memory domain);\\n\\n /**\\n * @dev Returns whether the requester is able to modify the record based on the updated index.\\n * Note: This method strictly follows the permission of struct {MutableRecord}.\\n */\\n function canSetRecord(address requester, uint256 id, ModifyingIndicator indicator)\\n external\\n view\\n returns (bool, bytes4 error);\\n\\n /**\\n * @dev Sets record of existing token. Update operation for {Record.mut}.\\n *\\n * Requirements:\\n * - The method caller must have role based on the corresponding `indicator`. See struct {MutableRecord}.\\n *\\n * Emits an event {RecordUpdated}.\\n */\\n function setRecord(uint256 id, ModifyingIndicator indicator, MutableRecord calldata record) external;\\n\\n /**\\n * @dev Reclaims ownership. Update operation for {Record.mut.owner}.\\n *\\n * Requirements:\\n * - The method caller should have controller role.\\n * - The method caller should be (parent) owner or approved spender. See struct {MutableRecord}.\\n *\\n * Emits an event {RecordUpdated}.\\n */\\n function reclaim(uint256 id, address owner) external;\\n\\n /**\\n * @dev Renews token. Update operation for {Record.mut.expiry}.\\n *\\n * Requirements:\\n * - The method caller should have controller role.\\n *\\n * Emits an event {RecordUpdated}.\\n */\\n function renew(uint256 id, uint64 duration) external returns (uint64 expiry);\\n\\n /**\\n * @dev Sets expiry time for a token. Update operation for {Record.mut.expiry}.\\n *\\n * Requirements:\\n * - The method caller must have controller role.\\n *\\n * Emits an event {RecordUpdated}.\\n */\\n function setExpiry(uint256 id, uint64 expiry) external;\\n\\n /**\\n * @dev Sets the protected status of a list of ids. Update operation for {Record.mut.protected}.\\n *\\n * Requirements:\\n * - The method caller must have protected setter role.\\n *\\n * Emits events {RecordUpdated}.\\n */\\n function bulkSetProtected(uint256[] calldata ids, bool protected) external;\\n}\\n\",\"keccak256\":\"0x98e2e77490d7fd6d87a8e9800223bb2f60a33e7338e2f65f64a3aed4737c035c\",\"license\":\"MIT\"},\"src/libraries/ErrorHandler.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nlibrary ErrorHandler {\\n error ExternalCallFailed();\\n\\n function handleRevert(bool status, bytes memory returnOrRevertData) internal pure {\\n assembly {\\n if iszero(status) {\\n let revertLength := mload(returnOrRevertData)\\n if iszero(iszero(revertLength)) {\\n // Start of revert data bytes. The 0x20 offset is always the same.\\n revert(add(returnOrRevertData, 0x20), revertLength)\\n }\\n\\n // revert ExternalCallFailed()\\n mstore(0x00, 0x350c20f1)\\n revert(0x1c, 0x04)\\n }\\n }\\n }\\n}\\n\",\"keccak256\":\"0x90049794d1f708cc33034b26d4e8c79c1c4ed630399fccd9280c9d43751e3d0e\",\"license\":\"MIT\"},\"src/types/ModifyingIndicator.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\ntype ModifyingIndicator is uint256;\\n\\nusing { hasAny } for ModifyingIndicator global;\\nusing { or as | } for ModifyingIndicator global;\\nusing { and as & } for ModifyingIndicator global;\\nusing { eq as == } for ModifyingIndicator global;\\nusing { not as ~ } for ModifyingIndicator global;\\nusing { xor as ^ } for ModifyingIndicator global;\\nusing { neq as != } for ModifyingIndicator global;\\n\\n/// @dev Indicator for modifying immutable fields: Depth, ParentId, Label. See struct {INSUnified.ImmutableRecord}.\\nModifyingIndicator constant IMMUTABLE_FIELDS_INDICATOR = ModifyingIndicator.wrap(0x7);\\n\\n/// @dev Indicator for modifying user fields: Resolver, Owner. See struct {INSUnified.MutableRecord}.\\nModifyingIndicator constant USER_FIELDS_INDICATOR = ModifyingIndicator.wrap(0x18);\\n\\n/// @dev Indicator when modifying all of the fields in {ModifyingField}.\\nModifyingIndicator constant ALL_FIELDS_INDICATOR = ModifyingIndicator.wrap(type(uint256).max);\\n\\nfunction eq(ModifyingIndicator self, ModifyingIndicator other) pure returns (bool) {\\n return ModifyingIndicator.unwrap(self) == ModifyingIndicator.unwrap(other);\\n}\\n\\nfunction neq(ModifyingIndicator self, ModifyingIndicator other) pure returns (bool) {\\n return !eq(self, other);\\n}\\n\\nfunction xor(ModifyingIndicator self, ModifyingIndicator other) pure returns (ModifyingIndicator) {\\n return ModifyingIndicator.wrap(ModifyingIndicator.unwrap(self) ^ ModifyingIndicator.unwrap(other));\\n}\\n\\nfunction not(ModifyingIndicator self) pure returns (ModifyingIndicator) {\\n return ModifyingIndicator.wrap(~ModifyingIndicator.unwrap(self));\\n}\\n\\nfunction or(ModifyingIndicator self, ModifyingIndicator other) pure returns (ModifyingIndicator) {\\n return ModifyingIndicator.wrap(ModifyingIndicator.unwrap(self) | ModifyingIndicator.unwrap(other));\\n}\\n\\nfunction and(ModifyingIndicator self, ModifyingIndicator other) pure returns (ModifyingIndicator) {\\n return ModifyingIndicator.wrap(ModifyingIndicator.unwrap(self) & ModifyingIndicator.unwrap(other));\\n}\\n\\nfunction hasAny(ModifyingIndicator self, ModifyingIndicator other) pure returns (bool) {\\n return self & other != ModifyingIndicator.wrap(0);\\n}\\n\",\"keccak256\":\"0x2e42fbba358c470ff6b57268367d248f0e2fcf8d7142d762688f7aef5efae7ee\",\"license\":\"MIT\"},\"src/utils/OwnedMulticaller.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nimport { Ownable } from \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport { INSUnified } from \\\"../interfaces/INSUnified.sol\\\";\\nimport { ErrorHandler } from \\\"../libraries/ErrorHandler.sol\\\";\\n\\ncontract OwnedMulticaller is Ownable {\\n using ErrorHandler for bool;\\n\\n constructor(address owner_) {\\n require(owner_ != address(0), \\\"owner_ == address(0x0)\\\");\\n _transferOwnership(owner_);\\n }\\n\\n function kill() external onlyOwner {\\n selfdestruct(payable(_msgSender()));\\n }\\n\\n function multiMint(\\n INSUnified rns,\\n uint256 parentId,\\n address resolver,\\n uint64 duration,\\n address[] calldata tos,\\n string[] calldata labels\\n ) external onlyOwner {\\n for (uint256 i; i < labels.length; ++i) {\\n rns.mint(parentId, labels[i], resolver, tos[i], duration);\\n }\\n }\\n\\n function multicall(address[] calldata tos, bytes[] calldata callDatas, uint256[] calldata values)\\n external\\n payable\\n onlyOwner\\n returns (bool[] memory results, bytes[] memory returnDatas)\\n {\\n require(tos.length == callDatas.length && tos.length == values.length, \\\"invalid length\\\");\\n results = new bool[](tos.length);\\n returnDatas = new bytes[](tos.length);\\n\\n for (uint256 i; i < tos.length; ++i) {\\n (results[i], returnDatas[i]) = tos[i].call{ value: values[i] }(callDatas[i]);\\n results[i].handleRevert(returnDatas[i]);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x53c4218928d23541e99884d51e9df7cb5f2a11a29e5b0021d87231c5daaff72f\",\"license\":\"MIT\"}},\"version\":1}", - "nonce": 1798, - "numDeployments": 4, + "metadata": "{\"compiler\":{\"version\":\"0.8.21+commit.d9974bed\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"tos\",\"type\":\"address[]\"},{\"internalType\":\"bytes[]\",\"name\":\"callDatas\",\"type\":\"bytes[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"results\",\"type\":\"bool[]\"},{\"internalType\":\"bytes[]\",\"name\":\"returnDatas\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"multicall(address[],bytes[],uint256[])\":{\"details\":\"Execute multiple calls in a single transaction.\",\"params\":{\"callDatas\":\"The call data for each call.\",\"tos\":\"The addresses to call.\",\"values\":\"The value to send for each call.\"},\"returns\":{\"results\":\"The results of each call.\",\"returnDatas\":\"The return data of each call.\"}},\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\":{\"details\":\"See {IERC1155Receiver-onERC1155Received}.\"},\"onERC1155Received(address,address,uint256,uint256,bytes)\":{\"details\":\"See {IERC1155Receiver-onERC1155Received}.\"},\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"See {IERC721Receiver-onERC721Received}.\"},\"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.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"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\":{\"src/utils/OwnedMulticaller.sol\":\"OwnedMulticaller\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@fdk/=dependencies/@fdk-0.3.0-beta/script/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-4.9.3/\",\":@pythnetwork/=dependencies/@pythnetwork-pyth-sdk-solidity-2.2.0/\",\":@rns-contracts/=src/\",\":@solady/=dependencies/@fdk-0.3.0-beta/dependencies/solady-0.0.206/src/\",\":buffer/=lib/buffer/contracts/\",\":contract-template/=lib/contract-template/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":ens-contracts/=lib/ens-contracts/contracts/\",\":forge-std/=dependencies/@fdk-0.3.0-beta/dependencies/forge-std-1.8.2/src/\",\":openzeppelin-contracts/=lib/contract-template/lib/openzeppelin-contracts/\"]},\"sources\":{\"dependencies/@openzeppelin-contracts-4.9.3/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../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 * By default, the owner account will be the one that deploys the contract. This\\n * can 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 event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n /**\\n * @dev Initializes the contract setting the deployer as the initial owner.\\n */\\n constructor() {\\n _transferOwnership(_msgSender());\\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 require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\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 require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\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\",\"keccak256\":\"0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218\",\"license\":\"MIT\"},\"dependencies/@openzeppelin-contracts-4.9.3/token/ERC1155/IERC1155Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/IERC1155Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev _Available since v3.1._\\n */\\ninterface IERC1155Receiver is IERC165 {\\n /**\\n * @dev Handles the receipt of a single ERC1155 token type. This function is\\n * called at the end of a `safeTransferFrom` after the balance has been updated.\\n *\\n * NOTE: To accept the transfer, this must return\\n * `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))`\\n * (i.e. 0xf23a6e61, or its own function selector).\\n *\\n * @param operator The address which initiated the transfer (i.e. msg.sender)\\n * @param from The address which previously owned the token\\n * @param id The ID of the token being transferred\\n * @param value The amount of tokens being transferred\\n * @param data Additional data with no specified format\\n * @return `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))` if transfer is allowed\\n */\\n function onERC1155Received(\\n address operator,\\n address from,\\n uint256 id,\\n uint256 value,\\n bytes calldata data\\n ) external returns (bytes4);\\n\\n /**\\n * @dev Handles the receipt of a multiple ERC1155 token types. This function\\n * is called at the end of a `safeBatchTransferFrom` after the balances have\\n * been updated.\\n *\\n * NOTE: To accept the transfer(s), this must return\\n * `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))`\\n * (i.e. 0xbc197c81, or its own function selector).\\n *\\n * @param operator The address which initiated the batch transfer (i.e. msg.sender)\\n * @param from The address which previously owned the token\\n * @param ids An array containing ids of each token being transferred (order and length must match values array)\\n * @param values An array containing amounts of each token being transferred (order and length must match ids array)\\n * @param data Additional data with no specified format\\n * @return `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))` if transfer is allowed\\n */\\n function onERC1155BatchReceived(\\n address operator,\\n address from,\\n uint256[] calldata ids,\\n uint256[] calldata values,\\n bytes calldata data\\n ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xeb373f1fdc7b755c6a750123a9b9e3a8a02c1470042fd6505d875000a80bde0b\",\"license\":\"MIT\"},\"dependencies/@openzeppelin-contracts-4.9.3/token/ERC721/IERC721Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 asset contracts.\\n */\\ninterface IERC721Receiver {\\n /**\\n * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\\n * by `operator` from `from`, this function is called.\\n *\\n * It must return its Solidity selector to confirm the token transfer.\\n * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\\n *\\n * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\\n */\\n function onERC721Received(\\n address operator,\\n address from,\\n uint256 tokenId,\\n bytes calldata data\\n ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\"},\"dependencies/@openzeppelin-contracts-4.9.3/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"dependencies/@openzeppelin-contracts-4.9.3/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"src/libraries/ErrorHandler.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nlibrary ErrorHandler {\\n error ExternalCallFailed();\\n\\n function handleRevert(bool status, bytes memory returnOrRevertData) internal pure {\\n assembly {\\n if iszero(status) {\\n let revertLength := mload(returnOrRevertData)\\n if iszero(iszero(revertLength)) {\\n // Start of revert data bytes. The 0x20 offset is always the same.\\n revert(add(returnOrRevertData, 0x20), revertLength)\\n }\\n\\n // revert ExternalCallFailed()\\n mstore(0x00, 0x350c20f1)\\n revert(0x1c, 0x04)\\n }\\n }\\n }\\n}\\n\",\"keccak256\":\"0x90049794d1f708cc33034b26d4e8c79c1c4ed630399fccd9280c9d43751e3d0e\",\"license\":\"MIT\"},\"src/utils/OwnedMulticaller.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nimport { Ownable } from \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport { ErrorHandler } from \\\"../libraries/ErrorHandler.sol\\\";\\nimport { IERC165 } from \\\"@openzeppelin/contracts/utils/introspection/IERC165.sol\\\";\\nimport { IERC721Receiver } from \\\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\\\";\\nimport { IERC1155Receiver } from \\\"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\\\";\\n\\ncontract OwnedMulticaller is Ownable, IERC721Receiver, IERC1155Receiver {\\n using ErrorHandler for bool;\\n\\n constructor(address owner_) {\\n require(owner_ != address(0), \\\"OwnedMulticaller: owner_ is null\\\");\\n\\n _transferOwnership(owner_);\\n }\\n\\n /**\\n * @dev Execute multiple calls in a single transaction.\\n * @param tos The addresses to call.\\n * @param callDatas The call data for each call.\\n * @param values The value to send for each call.\\n * @return results The results of each call.\\n * @return returnDatas The return data of each call.\\n */\\n function multicall(address[] calldata tos, bytes[] calldata callDatas, uint256[] calldata values)\\n external\\n payable\\n onlyOwner\\n returns (bool[] memory results, bytes[] memory returnDatas)\\n {\\n uint256 length = tos.length;\\n require(length == callDatas.length && length == values.length, \\\"OwnedMulticaller: mismatch length\\\");\\n results = new bool[](length);\\n returnDatas = new bytes[](length);\\n\\n for (uint256 i; i < length; ++i) {\\n (results[i], returnDatas[i]) = tos[i].call{ value: values[i] }(callDatas[i]);\\n results[i].handleRevert(returnDatas[i]);\\n }\\n }\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool) {\\n return interfaceId == type(IERC165).interfaceId || interfaceId == type(IERC721Receiver).interfaceId\\n || interfaceId == type(IERC1155Receiver).interfaceId;\\n }\\n\\n /**\\n * @dev See {IERC721Receiver-onERC721Received}.\\n */\\n function onERC721Received(address, address, uint256, bytes calldata) external pure returns (bytes4) {\\n return msg.sig;\\n }\\n\\n /**\\n * @dev See {IERC1155Receiver-onERC1155Received}.\\n */\\n function onERC1155BatchReceived(address, address, uint256[] calldata, uint256[] calldata, bytes calldata)\\n external\\n pure\\n returns (bytes4)\\n {\\n return msg.sig;\\n }\\n\\n /**\\n * @dev See {IERC1155Receiver-onERC1155Received}.\\n */\\n function onERC1155Received(address, address, uint256, uint256, bytes calldata) external pure returns (bytes4) {\\n return msg.sig;\\n }\\n}\\n\",\"keccak256\":\"0xf04de01ad97b4fd93056c617bb26e4a02d3ee09634dfb37c7fa2f4d80658b33b\",\"license\":\"MIT\"}},\"version\":1}", + "nonce": 31, "storageLayout": { "storage": [ { - "astId": 48713, + "astId": 97124, "contract": "src/utils/OwnedMulticaller.sol:OwnedMulticaller", "label": "_owner", "offset": 0, @@ -2619,7 +301,7 @@ } } }, - "timestamp": 1699937979, + "timestamp": 1721026253, "userdoc": { "version": 1, "kind": "user" diff --git a/deployments/ronin-testnet/OwnedMulticaller.json b/deployments/ronin-testnet/OwnedMulticaller.json new file mode 100644 index 0000000..b202bf0 --- /dev/null +++ b/deployments/ronin-testnet/OwnedMulticaller.json @@ -0,0 +1,309 @@ +{ + "abi": [ + { + "type": "constructor", + "inputs": [ + { + "name": "owner_", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "multicall", + "inputs": [ + { + "name": "tos", + "type": "address[]", + "internalType": "address[]" + }, + { + "name": "callDatas", + "type": "bytes[]", + "internalType": "bytes[]" + }, + { + "name": "values", + "type": "uint256[]", + "internalType": "uint256[]" + } + ], + "outputs": [ + { + "name": "results", + "type": "bool[]", + "internalType": "bool[]" + }, + { + "name": "returnDatas", + "type": "bytes[]", + "internalType": "bytes[]" + } + ], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "onERC1155BatchReceived", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "uint256[]", + "internalType": "uint256[]" + }, + { + "name": "", + "type": "uint256[]", + "internalType": "uint256[]" + }, + { + "name": "", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes4", + "internalType": "bytes4" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "onERC1155Received", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes4", + "internalType": "bytes4" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "onERC721Received", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes4", + "internalType": "bytes4" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "owner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "renounceOwnership", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "supportsInterface", + "inputs": [ + { + "name": "interfaceId", + "type": "bytes4", + "internalType": "bytes4" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "transferOwnership", + "inputs": [ + { + "name": "newOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { + "name": "previousOwner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newOwner", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + } + ], + "absolutePath": "OwnedMulticaller.sol", + "address": "0xAcC5b257F42A14436B8f231769E2f22E91EE39dc", + "ast": "", + "blockNumber": 29091801, + "bytecode": "0x608060405234801561001057600080fd5b50604051610c03380380610c0383398101604081905261002f916100f1565b610038336100a1565b6001600160a01b0381166100925760405162461bcd60e51b815260206004820181905260248201527f4f776e65644d756c746963616c6c65723a206f776e65725f206973206e756c6c604482015260640160405180910390fd5b61009b816100a1565b50610121565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561010357600080fd5b81516001600160a01b038116811461011a57600080fd5b9392505050565b610ad3806101306000396000f3fe60806040526004361061007b5760003560e01c80638da5cb5b1161004e5780638da5cb5b14610137578063bc197c811461015f578063f23a6e6114610193578063f2fde38b146101c557600080fd5b806301ffc9a714610080578063150b7a02146100b557806328181829146100ff578063715018a614610120575b600080fd5b34801561008c57600080fd5b506100a061009b36600461060a565b6101e5565b60405190151581526020015b60405180910390f35b3480156100c157600080fd5b506100e66100d03660046106a0565b6001600160e01b03196000351695945050505050565b6040516001600160e01b031990911681526020016100ac565b61011261010d366004610754565b610237565b6040516100ac9291906107ee565b34801561012c57600080fd5b506101356104ac565b005b34801561014357600080fd5b506000546040516001600160a01b0390911681526020016100ac565b34801561016b57600080fd5b506100e661017a3660046108b7565b6001600160e01b03196000351698975050505050505050565b34801561019f57600080fd5b506100e66101ae366004610972565b6001600160e01b0319600035169695505050505050565b3480156101d157600080fd5b506101356101e03660046109d8565b6104c0565b60006001600160e01b031982166301ffc9a760e01b148061021657506001600160e01b03198216630a85bd0160e11b145b8061023157506001600160e01b03198216630271189760e51b145b92915050565b606080610242610539565b86858114801561025157508084145b6102ac5760405162461bcd60e51b815260206004820152602160248201527f4f776e65644d756c746963616c6c65723a206d69736d61746368206c656e67746044820152600d60fb1b60648201526084015b60405180910390fd5b8067ffffffffffffffff8111156102c5576102c56109f3565b6040519080825280602002602001820160405280156102ee578160200160208202803683370190505b5092508067ffffffffffffffff81111561030a5761030a6109f3565b60405190808252806020026020018201604052801561033d57816020015b60608152602001906001900390816103285790505b50915060005b8181101561049f5789898281811061035d5761035d610a09565b905060200201602081019061037291906109d8565b6001600160a01b031686868381811061038d5761038d610a09565b905060200201358989848181106103a6576103a6610a09565b90506020028101906103b89190610a1f565b6040516103c6929190610a66565b60006040518083038185875af1925050503d8060008114610403576040519150601f19603f3d011682016040523d82523d6000602084013e610408565b606091505b5085838151811061041b5761041b610a09565b6020026020010185848151811061043457610434610a09565b602002602001018290528215151515815250505061048f83828151811061045d5761045d610a09565b602002602001015185838151811061047757610477610a09565b6020026020010151151561059390919063ffffffff16565b61049881610a76565b9050610343565b5050965096945050505050565b6104b4610539565b6104be60006105ba565b565b6104c8610539565b6001600160a01b03811661052d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102a3565b610536816105ba565b50565b6000546001600160a01b031633146104be5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102a3565b816105b657805180156105a7578060208301fd5b5063350c20f16000526004601cfd5b5050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561061c57600080fd5b81356001600160e01b03198116811461063457600080fd5b9392505050565b80356001600160a01b038116811461065257600080fd5b919050565b60008083601f84011261066957600080fd5b50813567ffffffffffffffff81111561068157600080fd5b60208301915083602082850101111561069957600080fd5b9250929050565b6000806000806000608086880312156106b857600080fd5b6106c18661063b565b94506106cf6020870161063b565b935060408601359250606086013567ffffffffffffffff8111156106f257600080fd5b6106fe88828901610657565b969995985093965092949392505050565b60008083601f84011261072157600080fd5b50813567ffffffffffffffff81111561073957600080fd5b6020830191508360208260051b850101111561069957600080fd5b6000806000806000806060878903121561076d57600080fd5b863567ffffffffffffffff8082111561078557600080fd5b6107918a838b0161070f565b909850965060208901359150808211156107aa57600080fd5b6107b68a838b0161070f565b909650945060408901359150808211156107cf57600080fd5b506107dc89828a0161070f565b979a9699509497509295939492505050565b604080825283519082018190526000906020906060840190828701845b8281101561082957815115158452928401929084019060010161080b565b50505083810382850152845180825282820190600581901b8301840187850160005b838110156108a857601f19808785030186528251805180865260005b81811015610882578281018b01518782018c01528a01610867565b5060008682018b015296890196601f01909116909301870192509086019060010161084b565b50909998505050505050505050565b60008060008060008060008060a0898b0312156108d357600080fd5b6108dc8961063b565b97506108ea60208a0161063b565b9650604089013567ffffffffffffffff8082111561090757600080fd5b6109138c838d0161070f565b909850965060608b013591508082111561092c57600080fd5b6109388c838d0161070f565b909650945060808b013591508082111561095157600080fd5b5061095e8b828c01610657565b999c989b5096995094979396929594505050565b60008060008060008060a0878903121561098b57600080fd5b6109948761063b565b95506109a26020880161063b565b94506040870135935060608701359250608087013567ffffffffffffffff8111156109cc57600080fd5b6107dc89828a01610657565b6000602082840312156109ea57600080fd5b6106348261063b565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000808335601e19843603018112610a3657600080fd5b83018035915067ffffffffffffffff821115610a5157600080fd5b60200191503681900382131561069957600080fd5b8183823760009101908152919050565b600060018201610a9657634e487b7160e01b600052601160045260246000fd5b506001019056fea2646970667358221220c6e782435409115b4deccd23086900709e0132eb6d6810b5c9d00eb571d0ce0164736f6c63430008150033", + "callValue": 0, + "chainId": 2021, + "constructorArgs": "0x000000000000000000000000792428597158d73ff55333659957057f93362dfc", + "contractName": "OwnedMulticaller", + "deployedBytecode": "0x60806040526004361061007b5760003560e01c80638da5cb5b1161004e5780638da5cb5b14610137578063bc197c811461015f578063f23a6e6114610193578063f2fde38b146101c557600080fd5b806301ffc9a714610080578063150b7a02146100b557806328181829146100ff578063715018a614610120575b600080fd5b34801561008c57600080fd5b506100a061009b36600461060a565b6101e5565b60405190151581526020015b60405180910390f35b3480156100c157600080fd5b506100e66100d03660046106a0565b6001600160e01b03196000351695945050505050565b6040516001600160e01b031990911681526020016100ac565b61011261010d366004610754565b610237565b6040516100ac9291906107ee565b34801561012c57600080fd5b506101356104ac565b005b34801561014357600080fd5b506000546040516001600160a01b0390911681526020016100ac565b34801561016b57600080fd5b506100e661017a3660046108b7565b6001600160e01b03196000351698975050505050505050565b34801561019f57600080fd5b506100e66101ae366004610972565b6001600160e01b0319600035169695505050505050565b3480156101d157600080fd5b506101356101e03660046109d8565b6104c0565b60006001600160e01b031982166301ffc9a760e01b148061021657506001600160e01b03198216630a85bd0160e11b145b8061023157506001600160e01b03198216630271189760e51b145b92915050565b606080610242610539565b86858114801561025157508084145b6102ac5760405162461bcd60e51b815260206004820152602160248201527f4f776e65644d756c746963616c6c65723a206d69736d61746368206c656e67746044820152600d60fb1b60648201526084015b60405180910390fd5b8067ffffffffffffffff8111156102c5576102c56109f3565b6040519080825280602002602001820160405280156102ee578160200160208202803683370190505b5092508067ffffffffffffffff81111561030a5761030a6109f3565b60405190808252806020026020018201604052801561033d57816020015b60608152602001906001900390816103285790505b50915060005b8181101561049f5789898281811061035d5761035d610a09565b905060200201602081019061037291906109d8565b6001600160a01b031686868381811061038d5761038d610a09565b905060200201358989848181106103a6576103a6610a09565b90506020028101906103b89190610a1f565b6040516103c6929190610a66565b60006040518083038185875af1925050503d8060008114610403576040519150601f19603f3d011682016040523d82523d6000602084013e610408565b606091505b5085838151811061041b5761041b610a09565b6020026020010185848151811061043457610434610a09565b602002602001018290528215151515815250505061048f83828151811061045d5761045d610a09565b602002602001015185838151811061047757610477610a09565b6020026020010151151561059390919063ffffffff16565b61049881610a76565b9050610343565b5050965096945050505050565b6104b4610539565b6104be60006105ba565b565b6104c8610539565b6001600160a01b03811661052d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102a3565b610536816105ba565b50565b6000546001600160a01b031633146104be5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102a3565b816105b657805180156105a7578060208301fd5b5063350c20f16000526004601cfd5b5050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561061c57600080fd5b81356001600160e01b03198116811461063457600080fd5b9392505050565b80356001600160a01b038116811461065257600080fd5b919050565b60008083601f84011261066957600080fd5b50813567ffffffffffffffff81111561068157600080fd5b60208301915083602082850101111561069957600080fd5b9250929050565b6000806000806000608086880312156106b857600080fd5b6106c18661063b565b94506106cf6020870161063b565b935060408601359250606086013567ffffffffffffffff8111156106f257600080fd5b6106fe88828901610657565b969995985093965092949392505050565b60008083601f84011261072157600080fd5b50813567ffffffffffffffff81111561073957600080fd5b6020830191508360208260051b850101111561069957600080fd5b6000806000806000806060878903121561076d57600080fd5b863567ffffffffffffffff8082111561078557600080fd5b6107918a838b0161070f565b909850965060208901359150808211156107aa57600080fd5b6107b68a838b0161070f565b909650945060408901359150808211156107cf57600080fd5b506107dc89828a0161070f565b979a9699509497509295939492505050565b604080825283519082018190526000906020906060840190828701845b8281101561082957815115158452928401929084019060010161080b565b50505083810382850152845180825282820190600581901b8301840187850160005b838110156108a857601f19808785030186528251805180865260005b81811015610882578281018b01518782018c01528a01610867565b5060008682018b015296890196601f01909116909301870192509086019060010161084b565b50909998505050505050505050565b60008060008060008060008060a0898b0312156108d357600080fd5b6108dc8961063b565b97506108ea60208a0161063b565b9650604089013567ffffffffffffffff8082111561090757600080fd5b6109138c838d0161070f565b909850965060608b013591508082111561092c57600080fd5b6109388c838d0161070f565b909650945060808b013591508082111561095157600080fd5b5061095e8b828c01610657565b999c989b5096995094979396929594505050565b60008060008060008060a0878903121561098b57600080fd5b6109948761063b565b95506109a26020880161063b565b94506040870135935060608701359250608087013567ffffffffffffffff8111156109cc57600080fd5b6107dc89828a01610657565b6000602082840312156109ea57600080fd5b6106348261063b565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000808335601e19843603018112610a3657600080fd5b83018035915067ffffffffffffffff821115610a5157600080fd5b60200191503681900382131561069957600080fd5b8183823760009101908152919050565b600060018201610a9657634e487b7160e01b600052601160045260246000fd5b506001019056fea2646970667358221220c6e782435409115b4deccd23086900709e0132eb6d6810b5c9d00eb571d0ce0164736f6c63430008150033", + "deployer": "0x968D0Cd7343f711216817E617d3f92a23dC91c07", + "devdoc": { + "version": 1, + "kind": "dev", + "methods": { + "multicall(address[],bytes[],uint256[])": { + "details": "Execute multiple calls in a single transaction.", + "params": { + "callDatas": "The call data for each call.", + "tos": "The addresses to call.", + "values": "The value to send for each call." + }, + "returns": { + "results": "The results of each call.", + "returnDatas": "The return data of each call." + } + }, + "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)": { + "details": "See {IERC1155Receiver-onERC1155Received}." + }, + "onERC1155Received(address,address,uint256,uint256,bytes)": { + "details": "See {IERC1155Receiver-onERC1155Received}." + }, + "onERC721Received(address,address,uint256,bytes)": { + "details": "See {IERC721Receiver-onERC721Received}." + }, + "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." + }, + "supportsInterface(bytes4)": { + "details": "See {IERC165-supportsInterface}." + }, + "transferOwnership(address)": { + "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner." + } + } + }, + "isFoundry": true, + "metadata": "{\"compiler\":{\"version\":\"0.8.21+commit.d9974bed\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"tos\",\"type\":\"address[]\"},{\"internalType\":\"bytes[]\",\"name\":\"callDatas\",\"type\":\"bytes[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"results\",\"type\":\"bool[]\"},{\"internalType\":\"bytes[]\",\"name\":\"returnDatas\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"multicall(address[],bytes[],uint256[])\":{\"details\":\"Execute multiple calls in a single transaction.\",\"params\":{\"callDatas\":\"The call data for each call.\",\"tos\":\"The addresses to call.\",\"values\":\"The value to send for each call.\"},\"returns\":{\"results\":\"The results of each call.\",\"returnDatas\":\"The return data of each call.\"}},\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\":{\"details\":\"See {IERC1155Receiver-onERC1155Received}.\"},\"onERC1155Received(address,address,uint256,uint256,bytes)\":{\"details\":\"See {IERC1155Receiver-onERC1155Received}.\"},\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"See {IERC721Receiver-onERC721Received}.\"},\"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.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"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\":{\"src/utils/OwnedMulticaller.sol\":\"OwnedMulticaller\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/buffer/=lib/buffer/\",\":@ensdomains/ens-contracts/=lib/ens-contracts/contracts/\",\":@fdk/=dependencies/@fdk-0.3.0-beta/script/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-4.9.3/\",\":@pythnetwork/=dependencies/@pythnetwork-pyth-sdk-solidity-2.2.0/\",\":@rns-contracts/=src/\",\":@solady/=dependencies/@fdk-0.3.0-beta/dependencies/solady-0.0.206/src/\",\":buffer/=lib/buffer/contracts/\",\":contract-template/=lib/contract-template/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":ens-contracts/=lib/ens-contracts/contracts/\",\":forge-std/=dependencies/@fdk-0.3.0-beta/dependencies/forge-std-1.8.2/src/\",\":openzeppelin-contracts/=lib/contract-template/lib/openzeppelin-contracts/\"]},\"sources\":{\"dependencies/@openzeppelin-contracts-4.9.3/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../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 * By default, the owner account will be the one that deploys the contract. This\\n * can 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 event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n /**\\n * @dev Initializes the contract setting the deployer as the initial owner.\\n */\\n constructor() {\\n _transferOwnership(_msgSender());\\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 require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\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 require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\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\",\"keccak256\":\"0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218\",\"license\":\"MIT\"},\"dependencies/@openzeppelin-contracts-4.9.3/token/ERC1155/IERC1155Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/IERC1155Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev _Available since v3.1._\\n */\\ninterface IERC1155Receiver is IERC165 {\\n /**\\n * @dev Handles the receipt of a single ERC1155 token type. This function is\\n * called at the end of a `safeTransferFrom` after the balance has been updated.\\n *\\n * NOTE: To accept the transfer, this must return\\n * `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))`\\n * (i.e. 0xf23a6e61, or its own function selector).\\n *\\n * @param operator The address which initiated the transfer (i.e. msg.sender)\\n * @param from The address which previously owned the token\\n * @param id The ID of the token being transferred\\n * @param value The amount of tokens being transferred\\n * @param data Additional data with no specified format\\n * @return `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))` if transfer is allowed\\n */\\n function onERC1155Received(\\n address operator,\\n address from,\\n uint256 id,\\n uint256 value,\\n bytes calldata data\\n ) external returns (bytes4);\\n\\n /**\\n * @dev Handles the receipt of a multiple ERC1155 token types. This function\\n * is called at the end of a `safeBatchTransferFrom` after the balances have\\n * been updated.\\n *\\n * NOTE: To accept the transfer(s), this must return\\n * `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))`\\n * (i.e. 0xbc197c81, or its own function selector).\\n *\\n * @param operator The address which initiated the batch transfer (i.e. msg.sender)\\n * @param from The address which previously owned the token\\n * @param ids An array containing ids of each token being transferred (order and length must match values array)\\n * @param values An array containing amounts of each token being transferred (order and length must match ids array)\\n * @param data Additional data with no specified format\\n * @return `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))` if transfer is allowed\\n */\\n function onERC1155BatchReceived(\\n address operator,\\n address from,\\n uint256[] calldata ids,\\n uint256[] calldata values,\\n bytes calldata data\\n ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xeb373f1fdc7b755c6a750123a9b9e3a8a02c1470042fd6505d875000a80bde0b\",\"license\":\"MIT\"},\"dependencies/@openzeppelin-contracts-4.9.3/token/ERC721/IERC721Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 asset contracts.\\n */\\ninterface IERC721Receiver {\\n /**\\n * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\\n * by `operator` from `from`, this function is called.\\n *\\n * It must return its Solidity selector to confirm the token transfer.\\n * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\\n *\\n * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\\n */\\n function onERC721Received(\\n address operator,\\n address from,\\n uint256 tokenId,\\n bytes calldata data\\n ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\"},\"dependencies/@openzeppelin-contracts-4.9.3/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"dependencies/@openzeppelin-contracts-4.9.3/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"src/libraries/ErrorHandler.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nlibrary ErrorHandler {\\n error ExternalCallFailed();\\n\\n function handleRevert(bool status, bytes memory returnOrRevertData) internal pure {\\n assembly {\\n if iszero(status) {\\n let revertLength := mload(returnOrRevertData)\\n if iszero(iszero(revertLength)) {\\n // Start of revert data bytes. The 0x20 offset is always the same.\\n revert(add(returnOrRevertData, 0x20), revertLength)\\n }\\n\\n // revert ExternalCallFailed()\\n mstore(0x00, 0x350c20f1)\\n revert(0x1c, 0x04)\\n }\\n }\\n }\\n}\\n\",\"keccak256\":\"0x90049794d1f708cc33034b26d4e8c79c1c4ed630399fccd9280c9d43751e3d0e\",\"license\":\"MIT\"},\"src/utils/OwnedMulticaller.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nimport { Ownable } from \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport { ErrorHandler } from \\\"../libraries/ErrorHandler.sol\\\";\\nimport { IERC165 } from \\\"@openzeppelin/contracts/utils/introspection/IERC165.sol\\\";\\nimport { IERC721Receiver } from \\\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\\\";\\nimport { IERC1155Receiver } from \\\"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\\\";\\n\\ncontract OwnedMulticaller is Ownable, IERC721Receiver, IERC1155Receiver {\\n using ErrorHandler for bool;\\n\\n constructor(address owner_) {\\n require(owner_ != address(0), \\\"OwnedMulticaller: owner_ is null\\\");\\n\\n _transferOwnership(owner_);\\n }\\n\\n /**\\n * @dev Execute multiple calls in a single transaction.\\n * @param tos The addresses to call.\\n * @param callDatas The call data for each call.\\n * @param values The value to send for each call.\\n * @return results The results of each call.\\n * @return returnDatas The return data of each call.\\n */\\n function multicall(address[] calldata tos, bytes[] calldata callDatas, uint256[] calldata values)\\n external\\n payable\\n onlyOwner\\n returns (bool[] memory results, bytes[] memory returnDatas)\\n {\\n uint256 length = tos.length;\\n require(length == callDatas.length && length == values.length, \\\"OwnedMulticaller: mismatch length\\\");\\n results = new bool[](length);\\n returnDatas = new bytes[](length);\\n\\n for (uint256 i; i < length; ++i) {\\n (results[i], returnDatas[i]) = tos[i].call{ value: values[i] }(callDatas[i]);\\n results[i].handleRevert(returnDatas[i]);\\n }\\n }\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool) {\\n return interfaceId == type(IERC165).interfaceId || interfaceId == type(IERC721Receiver).interfaceId\\n || interfaceId == type(IERC1155Receiver).interfaceId;\\n }\\n\\n /**\\n * @dev See {IERC721Receiver-onERC721Received}.\\n */\\n function onERC721Received(address, address, uint256, bytes calldata) external pure returns (bytes4) {\\n return msg.sig;\\n }\\n\\n /**\\n * @dev See {IERC1155Receiver-onERC1155Received}.\\n */\\n function onERC1155BatchReceived(address, address, uint256[] calldata, uint256[] calldata, bytes calldata)\\n external\\n pure\\n returns (bytes4)\\n {\\n return msg.sig;\\n }\\n\\n /**\\n * @dev See {IERC1155Receiver-onERC1155Received}.\\n */\\n function onERC1155Received(address, address, uint256, uint256, bytes calldata) external pure returns (bytes4) {\\n return msg.sig;\\n }\\n}\\n\",\"keccak256\":\"0xf04de01ad97b4fd93056c617bb26e4a02d3ee09634dfb37c7fa2f4d80658b33b\",\"license\":\"MIT\"}},\"version\":1}", + "nonce": 195107, + "storageLayout": { + "storage": [ + { + "astId": 97124, + "contract": "src/utils/OwnedMulticaller.sol:OwnedMulticaller", + "label": "_owner", + "offset": 0, + "slot": "0", + "type": "t_address" + } + ], + "types": { + "t_address": { + "encoding": "inplace", + "label": "address", + "numberOfBytes": "20" + } + } + }, + "timestamp": 1721017125, + "userdoc": { + "version": 1, + "kind": "user" + } +} \ No newline at end of file