@dolomite-exchange/dolomite-margin
Version:
Ethereum Smart Contracts and TypeScript library used for the DolomiteMargin trading protocol
541 lines (540 loc) • 473 kB
JSON
{
"contractName": "ArbitrumMultiCall",
"abi": [
{
"constant": false,
"inputs": [
{
"components": [
{
"internalType": "address",
"name": "target",
"type": "address"
},
{
"internalType": "bytes",
"name": "callData",
"type": "bytes"
}
],
"internalType": "struct ArbitrumMultiCall.Call[]",
"name": "calls",
"type": "tuple[]"
}
],
"name": "aggregate",
"outputs": [
{
"internalType": "uint256",
"name": "blockNumber",
"type": "uint256"
},
{
"internalType": "bytes[]",
"name": "returnData",
"type": "bytes[]"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "addr",
"type": "address"
}
],
"name": "getEthBalance",
"outputs": [
{
"internalType": "uint256",
"name": "balance",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "uint256",
"name": "blockNumber",
"type": "uint256"
}
],
"name": "getBlockHash",
"outputs": [
{
"internalType": "bytes32",
"name": "blockHash",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "getLastBlockHash",
"outputs": [
{
"internalType": "bytes32",
"name": "blockHash",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "getCurrentBlockTimestamp",
"outputs": [
{
"internalType": "uint256",
"name": "timestamp",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "getCurrentBlockDifficulty",
"outputs": [
{
"internalType": "uint256",
"name": "difficulty",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "getCurrentBlockGasLimit",
"outputs": [
{
"internalType": "uint256",
"name": "gaslimit",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "getCurrentBlockCoinbase",
"outputs": [
{
"internalType": "address",
"name": "coinbase",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "getBlockNumber",
"outputs": [
{
"internalType": "uint256",
"name": "blockNumber",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "getL1BlockNumber",
"outputs": [
{
"internalType": "uint256",
"name": "l1BlockNumber",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
}
],
"metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct ArbitrumMultiCall.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"aggregate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"returnData\",\"type\":\"bytes[]\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"getBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getBlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCurrentBlockCoinbase\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCurrentBlockDifficulty\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"difficulty\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCurrentBlockGasLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"gaslimit\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCurrentBlockTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"getEthBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getL1BlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"l1BlockNumber\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getLastBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Michael Elliot <mike@makerdao.com>Joshua Levine <joshua@makerdao.com>Nick Johnson <arachnid@notdot.net>Corey Caplan <corey@dolomite.io>\",\"details\":\"This multi call contract is almost the same as the ordinary one, with minor adjustments for Arbitrum. See: https://developer.offchainlabs.com/docs/time_in_arbitrum#case-study-multicall for more information.\",\"methods\":{},\"title\":\"ArbitrumMultiCall - Aggregate results from multiple read-only function calls\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/utils/ArbitrumMultiCall.sol\":\"ArbitrumMultiCall\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/interfaces/IArbitrumSys.sol\":{\"keccak256\":\"0xa5be17c5867f4616d31f13a8974cd441b73e3e65afb1095a7e9626d0b136338b\",\"urls\":[\"bzz-raw://97c99abaace129d781227a525953efe055e0dce963943fb70daa98acbed3130e\",\"dweb:/ipfs/QmRvuJJYPCyGTYJG7AzureXR9WKPXsHAn6RtGZ8ZSmL5Y4\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/utils/ArbitrumMultiCall.sol\":{\"keccak256\":\"0x7ab79513fddd3fcae6949f0ef38329b88ce6ad726ceb281876c7ebcc63530c9f\",\"urls\":[\"bzz-raw://ae015f0ba857dbcff7457646e21d4d4f280fd2b19d342f956ac3cd7d4f413edb\",\"dweb:/ipfs/Qmdp59C5jPZPQwCUUXKx2HdonvcVFqsn7P1q2KhHtiAH3K\"]}},\"version\":1}",
"bytecode": "0x608060405234801561001057600080fd5b50610dc7806100206000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806372425d9d11610076578063a8b0574e1161005b578063a8b0574e14610135578063b9b3efe91461014a578063ee82ac5e14610152576100be565b806372425d9d1461012557806386d516e81461012d576100be565b806327e86d6e116100a757806327e86d6e1461010257806342cbb15c1461010a5780634d2301cc14610112576100be565b80630f28c97d146100c3578063252dba42146100e1575b600080fd5b6100cb610165565b6040516100d89190610bf4565b60405180910390f35b6100f46100ef366004610913565b610169565b6040516100d8929190610c13565b6100cb6103e2565b6100cb61046c565b6100cb6101203660046108ed565b6104f2565b6100cb61050c565b6100cb610510565b61013d610514565b6040516100d89190610be6565b6100cb610518565b6100cb61016036600461097d565b61051c565b4290565b60006060606473ffffffffffffffffffffffffffffffffffffffff1663a3b1b31d6040518163ffffffff1660e01b815260040160206040518083038186803b1580156101b457600080fd5b505afa1580156101c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506101ec919081019061099b565b9150825160405190808252806020026020018201604052801561022357816020015b606081526020019060019003908161020e5790505b50905060005b83518110156103dc576000606085838151811061024257fe5b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff1686848151811061027057fe5b6020026020010151602001516040516102899190610b8a565b6000604051808303816000865af19150503d80600081146102c6576040519150601f19603f3d011682016040523d82523d6000602084013e6102cb565b606091505b5091509150816103ba5760448151101561037b5760606103018785815181106102f057fe5b602002602001015160000151610520565b9050806040516020016103149190610bc4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261037291600401610c02565b60405180910390fd5b60048101905060606103928785815181106102f057fe5b905080828060200190516103a99190810190610948565b604051602001610314929190610b96565b808484815181106103c757fe5b60209081029190910101525050600101610229565b50915091565b60006001606473ffffffffffffffffffffffffffffffffffffffff1663a3b1b31d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561042d57600080fd5b505afa158015610441573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610465919081019061099b565b0340905090565b6000606473ffffffffffffffffffffffffffffffffffffffff1663a3b1b31d6040518163ffffffff1660e01b815260040160206040518083038186803b1580156104b557600080fd5b505afa1580156104c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506104ed919081019061099b565b905090565b73ffffffffffffffffffffffffffffffffffffffff163190565b4490565b4590565b4190565b4390565b4090565b604080518082018252601081527f303132333435363738396162636465660000000000000000000000000000000060208201528151602a808252606082810190945273ffffffffffffffffffffffffffffffffffffffff8516929184916020820181803883390190505090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106105ba57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061061757fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060005b601481101561075d578260048583600c016020811061066457fe5b1a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916901c60f81c60ff168151811061069c57fe5b602001015160f81c60f81b8282600202600201815181106106b957fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350828482600c01602081106106f857fe5b825191901a600f1690811061070957fe5b602001015160f81c60f81b82826002026003018151811061072657fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600101610649565b50949350505050565b803561077181610d64565b92915050565b600082601f83011261078857600080fd5b813561079b61079682610c5a565b610c33565b81815260209384019390925082018360005b838110156107d957813586016107c38882610878565b84525060209283019291909101906001016107ad565b5050505092915050565b600082601f8301126107f457600080fd5b813561080261079682610c7b565b9150808252602083016020830185838301111561081e57600080fd5b610829838284610d00565b50505092915050565b600082601f83011261084357600080fd5b815161085161079682610c7b565b9150808252602083016020830185838301111561086d57600080fd5b610829838284610d0c565b60006040828403121561088a57600080fd5b6108946040610c33565b905060006108a28484610766565b825250602082013567ffffffffffffffff8111156108bf57600080fd5b6108cb848285016107e3565b60208301525092915050565b803561077181610d7b565b805161077181610d7b565b6000602082840312156108ff57600080fd5b600061090b8484610766565b949350505050565b60006020828403121561092557600080fd5b813567ffffffffffffffff81111561093c57600080fd5b61090b84828501610777565b60006020828403121561095a57600080fd5b815167ffffffffffffffff81111561097157600080fd5b61090b84828501610832565b60006020828403121561098f57600080fd5b600061090b84846108d7565b6000602082840312156109ad57600080fd5b600061090b84846108e2565b60006109c58383610a52565b9392505050565b6109d581610cd9565b82525050565b60006109e682610cc7565b6109f08185610ccb565b935083602082028501610a0285610cc1565b8060005b85811015610a3c5784840389528151610a1f85826109b9565b9450610a2a83610cc1565b60209a909a0199925050600101610a06565b5091979650505050505050565b6109d581610ce4565b6000610a5d82610cc7565b610a678185610ccb565b9350610a77818560208601610d0c565b610a8081610d3c565b9093019392505050565b6000610a9582610cc7565b610a9f8185610cd4565b9350610aaf818560208601610d0c565b9290920192915050565b6000610ac6602183610cd4565b7f4d756c746963616c6c3a3a6167677265676174653a207265766572742061742081527f3c00000000000000000000000000000000000000000000000000000000000000602082015260210192915050565b6000610b25600f83610cd4565b7f3e207769746820726561736f6e3a2000000000000000000000000000000000008152600f0192915050565b6000610b5e600183610cd4565b7f3e00000000000000000000000000000000000000000000000000000000000000815260010192915050565b60006109c58284610a8a565b6000610ba182610ab9565b9150610bad8285610a8a565b9150610bb882610b18565b915061090b8284610a8a565b6000610bcf82610ab9565b9150610bdb8284610a8a565b91506109c582610b51565b6020810161077182846109cc565b602081016107718284610a49565b602080825281016109c58184610a52565b60408101610c218285610a49565b818103602083015261090b81846109db565b60405181810167ffffffffffffffff81118282101715610c5257600080fd5b604052919050565b600067ffffffffffffffff821115610c7157600080fd5b5060209081020190565b600067ffffffffffffffff821115610c9257600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b60200190565b5190565b90815260200190565b919050565b600061077182610ce7565b90565b73ffffffffffffffffffffffffffffffffffffffff1690565b82818337506000910152565b60005b83811015610d27578181015183820152602001610d0f565b83811115610d36576000848401525b50505050565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b610d6d81610cd9565b8114610d7857600080fd5b50565b610d6d81610ce456fea365627a7a723158202c9d0229b2a566bd12c280d9e2f8a0f860c36e48caa30d85fd2a645e56f669336c6578706572696d656e74616cf564736f6c63430005100040",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100be5760003560e01c806372425d9d11610076578063a8b0574e1161005b578063a8b0574e14610135578063b9b3efe91461014a578063ee82ac5e14610152576100be565b806372425d9d1461012557806386d516e81461012d576100be565b806327e86d6e116100a757806327e86d6e1461010257806342cbb15c1461010a5780634d2301cc14610112576100be565b80630f28c97d146100c3578063252dba42146100e1575b600080fd5b6100cb610165565b6040516100d89190610bf4565b60405180910390f35b6100f46100ef366004610913565b610169565b6040516100d8929190610c13565b6100cb6103e2565b6100cb61046c565b6100cb6101203660046108ed565b6104f2565b6100cb61050c565b6100cb610510565b61013d610514565b6040516100d89190610be6565b6100cb610518565b6100cb61016036600461097d565b61051c565b4290565b60006060606473ffffffffffffffffffffffffffffffffffffffff1663a3b1b31d6040518163ffffffff1660e01b815260040160206040518083038186803b1580156101b457600080fd5b505afa1580156101c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506101ec919081019061099b565b9150825160405190808252806020026020018201604052801561022357816020015b606081526020019060019003908161020e5790505b50905060005b83518110156103dc576000606085838151811061024257fe5b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff1686848151811061027057fe5b6020026020010151602001516040516102899190610b8a565b6000604051808303816000865af19150503d80600081146102c6576040519150601f19603f3d011682016040523d82523d6000602084013e6102cb565b606091505b5091509150816103ba5760448151101561037b5760606103018785815181106102f057fe5b602002602001015160000151610520565b9050806040516020016103149190610bc4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261037291600401610c02565b60405180910390fd5b60048101905060606103928785815181106102f057fe5b905080828060200190516103a99190810190610948565b604051602001610314929190610b96565b808484815181106103c757fe5b60209081029190910101525050600101610229565b50915091565b60006001606473ffffffffffffffffffffffffffffffffffffffff1663a3b1b31d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561042d57600080fd5b505afa158015610441573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610465919081019061099b565b0340905090565b6000606473ffffffffffffffffffffffffffffffffffffffff1663a3b1b31d6040518163ffffffff1660e01b815260040160206040518083038186803b1580156104b557600080fd5b505afa1580156104c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506104ed919081019061099b565b905090565b73ffffffffffffffffffffffffffffffffffffffff163190565b4490565b4590565b4190565b4390565b4090565b604080518082018252601081527f303132333435363738396162636465660000000000000000000000000000000060208201528151602a808252606082810190945273ffffffffffffffffffffffffffffffffffffffff8516929184916020820181803883390190505090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106105ba57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061061757fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060005b601481101561075d578260048583600c016020811061066457fe5b1a60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916901c60f81c60ff168151811061069c57fe5b602001015160f81c60f81b8282600202600201815181106106b957fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350828482600c01602081106106f857fe5b825191901a600f1690811061070957fe5b602001015160f81c60f81b82826002026003018151811061072657fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600101610649565b50949350505050565b803561077181610d64565b92915050565b600082601f83011261078857600080fd5b813561079b61079682610c5a565b610c33565b81815260209384019390925082018360005b838110156107d957813586016107c38882610878565b84525060209283019291909101906001016107ad565b5050505092915050565b600082601f8301126107f457600080fd5b813561080261079682610c7b565b9150808252602083016020830185838301111561081e57600080fd5b610829838284610d00565b50505092915050565b600082601f83011261084357600080fd5b815161085161079682610c7b565b9150808252602083016020830185838301111561086d57600080fd5b610829838284610d0c565b60006040828403121561088a57600080fd5b6108946040610c33565b905060006108a28484610766565b825250602082013567ffffffffffffffff8111156108bf57600080fd5b6108cb848285016107e3565b60208301525092915050565b803561077181610d7b565b805161077181610d7b565b6000602082840312156108ff57600080fd5b600061090b8484610766565b949350505050565b60006020828403121561092557600080fd5b813567ffffffffffffffff81111561093c57600080fd5b61090b84828501610777565b60006020828403121561095a57600080fd5b815167ffffffffffffffff81111561097157600080fd5b61090b84828501610832565b60006020828403121561098f57600080fd5b600061090b84846108d7565b6000602082840312156109ad57600080fd5b600061090b84846108e2565b60006109c58383610a52565b9392505050565b6109d581610cd9565b82525050565b60006109e682610cc7565b6109f08185610ccb565b935083602082028501610a0285610cc1565b8060005b85811015610a3c5784840389528151610a1f85826109b9565b9450610a2a83610cc1565b60209a909a0199925050600101610a06565b5091979650505050505050565b6109d581610ce4565b6000610a5d82610cc7565b610a678185610ccb565b9350610a77818560208601610d0c565b610a8081610d3c565b9093019392505050565b6000610a9582610cc7565b610a9f8185610cd4565b9350610aaf818560208601610d0c565b9290920192915050565b6000610ac6602183610cd4565b7f4d756c746963616c6c3a3a6167677265676174653a207265766572742061742081527f3c00000000000000000000000000000000000000000000000000000000000000602082015260210192915050565b6000610b25600f83610cd4565b7f3e207769746820726561736f6e3a2000000000000000000000000000000000008152600f0192915050565b6000610b5e600183610cd4565b7f3e00000000000000000000000000000000000000000000000000000000000000815260010192915050565b60006109c58284610a8a565b6000610ba182610ab9565b9150610bad8285610a8a565b9150610bb882610b18565b915061090b8284610a8a565b6000610bcf82610ab9565b9150610bdb8284610a8a565b91506109c582610b51565b6020810161077182846109cc565b602081016107718284610a49565b602080825281016109c58184610a52565b60408101610c218285610a49565b818103602083015261090b81846109db565b60405181810167ffffffffffffffff81118282101715610c5257600080fd5b604052919050565b600067ffffffffffffffff821115610c7157600080fd5b5060209081020190565b600067ffffffffffffffff821115610c9257600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b60200190565b5190565b90815260200190565b919050565b600061077182610ce7565b90565b73ffffffffffffffffffffffffffffffffffffffff1690565b82818337506000910152565b60005b83811015610d27578181015183820152602001610d0f565b83811115610d36576000848401525b50505050565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b610d6d81610cd9565b8114610d7857600080fd5b50565b610d6d81610ce456fea365627a7a723158202c9d0229b2a566bd12c280d9e2f8a0f860c36e48caa30d85fd2a645e56f669336c6578706572696d656e74616cf564736f6c63430005100040",
"sourceMap": "637:3310:60:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;637:3310:60;;;;;;;",
"deployedSourceMap": "637:3310:60:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;637:3310:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2673:120;;;:::i;:::-;;;;;;;;;;;;;;;;744:1478;;;;;;;;;:::i;:::-;;;;;;;;;2512:155;;;:::i;3173:142::-;;;:::i;2252:114::-;;;;;;;;;:::i;2799:124::-;;;:::i;2929:116::-;;;:::i;3051:::-;;;:::i;:::-;;;;;;;;3321:117;;;:::i;2372:134::-;;;;;;;;;:::i;2673:120::-;2771:15;;2673:120::o;744:1478::-;800:19;821:25;893:3;872:41;;;:43;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;872:43:60;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;872:43:60;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;872:43:60;;;;;;;;;858:57;;950:5;:12;938:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;925:38;;978:9;973:1243;993:5;:12;989:1;:16;973:1243;;;1095:12;1109:19;1132:5;1138:1;1132:8;;;;;;;;;;;;;;:15;;;:20;;1153:5;1159:1;1153:8;;;;;;;;;;;;;;:17;;;1132:39;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;1094:77:60;;;;1190:7;1185:985;;1237:2;1221:6;:13;:18;1217:939;;;1263:26;1292:33;1309:5;1315:1;1309:8;;;;;;;;;;;;;;:15;;;1292:16;:33::i;:::-;1263:62;;1415:12;1361:72;;;;;;;;;;;;;22:32:-1;26:21;;;22:32;6:49;;1361:72:60;;;;1347:88;;;;;;;;;;;;;;;;;1217:939;1615:4;1607:6;1603:17;1593:27;;1663:26;1692:33;1709:5;1715:1;1709:8;;;;;;;1692:33;1663:62;;1934:12;2042:6;2031:28;;;;;;;;;;;;;;1815:274;;;;;;;;;;1217:939;2199:6;2183:10;2194:1;2183:13;;;;;;;;;;;;;;;;;:22;-1:-1:-1;;1007:3:60;;973:1243;;;;744:1478;;;:::o;2512:155::-;2561:17;2658:1;2633:3;2612:41;;;:43;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2612:43:60;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2612:43:60;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2612:43:60;;;;;;;;;:47;2602:58;2590:70;;2512:155;:::o;3173:142::-;3220:19;3286:3;3265:41;;;:43;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3265:43:60;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3265:43:60;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3265:43:60;;;;;;;;;3251:57;;3173:142;:::o;2252:114::-;2347:12;;;;2252:114::o;2799:124::-;2900:16;;2799:124::o;2929:116::-;3024:14;;2929:116::o;3051:::-;3146:14;;3051:116::o;3321:117::-;3419:12;;3321:117::o;2372:134::-;2477:22;;2372:134::o;3444:501::-;3588:37;;;;;;;;;;;;;;;;3658:13;;3668:2;3658:13;;;3510;3658;;;;;;3560:17;;;;3588:37;3510:13;;3658;;;21:6:-1;;104:10;3658:13:60;87:34:-1;135:17;;-1:-1;3658:13:60;3635:36;;3681:16;:7;3689:1;3681:10;;;;;;;;;;;:16;;;;;;;;;;;3707;:7;3715:1;3707:10;;;;;;;;;;;:16;;;;;;;;;;;3738:9;3733:174;3753:2;3749:1;:6;3733:174;;;3797:3;3825:1;3807:6;3814:1;3818:2;3814:6;3807:14;;;;;;;;;;:19;;;;;3801:26;;3797:31;;;;;;;;;;;;;;;;;;3776:7;3788:1;3792;3788:5;3784:1;:9;3776:18;;;;;;;;;;;:52;;;;;;;;;;;3863:3;3873:6;3880:1;3884:2;3880:6;3873:14;;;;;;;3863:33;;3873:14;;;3890:4;3867:28;;3863:33;;;;;;;;;;;;;;3842:7;3854:1;3858;3854:5;3850:1;:9;3842:18;;;;;;;;;;;:54;;;;;;;;;;-1:-1:-1;3757:3:60;;3733:174;;;-1:-1:-1;3930:7:60;3444:501;-1:-1:-1;;;;3444:501:60:o;5:130:-1:-;72:20;;97:33;72:20;97:33;;;57:78;;;;;182:735;;318:3;311:4;303:6;299:17;295:27;285:2;;336:1;333;326:12;285:2;373:6;360:20;395:99;410:83;486:6;410:83;;;395:99;;;522:21;;;566:4;554:17;;;;386:108;;-1:-1;579:14;;554:17;674:1;659:252;684:6;681:1;678:13;659:252;;;767:3;754:17;746:6;742:30;791:56;843:3;831:10;791:56;;;779:69;;-1:-1;871:4;862:14;;;;890;;;;;706:1;699:9;659:252;;;663:14;278:639;;;;;;;;926:432;;1023:3;1016:4;1008:6;1004:17;1000:27;990:2;;1041:1;1038;1031:12;990:2;1078:6;1065:20;1100:60;1115:44;1152:6;1115:44;;1100:60;1091:69;;1180:6;1173:5;1166:21;1216:4;1208:6;1204:17;1249:4;1242:5;1238:16;1284:3;1275:6;1270:3;1266:16;1263:25;1260:2;;;1301:1;1298;1291:12;1260:2;1311:41;1345:6;1340:3;1335;1311:41;;;983:375;;;;;;;;1367:436;;1476:3;1469:4;1461:6;1457:17;1453:27;1443:2;;1494:1;1491;1484:12;1443:2;1524:6;1518:13;1546:61;1561:45;1599:6;1561:45;;1546:61;1537:70;;1627:6;1620:5;1613:21;1663:4;1655:6;1651:17;1696:4;1689:5;1685:16;1731:3;1722:6;1717:3;1713:16;1710:25;1707:2;;;1748:1;1745;1738:12;1707:2;1758:39;1790:6;1785:3;1780;1758:39;;1847:558;;1955:4;1943:9;1938:3;1934:19;1930:30;1927:2;;;1973:1;1970;1963:12;1927:2;1991:20;2006:4;1991:20;;;1982:29;-1:-1;2063:1;2095:49;2140:3;2120:9;2095:49;;;2070:75;;-1:-1;2238:2;2223:18;;2210:32;2262:18;2251:30;;2248:2;;;2294:1;2291;2284:12;2248:2;2329:54;2379:3;2370:6;2359:9;2355:22;2329:54;;;2322:4;2315:5;2311:16;2304:80;2166:229;1921:484;;;;;2412:130;2479:20;;2504:33;2479:20;2504:33;;2549:134;2627:13;;2645:33;2627:13;2645:33;;2690:241;;2794:2;2782:9;2773:7;2769:23;2765:32;2762:2;;;2810:1;2807;2800:12;2762:2;2845:1;2862:53;2907:7;2887:9;2862:53;;;2852:63;2756:175;-1:-1;;;;2756:175;2938:415;;3086:2;3074:9;3065:7;3061:23;3057:32;3054:2;;;3102:1;3099;3092:12;3054:2;3137:31;;3188:18;3177:30;;3174:2;;;3220:1;3217;3210:12;3174:2;3240:97;3329:7;3320:6;3309:9;3305:22;3240:97;;3360:354;;3481:2;3469:9;3460:7;3456:23;3452:32;3449:2;;;3497:1;3494;3487:12;3449:2;3532:24;;3576:18;3565:30;;3562:2;;;3608:1;3605;3598:12;3562:2;3628:70;3690:7;3681:6;3670:9;3666:22;3628:70;;3721:241;;3825:2;3813:9;3804:7;3800:23;3796:32;3793:2;;;3841:1;3838;3831:12;3793:2;3876:1;3893:53;3938:7;3918:9;3893:53;;3969:263;;4084:2;4072:9;4063:7;4059:23;4055:32;4052:2;;;4100:1;4097;4090:12;4052:2;4135:1;4152:64;4208:7;4188:9;4152:64;;4240:177;;4351:60;4407:3;4399:6;4351:60;;;4337:74;4330:87;-1:-1;;;4330:87;4425:113;4508:24;4526:5;4508:24;;;4503:3;4496:37;4490:48;;;4572:888;;4727:59;4780:5;4727:59;;;4799:91;4883:6;4878:3;4799:91;;;4792:98;;4913:3;4955:4;4947:6;4943:17;4938:3;4934:27;4982:61;5037:5;4982:61;;;5063:7;5091:1;5076:345;5101:6;5098:1;5095:13;5076:345;;;5163:9;5157:4;5153:20;5148:3;5141:33;5208:6;5202:13;5230:74;5299:4;5284:13;5230:74;;;5222:82;;5321:65;5379:6;5321:65;;;5409:4;5400:14;;;;;5311:75;-1:-1;;5123:1;5116:9;5076:345;;;-1:-1;5434:4;;4706:754;-1:-1;;;;;;;4706:754;5468:113;5551:24;5569:5;5551:24;;5588:315;;5684:34;5712:5;5684:34;;;5730:60;5783:6;5778:3;5730:60;;;5723:67;;5795:52;5840:6;5835:3;5828:4;5821:5;5817:16;5795:52;;;5868:29;5890:6;5868:29;;;5859:39;;;;5664:239;-1:-1;;;5664:239;5910:348;;6034:34;6062:5;6034:34;;;6080:88;6161:6;6156:3;6080:88;;;6073:95;;6173:52;6218:6;6213:3;6206:4;6199:5;6195:16;6173:52;;;6237:16;;;;;6014:244;-1:-1;;6014:244;7346:406;;7524:85;7606:2;7601:3;7524:85;;;7642:34;7622:55;;7711:3;7706:2;7697:12;;7690:25;7743:2;7734:12;;7510:242;-1:-1;;7510:242;7761:351;;7939:85;8021:2;8016:3;7939:85;;;8057:17;8037:38;;8103:2;8094:12;;7925:187;-1:-1;;7925:187;8121:335;;8299:84;8381:1;8376:3;8299:84;;;8416:3;8396:24;;8448:1;8439:11;;8285:171;-1:-1;;8285:171;8584:254;;8724:89;8809:3;8800:6;8724:89;;8845:953;;9237:148;9381:3;9237:148;;;9230:155;;9403:95;9494:3;9485:6;9403:95;;;9396:102;;9516:148;9660:3;9516:148;;;9509:155;;9682:91;9769:3;9760:6;9682:91;;9805:800;;10153:148;10297:3;10153:148;;;10146:155;;10319:95;10410:3;10401:6;10319:95;;;10312:102;;10432:148;10576:3;10432:148;;10612:213;10730:2;10715:18;;10744:71;10719:9;10788:6;10744:71;;10832:213;10950:2;10935:18;;10964:71;10939:9;11008:6;10964:71;;11052:301;11190:2;11204:47;;;11175:18;;11265:78;11175:18;11329:6;11265:78;;11580:492;11786:2;11771:18;;11800:71;11775:9;11844:6;11800:71;;;11919:9;11913:4;11909:20;11904:2;11893:9;11889:18;11882:48;11944:118;12057:4;12048:6;11944:118;;12079:256;12141:2;12135:9;12167:17;;;12242:18;12227:34;;12263:22;;;12224:62;12221:2;;;12299:1;12296;12289:12;12221:2;12315;12308:22;12119:216;;-1:-1;12119:216;12342:323;;12520:18;12512:6;12509:30;12506:2;;;12552:1;12549;12542:12;12506:2;-1:-1;12587:4;12575:17;;;12640:15;;12443:222;12672:317;;12811:18;12803:6;12800:30;12797:2;;;12843:1;12840;12833:12;12797:2;-1:-1;12974:4;12910;12887:17;;;;12906:9;12883:33;12964:15;;12734:255;13321:156;13450:4;13441:14;;13398:79;13484:142;13592:12;;13563:63;14132:183;14255:19;;;14304:4;14295:14;;14248:67;14485:144;14620:3;14598:31;-1:-1;14598:31;14963:91;;15025:24;15043:5;15025:24;;15061:72;15123:5;15106:27;15140:121;15213:42;15202:54;;15185:76;15348:145;15429:6;15424:3;15419;15406:30;-1:-1;15485:1;15467:16;;15460:27;15399:94;15502:268;15567:1;15574:101;15588:6;15585:1;15582:13;15574:101;;;15655:11;;;15649:18;15636:11;;;15629:39;15610:2;15603:10;15574:101;;;15690:6;15687:1;15684:13;15681:2;;;15755:1;15746:6;15741:3;15737:16;15730:27;15681:2;15551:219;;;;;15778:97;15866:2;15846:14;15862:7;15842:28;;15826:49;15883:117;15952:24;15970:5;15952:24;;;15945:5;15942:35;15932:2;;15991:1;15988;15981:12;15932:2;15926:74;;16007:117;16076:24;16094:5;16076:24;",
"source": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.5.0;\npragma experimental ABIEncoderV2;\n\nimport \"../interfaces/IArbitrumSys.sol\";\n\n\n/**\n * @title ArbitrumMultiCall - Aggregate results from multiple read-only function calls\n * @author Michael Elliot <mike@makerdao.com>\n * @author Joshua Levine <joshua@makerdao.com>\n * @author Nick Johnson <arachnid@notdot.net>\n * @author Corey Caplan <corey@dolomite.io>\n * @dev This multi call contract is almost the same as the ordinary one, with minor adjustments for Arbitrum. See:\n * https://developer.offchainlabs.com/docs/time_in_arbitrum#case-study-multicall for more information.\n */\ncontract ArbitrumMultiCall {\n\n struct Call {\n address target;\n bytes callData;\n }\n\n function aggregate(Call[] memory calls) public returns (uint256 blockNumber, bytes[] memory returnData) {\n blockNumber = IArbitrumSys(address(100)).arbBlockNumber();\n returnData = new bytes[](calls.length);\n for (uint256 i; i < calls.length; ++i) {\n // solium-disable-next-line security/no-low-level-calls\n (bool success, bytes memory result) = calls[i].target.call(calls[i].callData);\n if (!success) {\n if (result.length < 68) {\n string memory targetString = _addressToString(calls[i].target);\n revert(string(abi.encodePacked(\"Multicall::aggregate: revert at <\", targetString, \">\")));\n } else {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n result := add(result, 0x04)\n }\n string memory targetString = _addressToString(calls[i].target);\n revert(\n string(\n abi.encodePacked(\n \"Multicall::aggregate: revert at <\",\n targetString,\n \"> with reason: \",\n abi.decode(result, (string))\n )\n )\n );\n }\n }\n returnData[i] = result;\n }\n }\n\n // Helper functions\n function getEthBalance(address addr) public view returns (uint256 balance) {\n balance = addr.balance;\n }\n\n function getBlockHash(uint256 blockNumber) public view returns (bytes32 blockHash) {\n blockHash = blockhash(blockNumber);\n }\n\n function getLastBlockHash() public view returns (bytes32 blockHash) {\n blockHash = blockhash(IArbitrumSys(address(100)).arbBlockNumber() - 1);\n }\n\n function getCurrentBlockTimestamp() public view returns (uint256 timestamp) {\n timestamp = block.timestamp;\n }\n\n function getCurrentBlockDifficulty() public view returns (uint256 difficulty) {\n difficulty = block.difficulty;\n }\n\n function getCurrentBlockGasLimit() public view returns (uint256 gaslimit) {\n gaslimit = block.gaslimit;\n }\n\n function getCurrentBlockCoinbase() public view returns (address coinbase) {\n coinbase = block.coinbase;\n }\n\n function getBlockNumber() public view returns (uint256 blockNumber) {\n blockNumber = IArbitrumSys(address(100)).arbBlockNumber();\n }\n\n function getL1BlockNumber() public view returns (uint256 l1BlockNumber) {\n l1BlockNumber = block.number;\n }\n\n function _addressToString(address _address) internal pure returns(string memory) {\n bytes32 _bytes = bytes32(uint256(_address));\n bytes memory HEX = \"0123456789abcdef\";\n bytes memory _string = new bytes(42);\n _string[0] = \"0\";\n _string[1] = \"x\";\n for (uint256 i; i < 20; ++i) {\n _string[2 + i * 2] = HEX[uint8(_bytes[i + 12] >> 4)];\n _string[3 + i * 2] = HEX[uint8(_bytes[i + 12] & 0x0f)];\n }\n return string(_string);\n }\n}\n",
"sourcePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/utils/ArbitrumMultiCall.sol",
"ast": {
"absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/utils/ArbitrumMultiCall.sol",
"exportedSymbols": {
"ArbitrumMultiCall": [
16322
]
},
"id": 16323,
"nodeType": "SourceUnit",
"nodes": [
{
"id": 15980,
"literals": [
"solidity",
">=",
"0.5",
".0"
],
"nodeType": "PragmaDirective",
"src": "33:24:60"
},
{
"id": 15981,
"literals": [
"experimental",
"ABIEncoderV2"
],
"nodeType": "PragmaDirective",
"src": "58:33:60"
},
{
"absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/external/interfaces/IArbitrumSys.sol",
"file": "../interfaces/IArbitrumSys.sol",
"id": 15982,
"nodeType": "ImportDirective",
"scope": 16323,
"sourceUnit": 3983,
"src": "93:40:60",
"symbolAliases": [],
"unitAlias": ""
},
{
"baseContracts": [],
"contractDependencies": [],
"contractKind": "contract",
"documentation": "@title ArbitrumMultiCall - Aggregate results from multiple read-only function calls\n@author Michael Elliot <mike@makerdao.com>\n@author Joshua Levine <joshua@makerdao.com>\n@author Nick Johnson <arachnid@notdot.net>\n@author Corey Caplan <corey@dolomite.io>\n@dev This multi call contract is almost the same as the ordinary one, with minor adjustments for Arbitrum. See:\n https://developer.offchainlabs.com/docs/time_in_arbitrum#case-study-multicall for more information.",
"fullyImplemented": true,
"id": 16322,
"linearizedBaseContracts": [
16322
],
"name": "ArbitrumMultiCall",
"nodeType": "ContractDefinition",
"nodes": [
{
"canonicalName": "ArbitrumMultiCall.Call",
"id": 15987,
"members": [
{
"constant": false,
"id": 15984,
"name": "target",
"nodeType": "VariableDeclaration",
"scope": 15987,
"src": "693:14:60",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 15983,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "693:7:60",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 15986,
"name": "callData",
"nodeType": "VariableDeclaration",
"scope": 15987,
"src": "717:14:60",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 15985,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "717:5:60",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
}
],
"name": "Call",
"nodeType": "StructDefinition",
"scope": 16322,
"src": "671:67:60",
"visibility": "public"
},
{
"body": {
"id": 16108,
"nodeType": "Block",
"src": "848:1374:60",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 16006,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 15998,
"name": "blockNumber",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 15993,
"src": "858:11:60",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "313030",
"id": 16001,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "893:3:60",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_100_by_1",
"typeString": "int_const 100"
},
"value": "100"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_100_by_1",
"typeString": "int_const 100"
}
],
"id": 16000,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "885:7:60",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": "address"
},
"id": 16002,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "885:12:60",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
],
"id": 15999,
"name": "IArbitrumSys",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3982,
"src": "872:12:60",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IArbitrumSys_$3982_$",
"typeString": "type(contract IArbitrumSys)"
}
},
"id": 16003,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "872:26:60",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IArbitrumSys_$3982",
"typeString": "contract IArbitrumSys"
}
},
"id": 16004,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "arbBlockNumber",
"nodeType": "MemberAccess",
"referencedDeclaration": 3981,
"src": "872:41:60",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
"typeString": "function () view external returns (uint256)"
}
},
"id": 16005,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "872:43:60",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "858:57:60",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 16007,
"nodeType": "ExpressionStatement",
"src": "858:57:60"
},
{
"expression": {
"argumentTypes": null,
"id": 16015,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 16008,
"name": "returnData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 15996,
"src": "925:10:60",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_bytes_memory_$dyn_memory_ptr",
"typeString": "bytes memory[] memory"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 16012,
"name": "calls",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 15990,
"src": "950:5:60",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_struct$_Call_$15987_memory_$dyn_memory_ptr",
"typeString": "struct ArbitrumMultiCall.Call memory[] memory"
}
},
"id": 16013,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "950:12:60",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}