@aave/governance-crosschain-bridges
Version:
Contracts of Aave Governance Crosschain Bridges
5,010 lines • 264 kB
JSON
{
"id": "9222a66b7c6c339317e9b3a5ec0557bf",
"_format": "hh-sol-build-info-1",
"solcVersion": "0.8.10",
"solcLongVersion": "0.8.10+commit.fc410830",
"input": {
"language": "Solidity",
"sources": {
"contracts/dependencies/polygon/fxportal/FxChild.sol": {
"content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.10;\n\n// IStateReceiver represents interface to receive state\ninterface IStateReceiver {\n function onStateReceive(uint256 stateId, bytes calldata data) external;\n}\n\n// IFxMessageProcessor represents interface to process message\ninterface IFxMessageProcessor {\n function processMessageFromRoot(\n uint256 stateId,\n address rootMessageSender,\n bytes calldata data\n ) external;\n}\n\n/**\n * @title FxChild child contract for state receiver\n */\ncontract FxChild is IStateReceiver {\n address public fxRoot;\n\n event NewFxMessage(address rootMessageSender, address receiver, bytes data);\n\n function setFxRoot(address _fxRoot) public {\n require(fxRoot == address(0x0));\n fxRoot = _fxRoot;\n }\n\n function onStateReceive(uint256 stateId, bytes calldata _data) external override {\n // require(msg.sender == address(0x0000000000000000000000000000000000001001), 'Invalid sender');\n (address rootMessageSender, address receiver, bytes memory data) = abi.decode(\n _data,\n (address, address, bytes)\n );\n emit NewFxMessage(rootMessageSender, receiver, data);\n IFxMessageProcessor(receiver).processMessageFromRoot(stateId, rootMessageSender, data);\n }\n}\n"
}
},
"settings": {
"optimizer": {
"enabled": true,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"abi",
"evm.bytecode",
"evm.deployedBytecode",
"evm.methodIdentifiers",
"metadata",
"devdoc",
"userdoc",
"storageLayout",
"evm.gasEstimates"
],
"": [
"ast"
]
}
},
"metadata": {
"useLiteralContent": true
}
}
},
"output": {
"contracts": {
"contracts/dependencies/polygon/fxportal/FxChild.sol": {
"FxChild": {
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "rootMessageSender",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "receiver",
"type": "address"
},
{
"indexed": false,
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "NewFxMessage",
"type": "event"
},
{
"inputs": [],
"name": "fxRoot",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "stateId",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "_data",
"type": "bytes"
}
],
"name": "onStateReceive",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_fxRoot",
"type": "address"
}
],
"name": "setFxRoot",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"title": "FxChild child contract for state receiver",
"version": 1
},
"evm": {
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "608060405234801561001057600080fd5b50610416806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806326c53bea146100465780634c8ff99e1461005b578063de9b771f1461006e575b600080fd5b610059610054366004610190565b61009d565b005b610059610069366004610224565b610158565b600054610081906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b600080806100ad8486018661025e565b9250925092507ff091cd9cbbaff01426d8183042dff452ef18e6690f19816d5dd114e00761e0e88383836040516100e693929190610381565b60405180910390a1604051639a7c4b7160e01b81526001600160a01b03831690639a7c4b719061011e908990879086906004016103b6565b600060405180830381600087803b15801561013857600080fd5b505af115801561014c573d6000803e3d6000fd5b50505050505050505050565b6000546001600160a01b03161561016e57600080fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000604084860312156101a557600080fd5b83359250602084013567ffffffffffffffff808211156101c457600080fd5b818601915086601f8301126101d857600080fd5b8135818111156101e757600080fd5b8760208285010111156101f957600080fd5b6020830194508093505050509250925092565b6001600160a01b038116811461022157600080fd5b50565b60006020828403121561023657600080fd5b81356102418161020c565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561027357600080fd5b833561027e8161020c565b9250602084013561028e8161020c565b9150604084013567ffffffffffffffff808211156102ab57600080fd5b818601915086601f8301126102bf57600080fd5b8135818111156102d1576102d1610248565b604051601f8201601f19908116603f011681019083821181831017156102f9576102f9610248565b8160405282815289602084870101111561031257600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000815180845260005b8181101561035a5760208185018101518683018201520161033e565b8181111561036c576000602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b038481168252831660208201526060604082018190526000906103ad90830184610334565b95945050505050565b8381526001600160a01b03831660208201526060604082018190526000906103ad9083018461033456fea26469706673582212208620e8f7316f72f9feea933687f95b3e7b2731c7c0d83f7f54a2b95342e2223b64736f6c634300080a0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x416 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x26C53BEA EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x4C8FF99E EQ PUSH2 0x5B JUMPI DUP1 PUSH4 0xDE9B771F EQ PUSH2 0x6E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x59 PUSH2 0x54 CALLDATASIZE PUSH1 0x4 PUSH2 0x190 JUMP JUMPDEST PUSH2 0x9D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x59 PUSH2 0x69 CALLDATASIZE PUSH1 0x4 PUSH2 0x224 JUMP JUMPDEST PUSH2 0x158 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x81 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0xAD DUP5 DUP7 ADD DUP7 PUSH2 0x25E JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH32 0xF091CD9CBBAFF01426D8183042DFF452EF18E6690F19816D5DD114E00761E0E8 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH2 0xE6 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x381 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0x40 MLOAD PUSH4 0x9A7C4B71 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x9A7C4B71 SWAP1 PUSH2 0x11E SWAP1 DUP10 SWAP1 DUP8 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x3B6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x138 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x14C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x16E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x1E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x1F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP5 POP DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x221 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x236 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x241 DUP2 PUSH2 0x20C JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x273 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x27E DUP2 PUSH2 0x20C JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x28E DUP2 PUSH2 0x20C JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2D1 JUMPI PUSH2 0x2D1 PUSH2 0x248 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x2F9 JUMPI PUSH2 0x2F9 PUSH2 0x248 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP10 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x312 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x35A JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x33E JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x36C JUMPI PUSH1 0x0 PUSH1 0x20 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND DUP3 MSTORE DUP4 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x60 PUSH1 0x40 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x3AD SWAP1 DUP4 ADD DUP5 PUSH2 0x334 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x60 PUSH1 0x40 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x3AD SWAP1 DUP4 ADD DUP5 PUSH2 0x334 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP7 KECCAK256 0xE8 0xF7 BALANCE PUSH16 0x72F9FEEA933687F95B3E7B2731C7C0D8 EXTCODEHASH PUSH32 0x54A2B95342E2223B64736F6C634300080A003300000000000000000000000000 ",
"sourceMap": "501:730:0:-:0;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@fxRoot_24": {
"entryPoint": null,
"id": 24,
"parameterSlots": 0,
"returnSlots": 0
},
"@onStateReceive_93": {
"entryPoint": 157,
"id": 93,
"parameterSlots": 3,
"returnSlots": 0
},
"@setFxRoot_51": {
"entryPoint": 344,
"id": 51,
"parameterSlots": 1,
"returnSlots": 0
},
"abi_decode_tuple_t_address": {
"entryPoint": 548,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_address_payablet_address_payablet_bytes_memory_ptr": {
"entryPoint": 606,
"id": null,
"parameterSlots": 2,
"returnSlots": 3
},
"abi_decode_tuple_t_uint256t_bytes_calldata_ptr": {
"entryPoint": 400,
"id": null,
"parameterSlots": 2,
"returnSlots": 3
},
"abi_encode_bytes": {
"entryPoint": 820,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_address_t_address_t_bytes_memory_ptr__to_t_address_t_address_t_bytes_memory_ptr__fromStack_reversed": {
"entryPoint": 897,
"id": null,
"parameterSlots": 4,
"returnSlots": 1
},
"abi_encode_tuple_t_uint256_t_address_t_bytes_memory_ptr__to_t_uint256_t_address_t_bytes_memory_ptr__fromStack_reversed": {
"entryPoint": 950,
"id": null,
"parameterSlots": 4,
"returnSlots": 1
},
"panic_error_0x41": {
"entryPoint": 584,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"validator_revert_address": {
"entryPoint": 524,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:3907:1",
"statements": [
{
"nodeType": "YulBlock",
"src": "6:3:1",
"statements": []
},
{
"body": {
"nodeType": "YulBlock",
"src": "120:553:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "166:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "175:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "178:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "168:6:1"
},
"nodeType": "YulFunctionCall",
"src": "168:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "168:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "141:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "150:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "137:3:1"
},
"nodeType": "YulFunctionCall",
"src": "137:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "162:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "133:3:1"
},
"nodeType": "YulFunctionCall",
"src": "133:32:1"
},
"nodeType": "YulIf",
"src": "130:52:1"
},
{
"nodeType": "YulAssignment",
"src": "191:33:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "214:9:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "201:12:1"
},
"nodeType": "YulFunctionCall",
"src": "201:23:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "191:6:1"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "233:46:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "264:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "275:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "260:3:1"
},
"nodeType": "YulFunctionCall",
"src": "260:18:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "247:12:1"
},
"nodeType": "YulFunctionCall",
"src": "247:32:1"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "237:6:1",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "288:28:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "298:18:1",
"type": "",
"value": "0xffffffffffffffff"
},
"variables": [
{
"name": "_1",
"nodeType": "YulTypedName",
"src": "292:2:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "343:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "352:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "355:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "345:6:1"
},
"nodeType": "YulFunctionCall",
"src": "345:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "345:12:1"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "331:6:1"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "339:2:1"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "328:2:1"
},
"nodeType": "YulFunctionCall",
"src": "328:14:1"
},
"nodeType": "YulIf",
"src": "325:34:1"
},
{
"nodeType": "YulVariableDeclaration",
"src": "368:32:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "382:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "393:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "378:3:1"
},
"nodeType": "YulFunctionCall",
"src": "378:22:1"
},
"variables": [
{
"name": "_2",
"nodeType": "YulTypedName",
"src": "372:2:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "448:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "457:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "460:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "450:6:1"
},
"nodeType": "YulFunctionCall",
"src": "450:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "450:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "_2",
"nodeType": "YulIdentifier",
"src": "427:2:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "431:4:1",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "423:3:1"
},
"nodeType": "YulFunctionCall",
"src": "423:13:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "438:7:1"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "419:3:1"
},
"nodeType": "YulFunctionCall",
"src": "419:27:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "412:6:1"
},
"nodeType": "YulFunctionCall",
"src": "412:35:1"
},
"nodeType": "YulIf",
"src": "409:55:1"
},
{
"nodeType": "YulVariableDeclaration",
"src": "473:30:1",
"value": {
"arguments": [
{
"name": "_2",
"nodeType": "YulIdentifier",
"src": "500:2:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "487:12:1"
},
"nodeType": "YulFunctionCall",
"src": "487:16:1"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "477:6:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "530:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "539:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "542:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "532:6:1"
},
"nodeType": "YulFunctionCall",
"src": "532:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "532:12:1"
}
]
},
"condition": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "518:6:1"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "526:2:1"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "515:2:1"
},
"nodeType": "YulFunctionCall",
"src": "515:14:1"
},
"nodeType": "YulIf",
"src": "512:34:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "596:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "605:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "608:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "598:6:1"
},
"nodeType": "YulFunctionCall",
"src": "598:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "598:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "_2",
"nodeType": "YulIdentifier",
"src": "569:2:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "573:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "565:3:1"
},
"nodeType": "YulFunctionCall",
"src": "565:15:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "582:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "561:3:1"
},
"nodeType": "YulFunctionCall",
"src": "561:24:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "587:7:1"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "558:2:1"
},
"nodeType": "YulFunctionCall",
"src": "558:37:1"
},
"nodeType": "YulIf",
"src": "555:57:1"
},
{
"nodeType": "YulAssignment",
"src": "621:21:1",
"value": {
"arguments": [
{
"name": "_2",
"nodeType": "YulIdentifier",
"src": "635:2:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "639:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "631:3:1"
},
"nodeType": "YulFunctionCall",
"src": "631:11:1"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "621:6:1"
}
]
},
{
"nodeType": "YulAssignment",
"src": "651:16:1",
"value": {
"name": "length",
"nodeType": "YulIdentifier",
"src": "661:6:1"
},
"variableNames": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "651:6:1"
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256t_bytes_calldata_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "70:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "81:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "93:6:1",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "101:6:1",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "109:6:1",
"type": ""
}
],
"src": "14:659:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "723:86:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "787:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "796:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "799:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "789:6:1"
},
"nodeType": "YulFunctionCall",
"src": "789:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "789:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "746:5:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "757:5:1"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "772:3:1",
"type": "",
"value": "160"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "777:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "768:3:1"
},
"nodeType": "YulFunctionCall",
"src": "768:11:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "781:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "764:3:1"
},
"nodeType": "YulFunctionCall",
"src": "764:19:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "753:3:1"
},
"nodeType": "YulFunctionCall",
"src": "753:31:1"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "743:2:1"
},
"nodeType": "YulFunctionCall",
"src": "743:42:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "736:6:1"
},
"nodeType": "YulFunctionCall",
"src": "736:50:1"
},
"nodeType": "YulIf",
"src": "733:70:1"
}
]
},
"name": "validator_revert_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "712:5:1",
"type": ""
}
],
"src": "678:131:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "884:177:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "930:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "939:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "942:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "932:6:1"
},
"nodeType": "YulFunctionCall",
"src": "932:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "932:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "905:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "914:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "901:3:1"
},
"nodeType": "YulFunctionCall",
"src": "901:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "926:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "897:3:1"
},
"nodeType": "YulFunctionCall",
"src": "897:32:1"
},
"nodeType": "YulIf",
"src": "894:52:1"
},
{
"nodeType": "YulVariableDeclaration",
"src": "955:36:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "981:9:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "968:12:1"
},
"nodeType": "YulFunctionCall",
"src": "968:23:1"
},
"variables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "959:5:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1025:5:1"
}
],
"functionName": {
"name": "validator_revert_address",
"nodeType": "YulIdentifier",
"src": "1000:24:1"
},
"nodeType": "YulFunctionCall",
"src": "1000:31:1"
},
"nodeType": "YulExpressionStatement",
"src": "1000:31:1"
},
{
"nodeType": "YulAssignment",
"src": "1040:15:1",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "1050:5:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1040:6:1"
}
]
}
]
},
"name": "abi_decode_tuple_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "850:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "861:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "873:6:1",
"type": ""
}
],
"src": "814:247:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1167:102:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1177:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1189:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1200:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1185:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1185:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1177:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1219:9:1"
},
{
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1234:6:1"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1250:3:1",
"type": "",
"value": "160"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1255:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "1246:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1246:11:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1259:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "1242:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1242:19:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "1230:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1230:32:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1212:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1212:51:1"
},
"nodeType": "YulExpressionStatement",
"src": "1212:51:1"
}
]
},
"name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1136:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1147:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "1158:4:1",
"type": ""
}
],
"src": "1066:203:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1306:95:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1323:1:1",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1330:3:1",
"type": "",
"value": "224"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1335:10:1",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "1326:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1326:20:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1316:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1316:31:1"
},
"nodeType": "YulExpressionStatement",
"src": "1316:31:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1363:1:1",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1366:4:1",
"type": "",
"value": "0x41"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1356:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1356:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "1356:15:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1387:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1390:4:1",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1380:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1380:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "1380:15:1"
}
]
},
"name": "panic_error_0x41",
"nodeType": "YulFunctionDefinition",
"src": "1274:127:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1535:1084:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1581:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1590:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1593:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1583:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1583:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "1583:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1556:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1565:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "1552:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1552:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1577:2:1",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "1548:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1548:32:1"
},
"nodeType": "YulIf",
"src": "1545:52:1"
},
{
"nodeType": "YulVariableDeclaration",
"src": "1606:36:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1632:9:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "1619:12:1"
},
"nodeType": "YulFunctionCall",
"src": "1619:23:1"
},
"variables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1610:5:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1676:5:1"
}
],
"functionName": {
"name": "validator_revert_address",
"nodeType": "YulIdentifier",
"src": "1651:24:1"
},
"nodeType": "YulFunctionCall",
"src": "1651:31:1"
},
"nodeType": "YulExpressionStatement",
"src": "1651:31:1"
},
{
"nodeType": "YulAssignment",
"src": "1691:15:1",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "1701:5:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1691:6:1"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "1715:47:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1747:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1758:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1743:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1743:18:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "1730:12:1"
},
"nodeType": "YulFunctionCall",
"src": "1730:32:1"
},
"variables": [
{
"name": "value_1",
"nodeType": "YulTypedName",
"src": "1719:7:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "value_1",
"nodeType": "YulIdentifier",
"src": "1796:7:1"
}
],
"functionName": {
"name": "validator_revert_address",
"nodeType": "YulIdentifier",
"src": "1771:24:1"
},
"nodeType": "YulFunctionCall",
"src": "1771:33:1"
},
"nodeType": "YulExpressionStatement",
"src": "1771:33:1"
},
{
"nodeType": "YulAssignment",
"src": "1813:17:1",
"value": {
"name": "value_1",
"nodeType": "YulIdentifier",
"src": "1823:7:1"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "1813:6:1"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "1839:46:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1870:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1881:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1866:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1866:18:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "1853:12:1"
},
"nodeType": "YulFunctionCall",
"src": "1853:32:1"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1843:6:1",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "1894:28:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "1904:18:1",
"type": "",
"value": "0xffffffffffffffff"
},
"variables": [
{
"name": "_1",
"nodeType": "YulTypedName",
"src": "1898:2:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "1949:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1958:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1961:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1951:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1951:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "1951:12:1"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1937:6:1"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "1945:2:1"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "1934:2:1"
},
"nodeType": "YulFunctionCall",
"src": "1934:14:1"
},
"nodeType": "YulIf",
"src": "1931:34:1"
},
{
"nodeType": "YulVariableDeclaration",
"src": "1974:32:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1988:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1999:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1984:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1984:22:1"
},
"variables": [
{
"name": "_2",
"nodeType": "YulTypedName",
"src": "1978:2:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "2054:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2063:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2066:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "2056:6:1"
},
"nodeType": "YulFunctionCall",
"src": "2056:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "2056:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "_2",
"nodeType": "YulIdentifier",
"src": "2033:2:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2037:4:1",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2029:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2029:13:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2044:7:1"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "2025:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2025:27:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "2018:6:1"
},
"nodeType": "YulFunctionCall",
"src": "2018:35:1"
},
"nodeType": "YulIf",
"src": "2015:55:1"
},
{
"nodeType": "YulVariableDeclaration",
"src": "2079:26:1",
"value": {
"arguments": [
{
"name": "_2",
"nodeType": "YulIdentifier",
"src": "2102:2:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "2089:12:1"
},
"nodeType": "YulFunctionCall",
"src": "2089:16:1"
},
"variables": [
{
"name": "_3",
"nodeType": "YulTypedName",
"src": "2083:2:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "2128:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nodeType": "YulIdentifier",
"src": "2130:16:1"
},
"nodeType": "YulFunctionCall",
"src": "2130:18:1"
},
"nodeType": "YulExpressionStatement",
"src": "2130:18:1"
}
]
},
"condition": {
"arguments": [
{
"name": "_3",
"nodeType": "YulIdentifier",
"src": "2120:2:1"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "2124:2:1"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "2117:2:1"
},
"nodeType": "YulFunctionCall",
"src": "2117:10:1"
},
"nodeType": "YulIf",
"src": "2114:36:1"
},
{
"nodeType": "YulVariableDeclaration",
"src": "2159:17:1",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2173:2:1",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "2169:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2169:7:1"
},
"variables": [
{
"name": "_4",
"nodeType": "YulTypedName",
"src": "2163:2:1",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "2185:23:1",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2205:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "2199:5:1"
},
"nodeType": "YulFunctionCall",
"src": "2199:9:1"
},
"variables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "2189:6:1",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "2217:71:1",
"value": {
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "2239:6:1"
},
{
"arguments": [
{
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "_3",
"nodeType": "YulIdentifier",
"src": "2263:2:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2267:4:1",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2259:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2259:13:1"
},
{
"name": "_4",
"nodeType": "YulIdentifier",
"src": "2274:2:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "2255:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2255:22:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2279:2:1",
"type": "",
"value": "63"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2251:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2251:31:1"
},
{
"name": "_4",
"nodeType": "YulIdentifier",
"src": "2284:2:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "2247:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2247:40:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2235:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2235:53:1"
},
"variables": [
{
"name": "newFreePtr",
"nodeType": "YulTypedName",
"src": "2221:10:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "2347:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nodeType": "YulIdentifier",
"src": "2349:16:1"
},
"nodeType": "YulFunctionCall",
"src": "2349:18:1"
},
"nodeType": "YulExpressionStatement",
"src": "2349:18:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "2306:10:1"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "2318:2:1"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "2303:2:1"
},
"nodeType": "YulFunctionCall",
"src": "2303:18:1"
},
{
"arguments": [
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "2326:10:1"
},
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "2338:6:1"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "2323:2:1"
},
"nodeType": "YulFunctionCall",
"src": "2323:22:1"
}
],
"functionName": {
"name": "or",
"nodeType": "YulIdentifier",
"src": "2300:2:1"
},
"nodeType": "YulFunctionCall",
"src": "2300:46:1"
},
"nodeType": "YulIf",
"src": "2297:72:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2385:2:1",
"type": "",
"value": "64"
},
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "2389:10:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2378:6:1"
},
"nodeType": "YulFunctionCall",
"src": "2378:22:1"
},
"nodeType": "YulExpressionStatement",
"src": "2378:22:1"
},
{
"expression": {
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "2416:6:1"
},
{
"name": "_3",
"nodeType": "YulIdentifier",
"src": "2424:2:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2409:6:1"
},
"nodeType": "YulFunctionCall",
"src": "2409:18:1"
},
"nodeType": "YulExpressionStatement",
"src": "2409:18:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2473:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2482:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2485:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "2475:6:1"
},
"nodeType": "YulFunctionCall",
"src": "2475:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "2475:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "_2",
"nodeType": "YulIdentifier",
"src": "2450:2:1"
},
{
"name": "_3",
"nodeType": "YulIdentifier",
"src": "2454:2:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2446:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2446:11:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2459:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2442:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2442:20:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "2464:7:1"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "2439:2:1"
},
"nodeType": "YulFunctionCall",
"src": "2439:33:1"
},
"nodeType": "YulIf",
"src": "2436:53:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "2515:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2523:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2511:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2511:15:1"
},
{
"arguments": [
{
"name": "_2",
"nodeType": "YulIdentifier",
"src": "2532:2:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2536:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2528:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2528:11:1"
},
{
"name": "_3",
"nodeType": "YulIdentifier",
"src": "2541:2:1"
}
],
"functionName": {
"name": "calldatacopy",
"nodeType": "YulIdentifier",
"src": "2498:12:1"
},
"nodeType": "YulFunctionCall",
"src": "2498:46:1"
},
"nodeType": "YulExpressionStatement",
"src": "2498:46:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "2568:6:1"
},
{
"name": "_3",
"nodeType": "YulIdentifier",
"src": "2576:2:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2564:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2564:15:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2581:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2560:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2560:24:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2586:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2553:6:1"
},
"nodeType": "YulFunctionCall",
"src": "2553:35:1"
},
"nodeType": "YulExpressionStatement",
"src": "2553:35:1"
},
{
"nodeType": "YulAssignment",
"src": "2597:16:1",
"value": {
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "2607:6:1"
},
"variableNames": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "2597:6:1"
}
]
}
]
},
"name": "abi_decode_tuple_t_address_payablet_address_payablet_bytes_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1485:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "1496:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1508:6:1",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "1516:6:1",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "1524:6:1",
"type": ""
}
],
"src": "1406:1213:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2673:422:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "2683:26:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2703:5:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "2697:5:1"
},
"nodeType": "YulFunctionCall",
"src": "2697:12:1"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "2687:6:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2725:3:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2730:6:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2718:6:1"
},
"nodeType": "YulFunctionCall",
"src": "2718:19:1"
},
"nodeType": "YulExpressionStatement",
"src": "2718:19:1"
},
{
"nodeType": "YulVariableDeclaration",
"src": "2746:10:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "2755:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "2750:1:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "2817:110:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "2831:14:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "2841:4:1",
"type": "",
"value": "0x20"
},
"variables": [
{
"name": "_1",
"nodeType": "YulTypedName",
"src": "2835:2:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2873:3:1"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "2878:1:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2869:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2869:11:1"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "2882:2:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2865:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2865:20:1"
},
{
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2901:5:1"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "2908:1:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2897:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2897:13:1"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "2912:2:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2893:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2893:22:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "2887:5:1"
},
"nodeType": "YulFunctionCall",
"src": "2887:29:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2858:6:1"
},
"nodeType": "YulFunctionCall",
"src": "2858:59:1"
},
"nodeType": "YulExpressionStatement",
"src": "2858:59:1"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "2776:1:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2779:6:1"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "2773:2:1"
},
"nodeType": "YulFunctionCall",
"src": "2773:13:1"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "2787:21:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2789:17:1",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "2798:1:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2801:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2794:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2794:12:1"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "2789:1:1"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "2769:3:1",
"statements": []
},
"src": "2765:162:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2961:62:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2990:3:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2995:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2986:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2986:16:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3004:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2982:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2982:27:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3011:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2975:6:1"
},
"nodeType": "YulFunctionCall",
"src": "2975:38:1"
},
"nodeType": "YulExpressionStatement",
"src": "2975:38:1"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "2942:1:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2945:6:1"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "2939:2:1"
},
"nodeType": "YulFunctionCall",
"src": "2939:13:1"
},
"nodeType": "YulIf",
"src": "2936:87:1"
},
{
"nodeType": "YulAssignment",
"src": "3032:57:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "3047:3:1"
},
{
"arguments": [
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "3060:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3068:2:1",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3056:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3056:15:1"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3077:2:1",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "3073:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3073:7:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "3052:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3052:29:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3043:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3043:39:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3084:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3039:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3039:50:1"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "3032:3:1"
}
]
}
]
},
"name": "abi_encode_bytes",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2650:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "2657:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "2665:3:1",
"type": ""
}
],
"src": "2624:471:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3275:240:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "3285:29:1",
"value": {
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3303:3:1",
"type": "",
"value": "160"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3308:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "3299:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3299:11:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3312:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "3295:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3295:19:1"
},
"variables": [
{
"name": "_1",
"nodeType": "YulTypedName",
"src": "3289:2:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3330:9:1"
},
{
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "3345:6:1"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "3353:2:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "3341:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3341:15:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3323:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3323:34:1"
},
"nodeType": "YulExpressionStatement",
"src": "3323:34:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3377:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3388:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3373:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3373:18:1"
},
{
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "3397:6:1"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "3405:2:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "3393:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3393:15:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3366:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3366:43:1"
},
"nodeType": "YulExpressionStatement",
"src": "3366:43:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3429:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3440:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3425:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3425:18:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3445:2:1",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3418:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3418:30:1"
},
"nodeType": "YulExpressionStatement",
"src": "3418:30:1"
},
{
"nodeType": "YulAssignment",
"src": "3457:52:1",
"value": {
"arguments": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "3482:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3494:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3505:2:1",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3490:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3490:18:1"
}
],
"functionName": {
"name": "abi_encode_bytes",
"nodeType": "YulIdentifier",
"src": "3465:16:1"
},
"nodeType": "YulFunctionCall",
"src": "3465:44:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "3457:4:1"
}
]
}
]
},
"name": "abi_encode_tuple_t_address_t_address_t_bytes_memory_ptr__to_t_address_t_address_t_bytes_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "3228:9:1",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "3239:6:1",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "3247:6:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "3255:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "3266:4:1",
"type": ""
}
],
"src": "3100:415:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3695:210:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3712:9:1"
},
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "3723:6:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3705:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3705:25:1"
},
"nodeType": "YulExpressionStatement",
"src": "3705:25:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3750:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3761:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3746:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3746:18:1"
},
{
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "3770:6:1"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3786:3:1",
"type": "",
"value": "160"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3791:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "3782:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3782:11:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3795:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "3778:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3778:19:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "3766:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3766:32:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3739:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3739:60:1"
},
"nodeType": "YulExpressionStatement",
"src": "3739:60:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3819:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3830:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3815:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3815:18:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3835:2:1",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3808:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3808:30:1"
},
"nodeType": "YulExpressionStatement",
"src": "3808:30:1"
},
{
"nodeType": "YulAssignment",
"src": "3847:52:1",
"value": {
"arguments": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "3872:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "3884:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3895:2:1",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3880:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3880:18:1"
}
],
"functionName": {
"name": "abi_encode_bytes",
"nodeType": "YulIdentifier",
"src": "3855:16:1"
},
"nodeType": "YulFunctionCall",
"src": "3855:44:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "3847:4:1"
}
]
}
]
},
"name": "abi_encode_tuple_t_uint256_t_address_t_bytes_memory_ptr__to_t_uint256_t_address_t_bytes_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "3648:9:1",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "3659:6:1",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "3667:6:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "3675:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "3686:4:1",
"type": ""
}
],
"src": "3520:385:1"
}
]
},
"contents": "{\n { }\n function abi_decode_tuple_t_uint256t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n let offset := calldataload(add(headStart, 32))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let length := calldataload(_2)\n if gt(length, _1) { revert(0, 0) }\n if gt(add(add(_2, length), 32), dataEnd) { revert(0, 0) }\n value1 := add(_2, 32)\n value2 := length\n }\n function validator_revert_address(value)\n {\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_address_payablet_address_payablet_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let value_1 := calldataload(add(headStart, 32))\n validator_revert_address(value_1)\n value1 := value_1\n let offset := calldataload(add(headStart, 64))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value2 := memPtr\n }\n function abi_encode_bytes(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n let i := 0\n for { } lt(i, length) { i := add(i, 0x20) }\n {\n let _1 := 0x20\n mstore(add(add(pos, i), _1), mload(add(add(value, i), _1)))\n }\n if gt(i, length)\n {\n mstore(add(add(pos, length), 0x20), 0)\n }\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_tuple_t_address_t_address_t_bytes_memory_ptr__to_t_address_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), 96)\n tail := abi_encode_bytes(value2, add(headStart, 96))\n }\n function abi_encode_tuple_t_uint256_t_address_t_bytes_memory_ptr__to_t_uint256_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n mstore(headStart, value0)\n mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n mstore(add(headStart, 64), 96)\n tail := abi_encode_bytes(value2, add(headStart, 96))\n }\n}",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "608060405234801561001057600080fd5b50600436106100415760003560e01c806326c53bea146100465780634c8ff99e1461005b578063de9b771f1461006e575b600080fd5b610059610054366004610190565b61009d565b005b610059610069366004610224565b610158565b600054610081906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b600080806100ad8486018661025e565b9250925092507ff091cd9cbbaff01426d8183042dff452ef18e6690f19816d5dd114e00761e0e88383836040516100e693929190610381565b60405180910390a1604051639a7c4b7160e01b81526001600160a01b03831690639a7c4b719061011e908990879086906004016103b6565b600060405180830381600087803b15801561013857600080fd5b505af115801561014c573d6000803e3d6000fd5b50505050505050505050565b6000546001600160a01b03161561016e57600080fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000604084860312156101a557600080fd5b83359250602084013567ffffffffffffffff808211156101c457600080fd5b818601915086601f8301126101d857600080fd5b8135818111156101e757600080fd5b8760208285010111156101f957600080fd5b6020830194508093505050509250925092565b6001600160a01b038116811461022157600080fd5b50565b60006020828403121561023657600080fd5b81356102418161020c565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561027357600080fd5b833561027e8161020c565b9250602084013561028e8161020c565b9150604084013567ffffffffffffffff808211156102ab57600080fd5b818601915086601f8301126102bf57600080fd5b8135818111156102d1576102d1610248565b604051601f8201601f19908116603f011681019083821181831017156102f9576102f9610248565b8160405282815289602084870101111561031257600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000815180845260005b8181101561035a5760208185018101518683018201520161033e565b8181111561036c576000602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b038481168252831660208201526060604082018190526000906103ad90830184610334565b95945050505050565b8381526001600160a01b03831660208201526060604082018190526000906103ad9083018461033456fea26469706673582212208620e8f7316f72f9feea933687f95b3e7b2731c7c0d83f7f54a2b95342e2223b64736f6c634300080a0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x26C53BEA EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x4C8FF99E EQ PUSH2 0x5B JUMPI DUP1 PUSH4 0xDE9B771F EQ PUSH2 0x6E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x59 PUSH2 0x54 CALLDATASIZE PUSH1 0x4 PUSH2 0x190 JUMP JUMPDEST PUSH2 0x9D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x59 PUSH2 0x69 CALLDATASIZE PUSH1 0x4 PUSH2 0x224 JUMP JUMPDEST PUSH2 0x158 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x81 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0xAD DUP5 DUP7 ADD DUP7 PUSH2 0x25E JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH32 0xF091CD9CBBAFF01426D8183042DFF452EF18E6690F19816D5DD114E00761E0E8 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH2 0xE6 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x381 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0x40 MLOAD PUSH4 0x9A7C4B71 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x9A7C4B71 SWAP1 PUSH2 0x11E SWAP1 DUP10 SWAP1 DUP8 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x3B6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x138 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x14C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x16E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x1E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x1F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP5 POP DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x221 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x236 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x241 DUP2 PUSH2 0x20C JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x273 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x27E DUP2 PUSH2 0x20C JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x28E DUP2 PUSH2 0x20C JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2D1 JUMPI PUSH2 0x2D1 PUSH2 0x248 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x2F9 JUMPI PUSH2 0x2F9 PUSH2 0x248 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP10 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x312 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x35A JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x33E JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x36C JUMPI PUSH1 0x0 PUSH1 0x20 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND DUP3 MSTORE DUP4 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x60 PUSH1 0x40 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x3AD SWAP1 DUP4 ADD DUP5 PUSH2 0x334 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x60 PUSH1 0x40 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x3AD SWAP1 DUP4 ADD DUP5 PUSH2 0x334 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP7 KECCAK256 0xE8 0xF7 BALANCE PUSH16 0x72F9FEEA933687F95B3E7B2731C7C0D8 EXTCODEHASH PUSH32 0x54A2B95342E2223B64736F6C634300080A003300000000000000000000000000 ",
"sourceMap": "501:730:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;757:472;;;;;;:::i;:::-;;:::i;:::-;;646:107;;;;;;:::i;:::-;;:::i;540:21::-;;;;;-1:-1:-1;;;;;540:21:0;;;;;;-1:-1:-1;;;;;1230:32:1;;;1212:51;;1200:2;1185:18;540:21:0;;;;;;;757:472;946:25;;;1012:62;;;;1030:5;1012:62;:::i;:::-;945:129;;;;;;1085:47;1098:17;1117:8;1127:4;1085:47;;;;;;;;:::i;:::-;;;;;;;;1138:86;;-1:-1:-1;;;1138:86:0;;-1:-1:-1;;;;;1138:52:0;;;;;:86;;1191:7;;1200:17;;1219:4;;1138:86;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;838:391;;;757:472;;;:::o;646:107::-;721:3;703:6;-1:-1:-1;;;;;703:6:0;:22;695:31;;;;;;732:6;:16;;-1:-1:-1;;;;;;732:16:0;-1:-1:-1;;;;;732:16:0;;;;;;;;;;646:107::o;14:659:1:-;93:6;101;109;162:2;150:9;141:7;137:23;133:32;130:52;;;178:1;175;168:12;130:52;214:9;201:23;191:33;;275:2;264:9;260:18;247:32;298:18;339:2;331:6;328:14;325:34;;;355:1;352;345:12;325:34;393:6;382:9;378:22;368:32;;438:7;431:4;427:2;423:13;419:27;409:55;;460:1;457;450:12;409:55;500:2;487:16;526:2;518:6;515:14;512:34;;;542:1;539;532:12;512:34;587:7;582:2;573:6;569:2;565:15;561:24;558:37;555:57;;;608:1;605;598:12;555:57;639:2;635;631:11;621:21;;661:6;651:16;;;;;14:659;;;;;:::o;678:131::-;-1:-1:-1;;;;;753:31:1;;743:42;;733:70;;799:1;796;789:12;733:70;678:131;:::o;814:247::-;873:6;926:2;914:9;905:7;901:23;897:32;894:52;;;942:1;939;932:12;894:52;981:9;968:23;1000:31;1025:5;1000:31;:::i;:::-;1050:5;814:247;-1:-1:-1;;;814:247:1:o;1274:127::-;1335:10;1330:3;1326:20;1323:1;1316:31;1366:4;1363:1;1356:15;1390:4;1387:1;1380:15;1406:1213;1508:6;1516;1524;1577:2;1565:9;1556:7;1552:23;1548:32;1545:52;;;1593:1;1590;1583:12;1545:52;1632:9;1619:23;1651:31;1676:5;1651:31;:::i;:::-;1701:5;-1:-1:-1;1758:2:1;1743:18;;1730:32;1771:33;1730:32;1771:33;:::i;:::-;1823:7;-1:-1:-1;1881:2:1;1866:18;;1853:32;1904:18;1934:14;;;1931:34;;;1961:1;1958;1951:12;1931:34;1999:6;1988:9;1984:22;1974:32;;2044:7;2037:4;2033:2;2029:13;2025:27;2015:55;;2066:1;2063;2056:12;2015:55;2102:2;2089:16;2124:2;2120;2117:10;2114:36;;;2130:18;;:::i;:::-;2205:2;2199:9;2173:2;2259:13;;-1:-1:-1;;2255:22:1;;;2279:2;2251:31;2247:40;2235:53;;;2303:18;;;2323:22;;;2300:46;2297:72;;;2349:18;;:::i;:::-;2389:10;2385:2;2378:22;2424:2;2416:6;2409:18;2464:7;2459:2;2454;2450;2446:11;2442:20;2439:33;2436:53;;;2485:1;2482;2475:12;2436:53;2541:2;2536;2532;2528:11;2523:2;2515:6;2511:15;2498:46;2586:1;2581:2;2576;2568:6;2564:15;2560:24;2553:35;2607:6;2597:16;;;;;;;1406:1213;;;;;:::o;2624:471::-;2665:3;2703:5;2697:12;2730:6;2725:3;2718:19;2755:1;2765:162;2779:6;2776:1;2773:13;2765:162;;;2841:4;2897:13;;;2893:22;;2887:29;2869:11;;;2865:20;;2858:59;2794:12;2765:162;;;2945:6;2942:1;2939:13;2936:87;;;3011:1;3004:4;2995:6;2990:3;2986:16;2982:27;2975:38;2936:87;-1:-1:-1;3077:2:1;3056:15;-1:-1:-1;;3052:29:1;3043:39;;;;3084:4;3039:50;;2624:471;-1:-1:-1;;2624:471:1:o;3100:415::-;-1:-1:-1;;;;;3341:15:1;;;3323:34;;3393:15;;3388:2;3373:18;;3366:43;3445:2;3440;3425:18;;3418:30;;;3266:4;;3465:44;;3490:18;;3482:6;3465:44;:::i;:::-;3457:52;3100:415;-1:-1:-1;;;;;3100:415:1:o;3520:385::-;3705:25;;;-1:-1:-1;;;;;3766:32:1;;3761:2;3746:18;;3739:60;3835:2;3830;3815:18;;3808:30;;;-1:-1:-1;;3855:44:1;;3880:18;;3872:6;3855:44;:::i"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "209200",
"executionCost": "251",
"totalCost": "209451"
},
"external": {
"fxRoot()": "2347",
"onStateReceive(uint256,bytes)": "infinite",
"setFxRoot(address)": "26703"
}
},
"methodIdentifiers": {
"fxRoot()": "de9b771f",
"onStateReceive(uint256,bytes)": "26c53bea",
"setFxRoot(address)": "4c8ff99e"
}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"rootMessageSender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"NewFxMessage\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"fxRoot\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stateId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"onStateReceive\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_fxRoot\",\"type\":\"address\"}],\"name\":\"setFxRoot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"FxChild child contract for state receiver\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/dependencies/polygon/fxportal/FxChild.sol\":\"FxChild\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/dependencies/polygon/fxportal/FxChild.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.10;\\n\\n// IStateReceiver represents interface to receive state\\ninterface IStateReceiver {\\n function onStateReceive(uint256 stateId, bytes calldata data) external;\\n}\\n\\n// IFxMessageProcessor represents interface to process message\\ninterface IFxMessageProcessor {\\n function processMessageFromRoot(\\n uint256 stateId,\\n address rootMessageSender,\\n bytes calldata data\\n ) external;\\n}\\n\\n/**\\n * @title FxChild child contract for state receiver\\n */\\ncontract FxChild is IStateReceiver {\\n address public fxRoot;\\n\\n event NewFxMessage(address rootMessageSender, address receiver, bytes data);\\n\\n function setFxRoot(address _fxRoot) public {\\n require(fxRoot == address(0x0));\\n fxRoot = _fxRoot;\\n }\\n\\n function onStateReceive(uint256 stateId, bytes calldata _data) external override {\\n // require(msg.sender == address(0x0000000000000000000000000000000000001001), 'Invalid sender');\\n (address rootMessageSender, address receiver, bytes memory data) = abi.decode(\\n _data,\\n (address, address, bytes)\\n );\\n emit NewFxMessage(rootMessageSender, receiver, data);\\n IFxMessageProcessor(receiver).processMessageFromRoot(stateId, rootMessageSender, data);\\n }\\n}\\n\",\"keccak256\":\"0x53d7c37288e062384c8c27ce084713e5205da1f5dc6a873f2007019370a71ac4\",\"license\":\"MIT\"}},\"version\":1}",
"storageLayout": {
"storage": [
{
"astId": 24,
"contract": "contracts/dependencies/polygon/fxportal/FxChild.sol:FxChild",
"label": "fxRoot",
"offset": 0,
"slot": "0",
"type": "t_address"
}
],
"types": {
"t_address": {
"encoding": "inplace",
"label": "address",
"numberOfBytes": "20"
}
}
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"IFxMessageProcessor": {
"abi": [
{
"inputs": [
{
"internalType": "uint256",
"name": "stateId",
"type": "uint256"
},
{
"internalType": "address",
"name": "rootMessageSender",
"type": "address"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "processMessageFromRoot",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"evm": {
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"methodIdentifiers": {
"processMessageFromRoot(uint256,address,bytes)": "9a7c4b71"
}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stateId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"rootMessageSender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"processMessageFromRoot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/dependencies/polygon/fxportal/FxChild.sol\":\"IFxMessageProcessor\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/dependencies/polygon/fxportal/FxChild.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.10;\\n\\n// IStateReceiver represents interface to receive state\\ninterface IStateReceiver {\\n function onStateReceive(uint256 stateId, bytes calldata data) external;\\n}\\n\\n// IFxMessageProcessor represents interface to process message\\ninterface IFxMessageProcessor {\\n function processMessageFromRoot(\\n uint256 stateId,\\n address rootMessageSender,\\n bytes calldata data\\n ) external;\\n}\\n\\n/**\\n * @title FxChild child contract for state receiver\\n */\\ncontract FxChild is IStateReceiver {\\n address public fxRoot;\\n\\n event NewFxMessage(address rootMessageSender, address receiver, bytes data);\\n\\n function setFxRoot(address _fxRoot) public {\\n require(fxRoot == address(0x0));\\n fxRoot = _fxRoot;\\n }\\n\\n function onStateReceive(uint256 stateId, bytes calldata _data) external override {\\n // require(msg.sender == address(0x0000000000000000000000000000000000001001), 'Invalid sender');\\n (address rootMessageSender, address receiver, bytes memory data) = abi.decode(\\n _data,\\n (address, address, bytes)\\n );\\n emit NewFxMessage(rootMessageSender, receiver, data);\\n IFxMessageProcessor(receiver).processMessageFromRoot(stateId, rootMessageSender, data);\\n }\\n}\\n\",\"keccak256\":\"0x53d7c37288e062384c8c27ce084713e5205da1f5dc6a873f2007019370a71ac4\",\"license\":\"MIT\"}},\"version\":1}",
"storageLayout": {
"storage": [],
"types": null
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"IStateReceiver": {
"abi": [
{
"inputs": [
{
"internalType": "uint256",
"name": "stateId",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "onStateReceive",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"evm": {
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"methodIdentifiers": {
"onStateReceive(uint256,bytes)": "26c53bea"
}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stateId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onStateReceive\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/dependencies/polygon/fxportal/FxChild.sol\":\"IStateReceiver\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/dependencies/polygon/fxportal/FxChild.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.10;\\n\\n// IStateReceiver represents interface to receive state\\ninterface IStateReceiver {\\n function onStateReceive(uint256 stateId, bytes calldata data) external;\\n}\\n\\n// IFxMessageProcessor represents interface to process message\\ninterface IFxMessageProcessor {\\n function processMessageFromRoot(\\n uint256 stateId,\\n address rootMessageSender,\\n bytes calldata data\\n ) external;\\n}\\n\\n/**\\n * @title FxChild child contract for state receiver\\n */\\ncontract FxChild is IStateReceiver {\\n address public fxRoot;\\n\\n event NewFxMessage(address rootMessageSender, address receiver, bytes data);\\n\\n function setFxRoot(address _fxRoot) public {\\n require(fxRoot == address(0x0));\\n fxRoot = _fxRoot;\\n }\\n\\n function onStateReceive(uint256 stateId, bytes calldata _data) external override {\\n // require(msg.sender == address(0x0000000000000000000000000000000000001001), 'Invalid sender');\\n (address rootMessageSender, address receiver, bytes memory data) = abi.decode(\\n _data,\\n (address, address, bytes)\\n );\\n emit NewFxMessage(rootMessageSender, receiver, data);\\n IFxMessageProcessor(receiver).processMessageFromRoot(stateId, rootMessageSender, data);\\n }\\n}\\n\",\"keccak256\":\"0x53d7c37288e062384c8c27ce084713e5205da1f5dc6a873f2007019370a71ac4\",\"license\":\"MIT\"}},\"version\":1}",
"storageLayout": {
"storage": [],
"types": null
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
}
}
},
"sources": {
"contracts/dependencies/polygon/fxportal/FxChild.sol": {
"ast": {
"absolutePath": "contracts/dependencies/polygon/fxportal/FxChild.sol",
"exportedSymbols": {
"FxChild": [
94
],
"IFxMessageProcessor": [
19
],
"IStateReceiver": [
9
]
},
"id": 95,
"license": "MIT",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 1,
"literals": [
"solidity",
"^",
"0.8",
".10"
],
"nodeType": "PragmaDirective",
"src": "32:24:0"
},
{
"abstract": false,
"baseContracts": [],
"canonicalName": "IStateReceiver",
"contractDependencies": [],
"contractKind": "interface",
"fullyImplemented": false,
"id": 9,
"linearizedBaseContracts": [
9
],
"name": "IStateReceiver",
"nameLocation": "124:14:0",
"nodeType": "ContractDefinition",
"nodes": [
{
"functionSelector": "26c53bea",
"id": 8,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "onStateReceive",
"nameLocation": "152:14:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 6,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 3,
"mutability": "mutable",
"name": "stateId",
"nameLocation": "175:7:0",
"nodeType": "VariableDeclaration",
"scope": 8,
"src": "167:15:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 2,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "167:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 5,
"mutability": "mutable",
"name": "data",
"nameLocation": "199:4:0",
"nodeType": "VariableDeclaration",
"scope": 8,
"src": "184:19:0",
"stateVariable": false,
"storageLocation": "calldata",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 4,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "184:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "166:38:0"
},
"returnParameters": {
"id": 7,
"nodeType": "ParameterList",
"parameters": [],
"src": "213:0:0"
},
"scope": 9,
"src": "143:71:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
}
],
"scope": 95,
"src": "114:102:0",
"usedErrors": []
},
{
"abstract": false,
"baseContracts": [],
"canonicalName": "IFxMessageProcessor",
"contractDependencies": [],
"contractKind": "interface",
"fullyImplemented": false,
"id": 19,
"linearizedBaseContracts": [
19
],
"name": "IFxMessageProcessor",
"nameLocation": "291:19:0",
"nodeType": "ContractDefinition",
"nodes": [
{
"functionSelector": "9a7c4b71",
"id": 18,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "processMessageFromRoot",
"nameLocation": "324:22:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 16,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11,
"mutability": "mutable",
"name": "stateId",
"nameLocation": "360:7:0",
"nodeType": "VariableDeclaration",
"scope": 18,
"src": "352:15:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 10,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "352:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 13,
"mutability": "mutable",
"name": "rootMessageSender",
"nameLocation": "381:17:0",
"nodeType": "VariableDeclaration",
"scope": 18,
"src": "373:25:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 12,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "373:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 15,
"mutability": "mutable",
"name": "data",
"nameLocation": "419:4:0",
"nodeType": "VariableDeclaration",
"scope": 18,
"src": "404:19:0",
"stateVariable": false,
"storageLocation": "calldata",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 14,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "404:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "346:81:0"
},
"returnParameters": {
"id": 17,
"nodeType": "ParameterList",
"parameters": [],
"src": "436:0:0"
},
"scope": 19,
"src": "315:122:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
}
],
"scope": 95,
"src": "281:158:0",
"usedErrors": []
},
{
"abstract": false,
"baseContracts": [
{
"baseName": {
"id": 21,
"name": "IStateReceiver",
"nodeType": "IdentifierPath",
"referencedDeclaration": 9,
"src": "521:14:0"
},
"id": 22,
"nodeType": "InheritanceSpecifier",
"src": "521:14:0"
}
],
"canonicalName": "FxChild",
"contractDependencies": [],
"contractKind": "contract",
"documentation": {
"id": 20,
"nodeType": "StructuredDocumentation",
"src": "441:59:0",
"text": " @title FxChild child contract for state receiver"
},
"fullyImplemented": true,
"id": 94,
"linearizedBaseContracts": [
94,
9
],
"name": "FxChild",
"nameLocation": "510:7:0",
"nodeType": "ContractDefinition",
"nodes": [
{
"constant": false,
"functionSelector": "de9b771f",
"id": 24,
"mutability": "mutable",
"name": "fxRoot",
"nameLocation": "555:6:0",
"nodeType": "VariableDeclaration",
"scope": 94,
"src": "540:21:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 23,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "540:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "public"
},
{
"anonymous": false,
"id": 32,
"name": "NewFxMessage",
"nameLocation": "572:12:0",
"nodeType": "EventDefinition",
"parameters": {
"id": 31,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 26,
"indexed": false,
"mutability": "mutable",
"name": "rootMessageSender",
"nameLocation": "593:17:0",
"nodeType": "VariableDeclaration",
"scope": 32,
"src": "585:25:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 25,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "585:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 28,
"indexed": false,
"mutability": "mutable",
"name": "receiver",
"nameLocation": "620:8:0",
"nodeType": "VariableDeclaration",
"scope": 32,
"src": "612:16:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 27,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "612:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 30,
"indexed": false,
"mutability": "mutable",
"name": "data",
"nameLocation": "636:4:0",
"nodeType": "VariableDeclaration",
"scope": 32,
"src": "630:10:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 29,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "630:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "584:57:0"
},
"src": "566:76:0"
},
{
"body": {
"id": 50,
"nodeType": "Block",
"src": "689:64:0",
"statements": [
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 43,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 38,
"name": "fxRoot",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 24,
"src": "703:6:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"arguments": [
{
"hexValue": "307830",
"id": 41,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "721:3:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0x0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 40,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "713:7:0",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 39,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "713:7:0",
"typeDescriptions": {}
}
},
"id": 42,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "713:12:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "703:22:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 37,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "695:7:0",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 44,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "695:31:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 45,
"nodeType": "ExpressionStatement",
"src": "695:31:0"
},
{
"expression": {
"id": 48,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 46,
"name": "fxRoot",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 24,
"src": "732:6:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 47,
"name": "_fxRoot",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 34,
"src": "741:7:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "732:16:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 49,
"nodeType": "ExpressionStatement",
"src": "732:16:0"
}
]
},
"functionSelector": "4c8ff99e",
"id": 51,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "setFxRoot",
"nameLocation": "655:9:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 35,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 34,
"mutability": "mutable",
"name": "_fxRoot",
"nameLocation": "673:7:0",
"nodeType": "VariableDeclaration",
"scope": 51,
"src": "665:15:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 33,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "665:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "664:17:0"
},
"returnParameters": {
"id": 36,
"nodeType": "ParameterList",
"parameters": [],
"src": "689:0:0"
},
"scope": 94,
"src": "646:107:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [
8
],
"body": {
"id": 92,
"nodeType": "Block",
"src": "838:391:0",
"statements": [
{
"assignments": [
60,
62,
64
],
"declarations": [
{
"constant": false,
"id": 60,
"mutability": "mutable",
"name": "rootMessageSender",
"nameLocation": "954:17:0",
"nodeType": "VariableDeclaration",
"scope": 92,
"src": "946:25:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 59,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "946:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 62,
"mutability": "mutable",
"name": "receiver",
"nameLocation": "981:8:0",
"nodeType": "VariableDeclaration",
"scope": 92,
"src": "973:16:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 61,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "973:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 64,
"mutability": "mutable",
"name": "data",
"nameLocation": "1004:4:0",
"nodeType": "VariableDeclaration",
"scope": 92,
"src": "991:17:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 63,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "991:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"id": 76,
"initialValue": {
"arguments": [
{
"id": 67,
"name": "_data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 55,
"src": "1030:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
},
{
"components": [
{
"id": 69,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "1044:7:0",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 68,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1044:7:0",
"typeDescriptions": {}
}
},
{
"id": 71,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "1053:7:0",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 70,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1053:7:0",
"typeDescriptions": {}
}
},
{
"id": 73,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "1062:5:0",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
"typeString": "type(bytes storage pointer)"
},
"typeName": {
"id": 72,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "1062:5:0",
"typeDescriptions": {}
}
}
],
"id": 74,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "1043:25:0",
"typeDescriptions": {
"typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_bytes_storage_ptr_$_$",
"typeString": "tuple(type(address),type(address),type(bytes storage pointer))"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
},
{
"typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_bytes_storage_ptr_$_$",
"typeString": "tuple(type(address),type(address),type(bytes storage pointer))"
}
],
"expression": {
"id": 65,
"name": "abi",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -1,
"src": "1012:3:0",
"typeDescriptions": {
"typeIdentifier": "t_magic_abi",
"typeString": "abi"
}
},
"id": 66,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "decode",
"nodeType": "MemberAccess",
"src": "1012:10:0",
"typeDescriptions": {
"typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
"typeString": "function () pure"
}
},
"id": 75,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1012:62:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$_t_address_payable_$_t_address_payable_$_t_bytes_memory_ptr_$",
"typeString": "tuple(address payable,address payable,bytes memory)"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "945:129:0"
},
{
"eventCall": {
"arguments": [
{
"id": 78,
"name": "rootMessageSender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 60,
"src": "1098:17:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 79,
"name": "receiver",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 62,
"src": "1117:8:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 80,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 64,
"src": "1127:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 77,
"name": "NewFxMessage",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32,
"src": "1085:12:0",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes_memory_ptr_$returns$__$",
"typeString": "function (address,address,bytes memory)"
}
},
"id": 81,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1085:47:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 82,
"nodeType": "EmitStatement",
"src": "1080:52:0"
},
{
"expression": {
"arguments": [
{
"id": 87,
"name": "stateId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 53,
"src": "1191:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 88,
"name": "rootMessageSender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 60,
"src": "1200:17:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 89,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 64,
"src": "1219:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"expression": {
"arguments": [
{
"id": 84,
"name": "receiver",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 62,
"src": "1158:8:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 83,
"name": "IFxMessageProcessor",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 19,
"src": "1138:19:0",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IFxMessageProcessor_$19_$",
"typeString": "type(contract IFxMessageProcessor)"
}
},
"id": 85,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1138:29:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IFxMessageProcessor_$19",
"typeString": "contract IFxMessageProcessor"
}
},
"id": 86,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "processMessageFromRoot",
"nodeType": "MemberAccess",
"referencedDeclaration": 18,
"src": "1138:52:0",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$returns$__$",
"typeString": "function (uint256,address,bytes memory) external"
}
},
"id": 90,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1138:86:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 91,
"nodeType": "ExpressionStatement",
"src": "1138:86:0"
}
]
},
"functionSelector": "26c53bea",
"id": 93,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "onStateReceive",
"nameLocation": "766:14:0",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 57,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "829:8:0"
},
"parameters": {
"id": 56,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 53,
"mutability": "mutable",
"name": "stateId",
"nameLocation": "789:7:0",
"nodeType": "VariableDeclaration",
"scope": 93,
"src": "781:15:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 52,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "781:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 55,
"mutability": "mutable",
"name": "_data",
"nameLocation": "813:5:0",
"nodeType": "VariableDeclaration",
"scope": 93,
"src": "798:20:0",
"stateVariable": false,
"storageLocation": "calldata",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 54,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "798:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "780:39:0"
},
"returnParameters": {
"id": 58,
"nodeType": "ParameterList",
"parameters": [],
"src": "838:0:0"
},
"scope": 94,
"src": "757:472:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
}
],
"scope": 95,
"src": "501:730:0",
"usedErrors": []
}
],
"src": "32:1200:0"
},
"id": 0
}
}
}
}