safe-react/safe-contracts/build/contracts/GnosisSafe.json

25235 lines
1.1 MiB

{
"contractName": "GnosisSafe",
"abi": [
{
"constant": true,
"inputs": [
{
"name": "",
"type": "uint256"
}
],
"name": "owners",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "",
"type": "address"
}
],
"name": "isOwner",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "threshold",
"outputs": [
{
"name": "",
"type": "uint8"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "",
"type": "address"
},
{
"name": "",
"type": "bytes32"
}
],
"name": "isConfirmed",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "NAME",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "nonce",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "",
"type": "uint256"
}
],
"name": "extensions",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "",
"type": "address"
}
],
"name": "isExtension",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "VERSION",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"name": "_owners",
"type": "address[]"
},
{
"name": "_threshold",
"type": "uint8"
},
{
"name": "to",
"type": "address"
},
{
"name": "data",
"type": "bytes"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"payable": true,
"stateMutability": "payable",
"type": "fallback"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"name": "newContract",
"type": "address"
}
],
"name": "ContractCreation",
"type": "event"
},
{
"constant": false,
"inputs": [
{
"name": "_owners",
"type": "address[]"
},
{
"name": "_threshold",
"type": "uint8"
},
{
"name": "to",
"type": "address"
},
{
"name": "data",
"type": "bytes"
}
],
"name": "setup",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_masterCopy",
"type": "address"
}
],
"name": "changeMasterCopy",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "owner",
"type": "address"
},
{
"name": "_threshold",
"type": "uint8"
}
],
"name": "addOwner",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "ownerIndex",
"type": "uint256"
},
{
"name": "owner",
"type": "address"
},
{
"name": "_threshold",
"type": "uint8"
}
],
"name": "removeOwner",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "oldOwnerIndex",
"type": "uint256"
},
{
"name": "oldOwner",
"type": "address"
},
{
"name": "newOwner",
"type": "address"
}
],
"name": "replaceOwner",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_threshold",
"type": "uint8"
}
],
"name": "changeThreshold",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "extension",
"type": "address"
}
],
"name": "addExtension",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "extensionIndex",
"type": "uint256"
},
{
"name": "extension",
"type": "address"
}
],
"name": "removeExtension",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "to",
"type": "address"
},
{
"name": "value",
"type": "uint256"
},
{
"name": "data",
"type": "bytes"
},
{
"name": "operation",
"type": "uint8"
},
{
"name": "_nonce",
"type": "uint256"
}
],
"name": "confirmTransaction",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "to",
"type": "address"
},
{
"name": "value",
"type": "uint256"
},
{
"name": "data",
"type": "bytes"
},
{
"name": "operation",
"type": "uint8"
},
{
"name": "v",
"type": "uint8[]"
},
{
"name": "r",
"type": "bytes32[]"
},
{
"name": "s",
"type": "bytes32[]"
},
{
"name": "_owners",
"type": "address[]"
},
{
"name": "indices",
"type": "uint256[]"
}
],
"name": "executeTransaction",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "to",
"type": "address"
},
{
"name": "value",
"type": "uint256"
},
{
"name": "data",
"type": "bytes"
},
{
"name": "operation",
"type": "uint8"
},
{
"name": "extension",
"type": "address"
}
],
"name": "executeExtension",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "to",
"type": "address"
},
{
"name": "value",
"type": "uint256"
},
{
"name": "data",
"type": "bytes"
},
{
"name": "operation",
"type": "uint8"
},
{
"name": "_nonce",
"type": "uint256"
}
],
"name": "getTransactionHash",
"outputs": [
{
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "getOwners",
"outputs": [
{
"name": "",
"type": "address[]"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "getExtensions",
"outputs": [
{
"name": "",
"type": "address[]"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "transactionHash",
"type": "bytes32"
}
],
"name": "getConfirmationCount",
"outputs": [
{
"name": "confirmationCount",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "transactionHash",
"type": "bytes32"
}
],
"name": "getConfirmingOwners",
"outputs": [
{
"name": "confirmingOwners",
"type": "address[]"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x606060405234156200001057600080fd5b60405162002d6738038062002d67833981016040528080518201919060200180519060200190919080519060200190919080518201919050506200006b84848484620000756401000000000262001b33176401000000009004565b5050505062000374565b600080600060149054906101000a900460ff1660ff161415156200009857600080fd5b84518460ff1611151515620000ac57600080fd5b60018460ff1610151515620000c057600080fd5b600090505b8451811015620001fe5760008582815181101515620000e057fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff16141515156200010e57600080fd5b6004600086838151811015156200012157fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156200018057600080fd5b60016004600087848151811015156200019557fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050620000c5565b8460029080519060200190620002169291906200029f565b5083600060146101000a81548160ff021916908360ff16021790555060008373ffffffffffffffffffffffffffffffffffffffff161415156200028057620002738383620002876401000000000262002698176401000000009004565b15156200027f57600080fd5b5b5050505050565b600080600083516020850186600019f4905092915050565b8280548282559060005260206000209081019282156200031b579160200282015b828111156200031a5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190620002c0565b5b5090506200032a91906200032e565b5090565b6200037191905b808211156200036d57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010162000335565b5090565b90565b6129e380620003846000396000f300606060405260043610610149576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c271461014b57806307fa7017146101ae5780630e5229b0146101f0578063113642e514610235578063170ff3e1146102705780632b500041146102a95780632b5b1f821461035f5780632f54bf6e146103f957806342cde4e81461044a57806354e99c6e146104795780637b0519f3146104da5780637de7edef1461053857806383b7db6314610571578063842b954e146105db578063a04222e114610629578063a0e67e2b146106f1578063a3f4df7e1461075b578063affed0e0146107e9578063b6a9002e14610812578063b7f3358d146108c2578063c676920a146108e8578063db85d59c14610964578063f6d3fd86146109c7578063f847ed4814610b98578063ffa1ad7414610be9575b005b341561015657600080fd5b61016c6004808035906020019091905050610c77565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156101b957600080fd5b6101ee600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cb6565b005b34156101fb57600080fd5b610233600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560ff16906020019091905050610e71565b005b341561024057600080fd5b61025a600480803560001916906020019091905050611011565b6040518082815260200191505060405180910390f35b341561027b57600080fd5b6102a7600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506110e7565b005b34156102b457600080fd5b610341600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff1690602001909190803590602001909190505061125e565b60405180826000191660001916815260200191505060405180910390f35b341561036a57600080fd5b6103f7600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff1690602001909190803590602001909190505061140b565b005b341561040457600080fd5b610430600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611561565b604051808215151515815260200191505060405180910390f35b341561045557600080fd5b61045d611581565b604051808260ff1660ff16815260200191505060405180910390f35b341561048457600080fd5b6104d8600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611594565b005b34156104e557600080fd5b61051e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035600019169060200190919050506117cf565b604051808215151515815260200191505060405180910390f35b341561054357600080fd5b61056f600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506117fe565b005b341561057c57600080fd5b6105846118a1565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156105c75780820151818401526020810190506105ac565b505050509050019250505060405180910390f35b34156105e657600080fd5b610627600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560ff16906020019091905050611935565b005b341561063457600080fd5b6106ef60048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803560ff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611b33565b005b34156106fc57600080fd5b610704611d21565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561074757808201518184015260208101905061072c565b505050509050019250505060405180910390f35b341561076657600080fd5b61076e611db5565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107ae578082015181840152602081019050610793565b50505050905090810190601f1680156107db5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156107f457600080fd5b6107fc611dee565b6040518082815260200191505060405180910390f35b341561081d57600080fd5b6108c0600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611df4565b005b34156108cd57600080fd5b6108e6600480803560ff16906020019091905050611fe7565b005b34156108f357600080fd5b61090d600480803560001916906020019091905050612069565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610950578082015181840152602081019050610935565b505050509050019250505060405180910390f35b341561096f57600080fd5b61098560048080359060200190919050506121fd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156109d257600080fd5b610b96600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff16906020019091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190505061223c565b005b3415610ba357600080fd5b610bcf600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061263f565b604051808215151515815260200191505060405180910390f35b3415610bf457600080fd5b610bfc61265f565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610c3c578082015181840152602081019050610c21565b50505050905090810190601f168015610c695780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600281815481101515610c8657fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610cf057600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600383815481101515610d1657fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610d6457600080fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506003600160038054905003815481101515610dd357fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600383815481101515610e0e57fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003805480919060019003610e6c91906127ed565b505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610eab57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614151515610ed157600080fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610f2a57600080fd5b60028054806001018281610f3e9190612819565b9160005260206000209001600084909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060ff16600060149054906101000a900460ff1660ff1614151561100d5761100c81611fe7565b5b5050565b600080600090505b6002805490508110156110e1576006600060028381548110151561103957fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000846000191660001916815260200190815260200160002060009054906101000a900460ff16156110d45781806001019250505b8080600101915050611019565b50919050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561112157600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561114757600080fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156111a057600080fd5b600380548060010182816111b49190612845565b9160005260206000209001600083909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600060197f01000000000000000000000000000000000000000000000000000000000000000230878787878760405180887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b602083101515611391578051825260208201915060208101905060208303925061136c565b6001836020036101000a0380198251168184511680821785525050505050509050018360028111156113bf57fe5b60ff167f01000000000000000000000000000000000000000000000000000000000000000281526001018281526020019750505050505050506040518091039020905095945050505050565b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561146557600080fd5b6114748686868660015461125e565b9050600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff161515156114e857600080fd5b6001600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550505050505050565b60046020528060005260406000206000915054906101000a900460ff1681565b600060149054906101000a900460ff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115ce57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156115f457600080fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561164d57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1660028481548110151561167357fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156116c157600080fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060028481548110151561178157fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60066020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561183857600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561185e57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6118a9612871565b600380548060200260200160405190810160405280929190818152602001828054801561192b57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116118e1575b5050505050905090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561196f57600080fd5b8060ff166001600280549050031015151561198957600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166002848154811015156119af57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156119fd57600080fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506002600160028054905003815481101515611a6c57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600284815481101515611aa757fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002805480919060019003611b059190612885565b508060ff16600060149054906101000a900460ff1660ff16141515611b2e57611b2d81611fe7565b5b505050565b600080600060149054906101000a900460ff1660ff16141515611b5557600080fd5b84518460ff1611151515611b6857600080fd5b60018460ff1610151515611b7b57600080fd5b600090505b8451811015611cb25760008582815181101515611b9957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1614151515611bc657600080fd5b600460008683815181101515611bd857fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515611c3657600080fd5b6001600460008784815181101515611c4a57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050611b80565b8460029080519060200190611cc89291906128b1565b5083600060146101000a81548160ff021916908360ff16021790555060008373ffffffffffffffffffffffffffffffffffffffff16141515611d1a57611d0e8383612698565b1515611d1957600080fd5b5b5050505050565b611d2961293b565b6002805480602002602001604051908101604052809291908181526020018280548015611dab57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611d61575b5050505050905090565b6040805190810160405280600b81526020017f476e6f736973205361666500000000000000000000000000000000000000000081525081565b60015481565b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611e4c57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1663cde09ca933878787876000604051602001526040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115611f1f57fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015611f5f578082015181840152602081019050611f44565b50505050905090810190601f168015611f8c5780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b1515611fae57600080fd5b6102c65a03f11515611fbf57600080fd5b505050604051805190501515611fd457600080fd5b611fe0858585856126b0565b5050505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561202157600080fd5b6002805490508160ff161115151561203857600080fd5b60018160ff161015151561204b57600080fd5b80600060146101000a81548160ff021916908360ff16021790555050565b61207161293b565b60008061207d84611011565b91508160405180591061208d5750595b9080825280602002602001820160405250925060009150600090505b6002805490508110156121f657600660006002838154811015156120c957fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000856000191660001916815260200190815260200160002060009054906101000a900460ff16156121e95760028181548110151561216a57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683838151811015156121a457fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505081806001019250505b80806001019150506120a9565b5050919050565b60038181548110151561220c57fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008060006122538e8e8e8e60015461125e565b94506000935060009050600091505b600060149054906101000a900460ff1660ff16821015612518578086511180156122a25750858181518110151561229557fe5b9060200190602002015182145b156123a15786818151811015156122b557fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612371575060066000888381518110151561230557fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000866000191660001916815260200190815260200160002060009054906101000a900460ff165b151561237c57600080fd5b868181518110151561238a57fe5b906020019060200201519250600181019050612476565b6001858b8385038151811015156123b457fe5b906020019060200201518b8486038151811015156123ce57fe5b906020019060200201518b8587038151811015156123e857fe5b90602001906020020151604051600081526020016040526000604051602001526040518085600019166000191681526020018460ff1660ff16815260200183600019166000191681526020018260001916600019168152602001945050505050602060405160208103908084039060008661646e5a03f1151561246a57600080fd5b50506020604051035192505b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156124ce57600080fd5b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1611151561250857600080fd5b8293508180600101925050612262565b60008751111561261357600091505b865182101561261257868281518110151561253e57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561260557600060066000898581518110151561259057fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000876000191660001916815260200190815260200160002060006101000a81548160ff0219169083151502179055505b8180600101925050612527565b5b6001806000828254019250508190555061262f8e8e8e8e6126b0565b5050505050505050505050505050565b60056020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b600080600083516020850186600019f4905092915050565b60008060028111156126be57fe5b8260028111156126ca57fe5b14156126eb576126db8585856127c1565b15156126e657600080fd5b6127ba565b600160028111156126f857fe5b82600281111561270457fe5b1415612724576127148584612698565b151561271f57600080fd5b6127b9565b61272d836127db565b905060008173ffffffffffffffffffffffffffffffffffffffff161415151561275557600080fd5b7f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5050505050565b60008060008351602085018688600019f190509392505050565b60008151602083016000f09050919050565b81548183558181151161281457818360005260206000209182019101612813919061294f565b5b505050565b8154818355818115116128405781836000526020600020918201910161283f919061294f565b5b505050565b81548183558181151161286c5781836000526020600020918201910161286b919061294f565b5b505050565b602060405190810160405280600081525090565b8154818355818115116128ac578183600052602060002091820191016128ab919061294f565b5b505050565b82805482825590600052602060002090810192821561292a579160200282015b828111156129295782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906128d1565b5b5090506129379190612974565b5090565b602060405190810160405280600081525090565b61297191905b8082111561296d576000816000905550600101612955565b5090565b90565b6129b491905b808211156129b057600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010161297a565b5090565b905600a165627a7a72305820b9309aeae0cb4d289bc66fdd1b641936b903e87d406ff75007e08dd9fd54ff590029",
"deployedBytecode": "0x606060405260043610610149576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c271461014b57806307fa7017146101ae5780630e5229b0146101f0578063113642e514610235578063170ff3e1146102705780632b500041146102a95780632b5b1f821461035f5780632f54bf6e146103f957806342cde4e81461044a57806354e99c6e146104795780637b0519f3146104da5780637de7edef1461053857806383b7db6314610571578063842b954e146105db578063a04222e114610629578063a0e67e2b146106f1578063a3f4df7e1461075b578063affed0e0146107e9578063b6a9002e14610812578063b7f3358d146108c2578063c676920a146108e8578063db85d59c14610964578063f6d3fd86146109c7578063f847ed4814610b98578063ffa1ad7414610be9575b005b341561015657600080fd5b61016c6004808035906020019091905050610c77565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156101b957600080fd5b6101ee600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cb6565b005b34156101fb57600080fd5b610233600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560ff16906020019091905050610e71565b005b341561024057600080fd5b61025a600480803560001916906020019091905050611011565b6040518082815260200191505060405180910390f35b341561027b57600080fd5b6102a7600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506110e7565b005b34156102b457600080fd5b610341600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff1690602001909190803590602001909190505061125e565b60405180826000191660001916815260200191505060405180910390f35b341561036a57600080fd5b6103f7600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff1690602001909190803590602001909190505061140b565b005b341561040457600080fd5b610430600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611561565b604051808215151515815260200191505060405180910390f35b341561045557600080fd5b61045d611581565b604051808260ff1660ff16815260200191505060405180910390f35b341561048457600080fd5b6104d8600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611594565b005b34156104e557600080fd5b61051e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035600019169060200190919050506117cf565b604051808215151515815260200191505060405180910390f35b341561054357600080fd5b61056f600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506117fe565b005b341561057c57600080fd5b6105846118a1565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156105c75780820151818401526020810190506105ac565b505050509050019250505060405180910390f35b34156105e657600080fd5b610627600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560ff16906020019091905050611935565b005b341561063457600080fd5b6106ef60048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803560ff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611b33565b005b34156106fc57600080fd5b610704611d21565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561074757808201518184015260208101905061072c565b505050509050019250505060405180910390f35b341561076657600080fd5b61076e611db5565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107ae578082015181840152602081019050610793565b50505050905090810190601f1680156107db5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156107f457600080fd5b6107fc611dee565b6040518082815260200191505060405180910390f35b341561081d57600080fd5b6108c0600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611df4565b005b34156108cd57600080fd5b6108e6600480803560ff16906020019091905050611fe7565b005b34156108f357600080fd5b61090d600480803560001916906020019091905050612069565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610950578082015181840152602081019050610935565b505050509050019250505060405180910390f35b341561096f57600080fd5b61098560048080359060200190919050506121fd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156109d257600080fd5b610b96600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff16906020019091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190505061223c565b005b3415610ba357600080fd5b610bcf600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061263f565b604051808215151515815260200191505060405180910390f35b3415610bf457600080fd5b610bfc61265f565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610c3c578082015181840152602081019050610c21565b50505050905090810190601f168015610c695780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600281815481101515610c8657fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610cf057600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600383815481101515610d1657fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610d6457600080fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506003600160038054905003815481101515610dd357fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600383815481101515610e0e57fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003805480919060019003610e6c91906127ed565b505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610eab57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614151515610ed157600080fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610f2a57600080fd5b60028054806001018281610f3e9190612819565b9160005260206000209001600084909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060ff16600060149054906101000a900460ff1660ff1614151561100d5761100c81611fe7565b5b5050565b600080600090505b6002805490508110156110e1576006600060028381548110151561103957fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000846000191660001916815260200190815260200160002060009054906101000a900460ff16156110d45781806001019250505b8080600101915050611019565b50919050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561112157600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561114757600080fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156111a057600080fd5b600380548060010182816111b49190612845565b9160005260206000209001600083909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600060197f01000000000000000000000000000000000000000000000000000000000000000230878787878760405180887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b602083101515611391578051825260208201915060208101905060208303925061136c565b6001836020036101000a0380198251168184511680821785525050505050509050018360028111156113bf57fe5b60ff167f01000000000000000000000000000000000000000000000000000000000000000281526001018281526020019750505050505050506040518091039020905095945050505050565b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561146557600080fd5b6114748686868660015461125e565b9050600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff161515156114e857600080fd5b6001600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550505050505050565b60046020528060005260406000206000915054906101000a900460ff1681565b600060149054906101000a900460ff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115ce57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156115f457600080fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561164d57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1660028481548110151561167357fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156116c157600080fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060028481548110151561178157fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60066020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561183857600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561185e57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6118a9612871565b600380548060200260200160405190810160405280929190818152602001828054801561192b57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116118e1575b5050505050905090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561196f57600080fd5b8060ff166001600280549050031015151561198957600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166002848154811015156119af57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156119fd57600080fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506002600160028054905003815481101515611a6c57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600284815481101515611aa757fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002805480919060019003611b059190612885565b508060ff16600060149054906101000a900460ff1660ff16141515611b2e57611b2d81611fe7565b5b505050565b600080600060149054906101000a900460ff1660ff16141515611b5557600080fd5b84518460ff1611151515611b6857600080fd5b60018460ff1610151515611b7b57600080fd5b600090505b8451811015611cb25760008582815181101515611b9957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1614151515611bc657600080fd5b600460008683815181101515611bd857fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515611c3657600080fd5b6001600460008784815181101515611c4a57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050611b80565b8460029080519060200190611cc89291906128b1565b5083600060146101000a81548160ff021916908360ff16021790555060008373ffffffffffffffffffffffffffffffffffffffff16141515611d1a57611d0e8383612698565b1515611d1957600080fd5b5b5050505050565b611d2961293b565b6002805480602002602001604051908101604052809291908181526020018280548015611dab57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611d61575b5050505050905090565b6040805190810160405280600b81526020017f476e6f736973205361666500000000000000000000000000000000000000000081525081565b60015481565b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611e4c57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1663cde09ca933878787876000604051602001526040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115611f1f57fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015611f5f578082015181840152602081019050611f44565b50505050905090810190601f168015611f8c5780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b1515611fae57600080fd5b6102c65a03f11515611fbf57600080fd5b505050604051805190501515611fd457600080fd5b611fe0858585856126b0565b5050505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561202157600080fd5b6002805490508160ff161115151561203857600080fd5b60018160ff161015151561204b57600080fd5b80600060146101000a81548160ff021916908360ff16021790555050565b61207161293b565b60008061207d84611011565b91508160405180591061208d5750595b9080825280602002602001820160405250925060009150600090505b6002805490508110156121f657600660006002838154811015156120c957fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000856000191660001916815260200190815260200160002060009054906101000a900460ff16156121e95760028181548110151561216a57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683838151811015156121a457fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505081806001019250505b80806001019150506120a9565b5050919050565b60038181548110151561220c57fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008060006122538e8e8e8e60015461125e565b94506000935060009050600091505b600060149054906101000a900460ff1660ff16821015612518578086511180156122a25750858181518110151561229557fe5b9060200190602002015182145b156123a15786818151811015156122b557fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612371575060066000888381518110151561230557fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000866000191660001916815260200190815260200160002060009054906101000a900460ff165b151561237c57600080fd5b868181518110151561238a57fe5b906020019060200201519250600181019050612476565b6001858b8385038151811015156123b457fe5b906020019060200201518b8486038151811015156123ce57fe5b906020019060200201518b8587038151811015156123e857fe5b90602001906020020151604051600081526020016040526000604051602001526040518085600019166000191681526020018460ff1660ff16815260200183600019166000191681526020018260001916600019168152602001945050505050602060405160208103908084039060008661646e5a03f1151561246a57600080fd5b50506020604051035192505b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156124ce57600080fd5b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1611151561250857600080fd5b8293508180600101925050612262565b60008751111561261357600091505b865182101561261257868281518110151561253e57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561260557600060066000898581518110151561259057fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000876000191660001916815260200190815260200160002060006101000a81548160ff0219169083151502179055505b8180600101925050612527565b5b6001806000828254019250508190555061262f8e8e8e8e6126b0565b5050505050505050505050505050565b60056020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b600080600083516020850186600019f4905092915050565b60008060028111156126be57fe5b8260028111156126ca57fe5b14156126eb576126db8585856127c1565b15156126e657600080fd5b6127ba565b600160028111156126f857fe5b82600281111561270457fe5b1415612724576127148584612698565b151561271f57600080fd5b6127b9565b61272d836127db565b905060008173ffffffffffffffffffffffffffffffffffffffff161415151561275557600080fd5b7f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5050505050565b60008060008351602085018688600019f190509392505050565b60008151602083016000f09050919050565b81548183558181151161281457818360005260206000209182019101612813919061294f565b5b505050565b8154818355818115116128405781836000526020600020918201910161283f919061294f565b5b505050565b81548183558181151161286c5781836000526020600020918201910161286b919061294f565b5b505050565b602060405190810160405280600081525090565b8154818355818115116128ac578183600052602060002091820191016128ab919061294f565b5b505050565b82805482825590600052602060002090810192821561292a579160200282015b828111156129295782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906128d1565b5b5090506129379190612974565b5090565b602060405190810160405280600081525090565b61297191905b8082111561296d576000816000905550600101612955565b5090565b90565b6129b491905b808211156129b057600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010161297a565b5090565b905600a165627a7a72305820b9309aeae0cb4d289bc66fdd1b641936b903e87d406ff75007e08dd9fd54ff590029",
"sourceMap": "218:14623:1:-;;;1567:153;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1677:36;1683:7;1692:10;1704:2;1708:4;1677:5;;;;;:36;;;:::i;:::-;1567:153;;;;218:14623;;2039:1141;2550:9;2289:1;2276:9;;;;;;;;;;;:14;;;2268:23;;;;;;;;2397:7;:14;2383:10;:28;;;;2375:37;;;;;;;;2496:1;2482:10;:15;;;;2474:24;;;;;;;;2562:1;2550:13;;2545:266;2569:7;:14;2565:1;:18;2545:266;;;2671:1;2657:7;2665:1;2657:10;;;;;;;;;;;;;;;;;;:15;;;;2649:24;;;;;;;;2740:7;:19;2748:7;2756:1;2748:10;;;;;;;;;;;;;;;;;;2740:19;;;;;;;;;;;;;;;;;;;;;;;;;2739:20;2731:29;;;;;;;;2796:4;2774:7;:19;2782:7;2790:1;2782:10;;;;;;;;;;;;;;;;;;2774:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;2585:3;;;;;;;2545:266;;;2829:7;2820:6;:16;;;;;;;;;;;;:::i;:::-;;2858:10;2846:9;;:22;;;;;;;;;;;;;;;;;;3048:1;3042:2;:7;;;;3038:135;;;3143:29;3163:2;3167:4;3143:19;;;;;:29;;;:::i;:::-;3135:38;;;;;;;;3038:135;2039:1141;;;;;:::o;12356:225::-;12443:12;12563:1;12560;12553:4;12547:5;12540:4;12534;12530:3;12526:2;12522:1;12518:3;12505:12;12494:71;;12480:95;;;;:::o;218:14623::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;",
"deployedSourceMap": "218:14623:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;472:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7264:384;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3786:431;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13870:290;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6656:336;;;;;;;;;;;;;;;;;;;;;;;;;;;;13076:249;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7979:506;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;607:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;418:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5468:502;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;892:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3326:220;;;;;;;;;;;;;;;;;;;;;;;;;;;;13603:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;4548:599:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2039:1141;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13407:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;295:43:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;446:20:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11178:464;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6159:320;;;;;;;;;;;;;;;;;;;;;;;;;;;;14301:538;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;501:29:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9222:1531;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;729:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;344:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;472:23:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7264:384::-;1105:4;1083:27;;:10;:27;;;1075:36;;;;;;;;7490:9;7460:39;;:10;7471:14;7460:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;:39;;;7452:48;;;;;;;;7535:5;7510:11;:22;7522:9;7510:22;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;7579:10;7610:1;7590:10;:17;;;;:21;7579:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;7550:10;7561:14;7550:26;;;;;;;;;;;;;;;;;;;:62;;;;;;;;;;;;;;;;;;7622:10;:19;;;;;;;;;;;;:::i;:::-;;7264:384;;:::o;3786:431::-;1105:4;1083:27;;:10;:27;;;1075:36;;;;;;;;3943:1;3934:5;:10;;;;3926:19;;;;;;;;4004:7;:14;4012:5;4004:14;;;;;;;;;;;;;;;;;;;;;;;;;4003:15;3995:24;;;;;;;;4029:6;:18;;;;;;;;;;;:::i;:::-;;;;;;;;;;4041:5;4029:18;;;;;;;;;;;;;;;;;;;;;;;4074:4;4057:7;:14;4065:5;4057:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;4159:10;4146:23;;:9;;;;;;;;;;;:23;;;;4142:68;;;4183:27;4199:10;4183:15;:27::i;:::-;4142:68;3786:431;;:::o;13870:290::-;13970:22;14013:6;14022:1;14013:10;;14008:146;14029:6;:13;;;;14025:1;:17;14008:146;;;14067:11;:22;14079:6;14086:1;14079:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;14067:22;;;;;;;;;;;;;;;:39;14090:15;14067:39;;;;;;;;;;;;;;;;;;;;;;;;;;;14063:80;;;14124:19;;;;;;;14063:80;14044:3;;;;;;;14008:146;;;13870:290;;;;:::o;6656:336::-;1105:4;1083:27;;:10;:27;;;1075:36;;;;;;;;6822:1;6808:9;6800:23;;;;6792:32;;;;;;;;6887:11;:22;6899:9;6887:22;;;;;;;;;;;;;;;;;;;;;;;;;6886:23;6878:32;;;;;;;;6920:10;:26;;;;;;;;;;;:::i;:::-;;;;;;;;;;6936:9;6920:26;;;;;;;;;;;;;;;;;;;;;;;6981:4;6956:11;:22;6968:9;6956:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;6656:336;:::o;13076:249::-;13225:7;13270:4;13265:10;;13277:4;13283:2;13287:5;13294:4;13300:9;13311:6;13255:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13248:70:1;;13076:249;;;;;;;:::o;7979:506::-;8220:23;8190:7;:19;8198:10;8190:19;;;;;;;;;;;;;;;;;;;;;;;;;8182:28;;;;;;;;8246:53;8265:2;8269:5;8276:4;8282:9;8293:5;;8246:18;:53::i;:::-;8220:79;;8380:11;:23;8392:10;8380:23;;;;;;;;;;;;;;;:40;8404:15;8380:40;;;;;;;;;;;;;;;;;;;;;;;;;;;8379:41;8371:50;;;;;;;;8474:4;8431:11;:23;8443:10;8431:23;;;;;;;;;;;;;;;:40;8455:15;8431:40;;;;;;;;;;;;;;;;;;:47;;;;;;;;;;;;;;;;;;7979:506;;;;;;:::o;607:40::-;;;;;;;;;;;;;;;;;;;;;;:::o;418:22::-;;;;;;;;;;;;;:::o;5468:502::-;1105:4;1083:27;;:10;:27;;;1075:36;;;;;;;;5658:1;5646:8;:13;;;;5638:22;;;;;;;;5719:7;:17;5727:8;5719:17;;;;;;;;;;;;;;;;;;;;;;;;;5718:18;5710:27;;;;;;;;5842:8;5817:33;;:6;5824:13;5817:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;5809:42;;;;;;;;5881:5;5861:7;:17;5869:8;5861:17;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;5917:4;5896:7;:17;5904:8;5896:17;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;5955:8;5931:6;5938:13;5931:21;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;5468:502;;;:::o;892:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3326:220::-;1105:4;1083:27;;:10;:27;;;1075:36;;;;;;;;3503:1;3487:11;3479:25;;;;3471:34;;;;;;;;3528:11;3515:10;;:24;;;;;;;;;;;;;;;;;;3326:220;:::o;13603:121::-;13673:11;;:::i;:::-;13707:10;13700:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13603:121;:::o;4548:599::-;1105:4;1083:27;;:10;:27;;;1075:36;;;;;;;;4776:10;4755:31;;4771:1;4755:6;:13;;;;:17;:31;;4747:40;;;;;;;;4889:5;4867:27;;:6;4874:10;4867:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;4859:36;;;;;;;;4922:5;4905:7;:14;4913:5;4905:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;4958:6;4981:1;4965:6;:13;;;;:17;4958:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;4937:6;4944:10;4937:18;;;;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;4993:6;:15;;;;;;;;;;;;:::i;:::-;;5089:10;5076:23;;:9;;;;;;;;;;;:23;;;;5072:68;;;5113:27;5129:10;5113:15;:27::i;:::-;5072:68;4548:599;;;:::o;2039:1141::-;2550:9;2289:1;2276:9;;;;;;;;;;;:14;;;2268:23;;;;;;;;2397:7;:14;2383:10;:28;;;;2375:37;;;;;;;;2496:1;2482:10;:15;;;;2474:24;;;;;;;;2562:1;2550:13;;2545:266;2569:7;:14;2565:1;:18;2545:266;;;2671:1;2657:7;2665:1;2657:10;;;;;;;;;;;;;;;;;;:15;;;;2649:24;;;;;;;;2740:7;:19;2748:7;2756:1;2748:10;;;;;;;;;;;;;;;;;;2740:19;;;;;;;;;;;;;;;;;;;;;;;;;2739:20;2731:29;;;;;;;;2796:4;2774:7;:19;2782:7;2790:1;2782:10;;;;;;;;;;;;;;;;;;2774:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;2585:3;;;;;;;2545:266;;;2829:7;2820:6;:16;;;;;;;;;;;;:::i;:::-;;2858:10;2846:9;;:22;;;;;;;;;;;;;;;;;;3048:1;3042:2;:7;;;;3038:135;;;3143:29;3163:2;3167:4;3143:19;:29::i;:::-;3135:38;;;;;;;;3038:135;2039:1141;;;;;:::o;13407:111::-;13473:9;;:::i;:::-;13505:6;13498:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13407:111;:::o;295:43::-;;;;;;;;;;;;;;;;;;;;:::o;446:20::-;;;;:::o;11178:464::-;11374:11;:22;11386:9;11374:22;;;;;;;;;;;;;;;;;;;;;;;;;11366:31;;;;;;;;11464:9;:22;;;11487:10;11499:2;11503:5;11510:4;11516:9;11464:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11456:71:1;;;;;;;;11600:35;11608:2;11612:5;11619:4;11625:9;11600:7;:35::i;:::-;11178:464;;;;;:::o;6159:320::-;1105:4;1083:27;;:10;:27;;;1075:36;;;;;;;;6340:6;:13;;;;6326:10;:27;;;;6318:36;;;;;;;;6438:1;6424:10;:15;;;;6416:24;;;;;;;;6462:10;6450:9;;:22;;;;;;;;;;;;;;;;;;6159:320;:::o;14301:538::-;14400:26;;:::i;:::-;14442:22;14611:6;14467:37;14488:15;14467:20;:37::i;:::-;14442:62;;14547:17;14533:32;;;;;;;;;;;;;;;;;;;;;;;;14514:51;;14595:1;14575:21;;14620:1;14611:10;;14606:227;14627:6;:13;;;;14623:1;:17;14606:227;;;14665:11;:22;14677:6;14684:1;14677:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;14665:22;;;;;;;;;;;;;;;:39;14688:15;14665:39;;;;;;;;;;;;;;;;;;;;;;;;;;;14661:162;;;14762:6;14769:1;14762:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;14724:16;14741:17;14724:35;;;;;;;;;;;;;;;;;:47;;;;;;;;;;;14789:19;;;;;;;14661:162;14642:3;;;;;;;14606:227;;;14301:538;;;;;:::o;501:29::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9222:1531::-;9414:23;9555:17;9595:20;9625:9;9644;9440:53;9459:2;9463:5;9470:4;9476:9;9487:5;;9440:18;:53::i;:::-;9414:79;;9583:1;9555:30;;9656:1;9644:13;;9718:1;9714:5;;9709:651;9725:9;;;;;;;;;;;9721:13;;:1;:13;9709:651;;;9860:1;9843:7;:14;:18;:37;;;;;9870:7;9878:1;9870:10;;;;;;;;;;;;;;;;;;9865:1;:15;9843:37;9839:381;;;9922:7;9930:1;9922:10;;;;;;;;;;;;;;;;;;9908:24;;:10;:24;;;:68;;;;9936:11;:23;9948:7;9956:1;9948:10;;;;;;;;;;;;;;;;;;9936:23;;;;;;;;;;;;;;;:40;9960:15;9936:40;;;;;;;;;;;;;;;;;;;;;;;;;;;9908:68;9900:77;;;;;;;;10010:7;10018:1;10010:10;;;;;;;;;;;;;;;;;;9995:25;;10043:1;10038:6;;;;9839:381;;;10170:50;10180:15;10197:1;10201;10199;:3;10197:6;;;;;;;;;;;;;;;;;;10205:1;10209;10207;:3;10205:6;;;;;;;;;;;;;;;;;;10213:1;10217;10215;:3;10213:6;;;;;;;;;;;;;;;;;;10170:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10155:65;;9839:381;10242:7;:21;10250:12;10242:21;;;;;;;;;;;;;;;;;;;;;;;;;10234:30;;;;;;;;10301:9;10286:24;;:12;:24;;;10278:33;;;;;;;;10337:12;10325:24;;9736:3;;;;;;;9709:651;;;10436:1;10419:7;:14;:18;10415:216;;;10462:1;10458:5;;10453:168;10469:7;:14;10465:1;:18;10453:168;;;10526:7;10534:1;10526:10;;;;;;;;;;;;;;;;;;10512:24;;:10;:24;;;;10508:98;;;10601:5;10558:11;:23;10570:7;10578:1;10570:10;;;;;;;;;;;;;;;;;;10558:23;;;;;;;;;;;;;;;:40;10582:15;10558:40;;;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;10508:98;10485:3;;;;;;;10453:168;;;10415:216;10700:1;10691:5;;:10;;;;;;;;;;;10711:35;10719:2;10723:5;10730:4;10736:9;10711:7;:35::i;:::-;9222:1531;;;;;;;;;;;;;;:::o;729:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;344:40::-;;;;;;;;;;;;;;;;;;;;:::o;12356:225::-;12443:12;12563:1;12560;12553:4;12547:5;12540:4;12534;12530:3;12526:2;12522:1;12518:3;12505:12;12494:71;;12480:95;;;;:::o;11648:465::-;11973:19;11773:14;11760:27;;;;;;;;:9;:27;;;;;;;;;11756:351;;;11809:28;11821:2;11825:5;11832:4;11809:11;:28::i;:::-;11801:37;;;;;;;;11756:351;;;11870:22;11857:35;;;;;;;;:9;:35;;;;;;;;;11853:254;;;11914:29;11934:2;11938:4;11914:19;:29::i;:::-;11906:38;;;;;;;;11853:254;;;11995:19;12009:4;11995:13;:19::i;:::-;11973:41;;12051:1;12036:11;:16;;;;12028:25;;;;;;;;12067:29;12084:11;12067:29;;;;;;;;;;;;;;;;;;;;;;11853:254;11756:351;11648:465;;;;;:::o;12119:231::-;12213:12;12332:1;12329;12322:4;12316:5;12309:4;12303;12299:3;12292:5;12288:2;12284:1;12280:3;12275:4;12264:70;;12250:94;;;;;:::o;12587:197::-;12656:19;12762:4;12756:5;12749:4;12743;12739:3;12736:1;12729:6;12714:54;;12700:78;;;:::o;218:14623::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o",
"source": "pragma solidity 0.4.19;\nimport \"./Extension.sol\";\n\n\n/// @title Gnosis Safe - A multisignature wallet with support for confirmations using signed messages based on ERC191.\n/// @author Stefan George - <stefan@gnosis.pm>\ncontract GnosisSafe {\n\n event ContractCreation(address newContract);\n\n string public constant NAME = \"Gnosis Safe\";\n string public constant VERSION = \"0.0.1\";\n\n GnosisSafe masterCopy;\n uint8 public threshold;\n uint256 public nonce;\n address[] public owners;\n Extension[] public extensions;\n\n // isOwner mapping allows to check if an address is a Safe owner.\n mapping (address => bool) public isOwner;\n // isExtension mapping allows to check if an extension was whitelisted.\n mapping (address => bool) public isExtension;\n // isConfirmed mapping allows to check if a transaction was confirmed by an owner via a confirm transaction.\n mapping (address => mapping (bytes32 => bool)) public isConfirmed;\n\n enum Operation {\n Call,\n DelegateCall,\n Create\n }\n\n modifier onlyWallet() {\n require(msg.sender == address(this));\n _;\n }\n\n /// @dev Fallback function accepts Ether transactions.\n function ()\n external\n payable\n {\n\n }\n\n /// @dev Constructor function triggers setup function.\n /// @param _owners List of Safe owners.\n /// @param _threshold Number of required confirmations for a Safe transaction.\n /// @param to Contract address for optional delegate call.\n /// @param data Data payload for optional delegate call.\n function GnosisSafe(address[] _owners, uint8 _threshold, address to, bytes data)\n public\n {\n setup(_owners, _threshold, to, data);\n }\n\n /// @dev Setup function sets initial storage of contract.\n /// @param _owners List of Safe owners.\n /// @param _threshold Number of required confirmations for a Safe transaction.\n /// @param to Contract address for optional delegate call.\n /// @param data Data payload for optional delegate call.\n function setup(address[] _owners, uint8 _threshold, address to, bytes data)\n public\n {\n // Threshold can only be 0 at initialization.\n // Check ensures that setup function can only be called once.\n require(threshold == 0);\n // Validate that threshold is smaller than numbr of added owners.\n require(_threshold <= _owners.length);\n // There has to be at least one Safe owner.\n require(_threshold >= 1);\n // Initializing Safe owners.\n for (uint256 i = 0; i < _owners.length; i++) {\n // Owner address cannot be null.\n require(_owners[i] != 0);\n // No duplicate owners allowed.\n require(!isOwner[_owners[i]]);\n isOwner[_owners[i]] = true;\n }\n owners = _owners;\n threshold = _threshold;\n // If a to address is set, an additional delegate call is executed.\n // This call allows further contract setup steps, like adding an extension.\n if (to != 0)\n // Setup has to complete successfully or transaction fails.\n require(executeDelegateCall(to, data));\n }\n\n /// @dev Allows to upgrade the contract. This can only be done via a Safe transaction.\n /// @param _masterCopy New contract address.\n function changeMasterCopy(GnosisSafe _masterCopy)\n public\n onlyWallet\n {\n // Master copy address cannot be null.\n require(address(_masterCopy) != 0);\n masterCopy = _masterCopy;\n }\n\n /// @dev Allows to add a new owner to the Safe and update the threshold at the same time.\n /// This can only be done via a Safe transaction.\n /// @param owner New owner address.\n /// @param _threshold New threshold.\n function addOwner(address owner, uint8 _threshold)\n public\n onlyWallet\n {\n // Owner address cannot be null.\n require(owner != 0);\n // No duplicate owners allowed.\n require(!isOwner[owner]);\n owners.push(owner);\n isOwner[owner] = true;\n // Change threshold if threshold was changed.\n if (threshold != _threshold)\n changeThreshold(_threshold);\n }\n\n /// @dev Allows to remove an owner from the Safe and update the threshold at the same time.\n /// This can only be done via a Safe transaction.\n /// @param ownerIndex Array index position of owner address to be removed.\n /// @param owner Owner address to be removed.\n /// @param _threshold New threshold.\n function removeOwner(uint256 ownerIndex, address owner, uint8 _threshold)\n public\n onlyWallet\n {\n // Only allow to remove an owner, if threshold can still be reached.\n require(owners.length - 1 >= _threshold);\n // Validate owner address corresponds to owner index.\n require(owners[ownerIndex] == owner);\n isOwner[owner] = false;\n owners[ownerIndex] = owners[owners.length - 1];\n owners.length--;\n // Change threshold if threshold was changed.\n if (threshold != _threshold)\n changeThreshold(_threshold);\n }\n\n /// @dev Allows to replace an owner from the Safe with another address.\n /// This can only be done via a Safe transaction.\n /// @param oldOwnerIndex Array index position of owner address to be replaced.\n /// @param oldOwner Owner address to be replaced.\n /// @param newOwner New owner address.\n function replaceOwner(uint256 oldOwnerIndex, address oldOwner, address newOwner)\n public\n onlyWallet\n {\n // Owner address cannot be null.\n require(newOwner != 0);\n // No duplicate owners allowed.\n require(!isOwner[newOwner]);\n // Validate owner address corresponds to owner index.\n require(owners[oldOwnerIndex] == oldOwner);\n isOwner[oldOwner] = false;\n isOwner[newOwner] = true;\n owners[oldOwnerIndex] = newOwner;\n }\n\n /// @dev Allows to update the number of required confirmations by Safe owners.\n /// This can only be done via a Safe transaction.\n /// @param _threshold New threshold.\n function changeThreshold(uint8 _threshold)\n public\n onlyWallet\n {\n // Validate that threshold is smaller than numbr of owners.\n require(_threshold <= owners.length);\n // There has to be at least one Safe owner.\n require(_threshold >= 1);\n threshold = _threshold;\n }\n\n /// @dev Allows to add an extension to the whitelist.\n /// This can only be done via a Safe transaction.\n /// @param extension Extension to be whitelisted.\n function addExtension(Extension extension)\n public\n onlyWallet\n {\n // Extension address cannot be null.\n require(address(extension) != 0);\n // Extension cannot be added twice.\n require(!isExtension[extension]);\n extensions.push(extension);\n isExtension[extension] = true;\n }\n\n /// @dev Allows to remove an extension from the whitelist.\n /// This can only be done via a Safe transaction.\n /// @param extensionIndex Array index position of extension to be removed from whitelist.\n /// @param extension Extension to be removed.\n function removeExtension(uint256 extensionIndex, Extension extension)\n public\n onlyWallet\n {\n // Validate extension address corresponds to extension index.\n require(extensions[extensionIndex] == extension);\n isExtension[extension] = false;\n extensions[extensionIndex] = extensions[extensions.length - 1];\n extensions.length--;\n }\n\n /// @dev Allows to confirm a Safe transaction with a regular transaction.\n /// This can only be done from an owner address.\n /// @param to Destination address.\n /// @param value Ether value.\n /// @param data Data payload.\n /// @param operation Operation type.\n /// @param _nonce Transaction nonce.\n function confirmTransaction(address to, uint256 value, bytes data, Operation operation, uint256 _nonce)\n public\n {\n // Only Safe owners are allowed to confirm Safe transactions.\n require(isOwner[msg.sender]);\n bytes32 transactionHash = getTransactionHash(to, value, data, operation, nonce);\n // It is only possible to confirm a transaction once.\n require(!isConfirmed[msg.sender][transactionHash]);\n isConfirmed[msg.sender][transactionHash] = true;\n }\n\n /// @dev Allows to execute a Safe transaction confirmed by required number of owners.\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @param v Array of signature V values sorted by owner addresses.\n /// @param r Array of signature R values sorted by owner addresses.\n /// @param s Array of signature S values sorted by owner addresses.\n /// @param _owners List of Safe owners confirming via regular transactions sorted by owner addresses.\n /// @param indices List of indeces of Safe owners confirming via regular transactions.\n function executeTransaction(address to, uint256 value, bytes data, Operation operation, uint8[] v, bytes32[] r, bytes32[] s, address[] _owners, uint256[] indices)\n public\n {\n bytes32 transactionHash = getTransactionHash(to, value, data, operation, nonce);\n // There cannot be an owner with address 0.\n address lastOwner = address(0);\n address currentOwner;\n uint256 i;\n uint256 j = 0;\n // Validate threshold is reached.\n for (i = 0; i < threshold; i++) {\n // Check confirmations done with regular transactions or by msg.sender.\n if (indices.length > j && i == indices[j]) {\n require(msg.sender == _owners[j] || isConfirmed[_owners[j]][transactionHash]);\n currentOwner = _owners[j];\n j += 1;\n }\n // Check confirmations done with signed messages.\n else\n currentOwner = ecrecover(transactionHash, v[i-j], r[i-j], s[i-j]);\n require(isOwner[currentOwner]);\n require(currentOwner > lastOwner);\n lastOwner = currentOwner;\n }\n // Delete storage to receive refunds.\n if (_owners.length > 0) {\n for (i = 0; i < _owners.length; i++) {\n if (msg.sender != _owners[i])\n isConfirmed[_owners[i]][transactionHash] = false;\n }\n }\n // Increase nonce and execute transaction.\n nonce += 1;\n execute(to, value, data, operation);\n }\n\n /// @dev Allows to execute a Safe transaction via an extension without any further confirmations.\n /// @param to Destination address of extension transaction.\n /// @param value Ether value of extension transaction.\n /// @param data Data payload of extension transaction.\n /// @param operation Operation type of extension transaction.\n /// @param extension Extension address of extension transaction.\n function executeExtension(address to, uint256 value, bytes data, Operation operation, Extension extension)\n public\n {\n // Only whitelisted extensions are allowed.\n require(isExtension[extension]);\n // Extension has to confirm transaction.\n require(extension.isExecutable(msg.sender, to, value, data, operation));\n // Exectute transaction without further confirmations.\n execute(to, value, data, operation);\n }\n\n function execute(address to, uint256 value, bytes data, Operation operation)\n internal\n {\n if (operation == Operation.Call)\n require(executeCall(to, value, data));\n else if (operation == Operation.DelegateCall)\n require(executeDelegateCall(to, data));\n else {\n address newContract = executeCreate(data);\n require(newContract != 0);\n ContractCreation(newContract);\n }\n }\n\n function executeCall(address to, uint256 value, bytes data)\n internal\n returns (bool success)\n {\n assembly {\n success := call(not(0), to, value, add(data, 0x20), mload(data), 0, 0)\n }\n }\n\n function executeDelegateCall(address to, bytes data)\n internal\n returns (bool success)\n {\n assembly {\n success := delegatecall(not(0), to, add(data, 0x20), mload(data), 0, 0)\n }\n }\n\n function executeCreate(bytes data)\n internal\n returns (address newContract)\n {\n assembly {\n newContract := create(0, add(data, 0x20), mload(data))\n }\n }\n\n /// @dev Returns transactions hash to be signed by owners.\n /// @param to Destination address.\n /// @param value Ether value.\n /// @param data Data payload.\n /// @param operation Operation type.\n /// @param _nonce Transaction nonce.\n /// @return Transaction hash.\n function getTransactionHash(address to, uint256 value, bytes data, Operation operation, uint256 _nonce)\n public\n view\n returns (bytes32)\n {\n return keccak256(byte(0x19), this, to, value, data, operation, _nonce);\n }\n\n /// @dev Returns array of owners.\n /// @return Array of Safe owners.\n function getOwners()\n public\n view\n returns (address[])\n {\n return owners;\n }\n\n /// @dev Returns array of extensions.\n /// @return Array of extensions.\n function getExtensions()\n public\n view\n returns (Extension[])\n {\n return extensions;\n }\n\n /// @dev Returns a the count of owners that have confirmed the given transaction.\n /// @param transactionHash Safe transaction hash.\n function getConfirmationCount(bytes32 transactionHash)\n public\n view\n returns (uint confirmationCount)\n {\n for (uint i = 0; i < owners.length; i++) {\n if (isConfirmed[owners[i]][transactionHash])\n confirmationCount++;\n }\n }\n\n /// @dev Returns a list of owners that have confirmed the given transaction.\n /// @param transactionHash Safe transaction hash.\n function getConfirmingOwners(bytes32 transactionHash)\n public\n view\n returns (address[] confirmingOwners)\n {\n uint confirmationCount = getConfirmationCount(transactionHash);\n confirmingOwners = new address[](confirmationCount);\n confirmationCount = 0;\n for (uint i = 0; i < owners.length; i++) {\n if (isConfirmed[owners[i]][transactionHash]) {\n confirmingOwners[confirmationCount] = owners[i];\n confirmationCount++;\n }\n }\n }\n}\n",
"sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol",
"ast": {
"absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol",
"exportedSymbols": {
"GnosisSafe": [
963
]
},
"id": 964,
"nodeType": "SourceUnit",
"nodes": [
{
"id": 20,
"literals": [
"solidity",
"0.4",
".19"
],
"nodeType": "PragmaDirective",
"src": "0:23:1"
},
{
"absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Extension.sol",
"file": "./Extension.sol",
"id": 21,
"nodeType": "ImportDirective",
"scope": 964,
"sourceUnit": 19,
"src": "24:25:1",
"symbolAliases": [],
"unitAlias": ""
},
{
"baseContracts": [],
"contractDependencies": [],
"contractKind": "contract",
"documentation": "@title Gnosis Safe - A multisignature wallet with support for confirmations using signed messages based on ERC191.\n @author Stefan George - <stefan@gnosis.pm>",
"fullyImplemented": true,
"id": 963,
"linearizedBaseContracts": [
963
],
"name": "GnosisSafe",
"nodeType": "ContractDefinition",
"nodes": [
{
"anonymous": false,
"id": 25,
"name": "ContractCreation",
"nodeType": "EventDefinition",
"parameters": {
"id": 24,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 23,
"indexed": false,
"name": "newContract",
"nodeType": "VariableDeclaration",
"scope": 25,
"src": "268:19:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 22,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "268:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "267:21:1"
},
"src": "245:44:1"
},
{
"constant": true,
"id": 28,
"name": "NAME",
"nodeType": "VariableDeclaration",
"scope": 963,
"src": "295:43:1",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_string_memory",
"typeString": "string memory"
},
"typeName": {
"id": 26,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "295:6:1",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string storage pointer"
}
},
"value": {
"argumentTypes": null,
"hexValue": "476e6f7369732053616665",
"id": 27,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "325:13:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_72ec6775392f699e8ffd72b7c600556d49bdc746bf22bce93d3ae6019cdaff63",
"typeString": "literal_string \"Gnosis Safe\""
},
"value": "Gnosis Safe"
},
"visibility": "public"
},
{
"constant": true,
"id": 31,
"name": "VERSION",
"nodeType": "VariableDeclaration",
"scope": 963,
"src": "344:40:1",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_string_memory",
"typeString": "string memory"
},
"typeName": {
"id": 29,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "344:6:1",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string storage pointer"
}
},
"value": {
"argumentTypes": null,
"hexValue": "302e302e31",
"id": 30,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "377:7:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885",
"typeString": "literal_string \"0.0.1\""
},
"value": "0.0.1"
},
"visibility": "public"
},
{
"constant": false,
"id": 33,
"name": "masterCopy",
"nodeType": "VariableDeclaration",
"scope": 963,
"src": "391:21:1",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
},
"typeName": {
"contractScope": null,
"id": 32,
"name": "GnosisSafe",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 963,
"src": "391:10:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 35,
"name": "threshold",
"nodeType": "VariableDeclaration",
"scope": 963,
"src": "418:22:1",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 34,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "418:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"id": 37,
"name": "nonce",
"nodeType": "VariableDeclaration",
"scope": 963,
"src": "446:20:1",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 36,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "446:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"id": 40,
"name": "owners",
"nodeType": "VariableDeclaration",
"scope": 963,
"src": "472:23:1",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
},
"typeName": {
"baseType": {
"id": 38,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "472:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 39,
"length": null,
"nodeType": "ArrayTypeName",
"src": "472:9:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[] storage pointer"
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"id": 43,
"name": "extensions",
"nodeType": "VariableDeclaration",
"scope": 963,
"src": "501:29:1",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage",
"typeString": "contract Extension[] storage ref"
},
"typeName": {
"baseType": {
"contractScope": null,
"id": 41,
"name": "Extension",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 18,
"src": "501:9:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Extension_$18",
"typeString": "contract Extension"
}
},
"id": 42,
"length": null,
"nodeType": "ArrayTypeName",
"src": "501:11:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage_ptr",
"typeString": "contract Extension[] storage pointer"
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"id": 47,
"name": "isOwner",
"nodeType": "VariableDeclaration",
"scope": 963,
"src": "607:40:1",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
},
"typeName": {
"id": 46,
"keyType": {
"id": 44,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "616:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "607:25:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
},
"valueType": {
"id": 45,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "627:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"id": 51,
"name": "isExtension",
"nodeType": "VariableDeclaration",
"scope": 963,
"src": "729:44:1",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
},
"typeName": {
"id": 50,
"keyType": {
"id": 48,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "738:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "729:25:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
},
"valueType": {
"id": 49,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "749:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"id": 57,
"name": "isConfirmed",
"nodeType": "VariableDeclaration",
"scope": 963,
"src": "892:65:1",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$",
"typeString": "mapping(address => mapping(bytes32 => bool))"
},
"typeName": {
"id": 56,
"keyType": {
"id": 52,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "901:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "892:46:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$",
"typeString": "mapping(address => mapping(bytes32 => bool))"
},
"valueType": {
"id": 55,
"keyType": {
"id": 53,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "921:7:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "Mapping",
"src": "912:25:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
"typeString": "mapping(bytes32 => bool)"
},
"valueType": {
"id": 54,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "932:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
}
},
"value": null,
"visibility": "public"
},
{
"canonicalName": "GnosisSafe.Operation",
"id": 61,
"members": [
{
"id": 58,
"name": "Call",
"nodeType": "EnumValue",
"src": "989:4:1"
},
{
"id": 59,
"name": "DelegateCall",
"nodeType": "EnumValue",
"src": "1003:12:1"
},
{
"id": 60,
"name": "Create",
"nodeType": "EnumValue",
"src": "1025:6:1"
}
],
"name": "Operation",
"nodeType": "EnumDefinition",
"src": "964:73:1"
},
{
"body": {
"id": 73,
"nodeType": "Block",
"src": "1065:64:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 69,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 64,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2089,
"src": "1083:3:1",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 65,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "1083:10:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 67,
"name": "this",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2100,
"src": "1105:4:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
}
],
"id": 66,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "1097:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": "address"
},
"id": 68,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1097:13:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "1083:27:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 63,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "1075:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 70,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1075:36:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 71,
"nodeType": "ExpressionStatement",
"src": "1075:36:1"
},
{
"id": 72,
"nodeType": "PlaceholderStatement",
"src": "1121:1:1"
}
]
},
"id": 74,
"name": "onlyWallet",
"nodeType": "ModifierDefinition",
"parameters": {
"id": 62,
"nodeType": "ParameterList",
"parameters": [],
"src": "1062:2:1"
},
"src": "1043:86:1",
"visibility": "internal"
},
{
"body": {
"id": 77,
"nodeType": "Block",
"src": "1243:8:1",
"statements": []
},
"id": 78,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 75,
"nodeType": "ParameterList",
"parameters": [],
"src": "1203:2:1"
},
"payable": true,
"returnParameters": {
"id": 76,
"nodeType": "ParameterList",
"parameters": [],
"src": "1243:0:1"
},
"scope": 963,
"src": "1194:57:1",
"stateMutability": "payable",
"superFunction": null,
"visibility": "external"
},
{
"body": {
"id": 97,
"nodeType": "Block",
"src": "1667:53:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 91,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 81,
"src": "1683:7:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
{
"argumentTypes": null,
"id": 92,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 83,
"src": "1692:10:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
{
"argumentTypes": null,
"id": 93,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 85,
"src": "1704:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 94,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 87,
"src": "1708:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
},
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 90,
"name": "setup",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 187,
"src": "1677:5:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_uint8_$_t_address_$_t_bytes_memory_ptr_$returns$__$",
"typeString": "function (address[] memory,uint8,address,bytes memory)"
}
},
"id": 95,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1677:36:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 96,
"nodeType": "ExpressionStatement",
"src": "1677:36:1"
}
]
},
"id": 98,
"implemented": true,
"isConstructor": true,
"isDeclaredConst": false,
"modifiers": [],
"name": "GnosisSafe",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 88,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 81,
"name": "_owners",
"nodeType": "VariableDeclaration",
"scope": 98,
"src": "1587:17:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
},
"typeName": {
"baseType": {
"id": 79,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1587:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 80,
"length": null,
"nodeType": "ArrayTypeName",
"src": "1587:9:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[] storage pointer"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 83,
"name": "_threshold",
"nodeType": "VariableDeclaration",
"scope": 98,
"src": "1606:16:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 82,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "1606:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 85,
"name": "to",
"nodeType": "VariableDeclaration",
"scope": 98,
"src": "1624:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 84,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1624:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 87,
"name": "data",
"nodeType": "VariableDeclaration",
"scope": 98,
"src": "1636:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
"typeName": {
"id": 86,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "1636:5:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes storage pointer"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1586:61:1"
},
"payable": false,
"returnParameters": {
"id": 89,
"nodeType": "ParameterList",
"parameters": [],
"src": "1667:0:1"
},
"scope": 963,
"src": "1567:153:1",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 186,
"nodeType": "Block",
"src": "2134:1046:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 113,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 111,
"name": "threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 35,
"src": "2276:9:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 112,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2289:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "2276:14:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 110,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "2268:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 114,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2268:23:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 115,
"nodeType": "ExpressionStatement",
"src": "2268:23:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 120,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 117,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 103,
"src": "2383:10:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "<=",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 118,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 101,
"src": "2397:7:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 119,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "2397:14:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2383:28:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 116,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "2375:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 121,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2375:37:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 122,
"nodeType": "ExpressionStatement",
"src": "2375:37:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 126,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 124,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 103,
"src": "2482:10:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": ">=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 125,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2496:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "2482:15:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 123,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "2474:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 127,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2474:24:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 128,
"nodeType": "ExpressionStatement",
"src": "2474:24:1"
},
{
"body": {
"id": 165,
"nodeType": "Block",
"src": "2590:221:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 145,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 141,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 101,
"src": "2657:7:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 143,
"indexExpression": {
"argumentTypes": null,
"id": 142,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 130,
"src": "2665:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2657:10:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 144,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2671:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "2657:15:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 140,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "2649:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 146,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2649:24:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 147,
"nodeType": "ExpressionStatement",
"src": "2649:24:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 154,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
"src": "2739:20:1",
"subExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 149,
"name": "isOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 47,
"src": "2740:7:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 153,
"indexExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 150,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 101,
"src": "2748:7:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 152,
"indexExpression": {
"argumentTypes": null,
"id": 151,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 130,
"src": "2756:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2748:10:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2740:19:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 148,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "2731:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 155,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2731:29:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 156,
"nodeType": "ExpressionStatement",
"src": "2731:29:1"
},
{
"expression": {
"argumentTypes": null,
"id": 163,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 157,
"name": "isOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 47,
"src": "2774:7:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 161,
"indexExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 158,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 101,
"src": "2782:7:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 160,
"indexExpression": {
"argumentTypes": null,
"id": 159,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 130,
"src": "2790:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2782:10:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "2774:19:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 162,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2796:4:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"src": "2774:26:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 164,
"nodeType": "ExpressionStatement",
"src": "2774:26:1"
}
]
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 136,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 133,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 130,
"src": "2565:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 134,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 101,
"src": "2569:7:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 135,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "2569:14:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2565:18:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 166,
"initializationExpression": {
"assignments": [
130
],
"declarations": [
{
"constant": false,
"id": 130,
"name": "i",
"nodeType": "VariableDeclaration",
"scope": 187,
"src": "2550:9:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 129,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2550:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 132,
"initialValue": {
"argumentTypes": null,
"hexValue": "30",
"id": 131,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2562:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"nodeType": "VariableDeclarationStatement",
"src": "2550:13:1"
},
"loopExpression": {
"expression": {
"argumentTypes": null,
"id": 138,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "2585:3:1",
"subExpression": {
"argumentTypes": null,
"id": 137,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 130,
"src": "2585:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 139,
"nodeType": "ExpressionStatement",
"src": "2585:3:1"
},
"nodeType": "ForStatement",
"src": "2545:266:1"
},
{
"expression": {
"argumentTypes": null,
"id": 169,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 167,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 40,
"src": "2820:6:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 168,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 101,
"src": "2829:7:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"src": "2820:16:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 170,
"nodeType": "ExpressionStatement",
"src": "2820:16:1"
},
{
"expression": {
"argumentTypes": null,
"id": 173,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 171,
"name": "threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 35,
"src": "2846:9:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 172,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 103,
"src": "2858:10:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "2846:22:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"id": 174,
"nodeType": "ExpressionStatement",
"src": "2846:22:1"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 177,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 175,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 105,
"src": "3042:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 176,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3048:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "3042:7:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 185,
"nodeType": "IfStatement",
"src": "3038:135:1",
"trueBody": {
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 180,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 105,
"src": "3163:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 181,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 107,
"src": "3167:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 179,
"name": "executeDelegateCall",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 815,
"src": "3143:19:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$",
"typeString": "function (address,bytes memory) returns (bool)"
}
},
"id": 182,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3143:29:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 178,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "3135:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 183,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3135:38:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 184,
"nodeType": "ExpressionStatement",
"src": "3135:38:1"
}
}
]
},
"id": 187,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "setup",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 108,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 101,
"name": "_owners",
"nodeType": "VariableDeclaration",
"scope": 187,
"src": "2054:17:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
},
"typeName": {
"baseType": {
"id": 99,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2054:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 100,
"length": null,
"nodeType": "ArrayTypeName",
"src": "2054:9:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[] storage pointer"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 103,
"name": "_threshold",
"nodeType": "VariableDeclaration",
"scope": 187,
"src": "2073:16:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 102,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "2073:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 105,
"name": "to",
"nodeType": "VariableDeclaration",
"scope": 187,
"src": "2091:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 104,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2091:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 107,
"name": "data",
"nodeType": "VariableDeclaration",
"scope": 187,
"src": "2103:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
"typeName": {
"id": 106,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "2103:5:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes storage pointer"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2053:61:1"
},
"payable": false,
"returnParameters": {
"id": 109,
"nodeType": "ParameterList",
"parameters": [],
"src": "2134:0:1"
},
"scope": 963,
"src": "2039:1141:1",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 206,
"nodeType": "Block",
"src": "3414:132:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 199,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 196,
"name": "_masterCopy",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 189,
"src": "3487:11:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
}
],
"id": 195,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "3479:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": "address"
},
"id": 197,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3479:20:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 198,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3503:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "3479:25:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 194,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "3471:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 200,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3471:34:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 201,
"nodeType": "ExpressionStatement",
"src": "3471:34:1"
},
{
"expression": {
"argumentTypes": null,
"id": 204,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 202,
"name": "masterCopy",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 33,
"src": "3515:10:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 203,
"name": "_masterCopy",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 189,
"src": "3528:11:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
}
},
"src": "3515:24:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
}
},
"id": 205,
"nodeType": "ExpressionStatement",
"src": "3515:24:1"
}
]
},
"id": 207,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [
{
"arguments": [],
"id": 192,
"modifierName": {
"argumentTypes": null,
"id": 191,
"name": "onlyWallet",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 74,
"src": "3399:10:1",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "3399:10:1"
}
],
"name": "changeMasterCopy",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 190,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 189,
"name": "_masterCopy",
"nodeType": "VariableDeclaration",
"scope": 207,
"src": "3352:22:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
},
"typeName": {
"contractScope": null,
"id": 188,
"name": "GnosisSafe",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 963,
"src": "3352:10:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "3351:24:1"
},
"payable": false,
"returnParameters": {
"id": 193,
"nodeType": "ParameterList",
"parameters": [],
"src": "3414:0:1"
},
"scope": 963,
"src": "3326:220:1",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 249,
"nodeType": "Block",
"src": "3875:342:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 219,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 217,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 209,
"src": "3934:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 218,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3943:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "3934:10:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 216,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "3926:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 220,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3926:19:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 221,
"nodeType": "ExpressionStatement",
"src": "3926:19:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 226,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
"src": "4003:15:1",
"subExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 223,
"name": "isOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 47,
"src": "4004:7:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 225,
"indexExpression": {
"argumentTypes": null,
"id": 224,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 209,
"src": "4012:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4004:14:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 222,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "3995:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 227,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3995:24:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 228,
"nodeType": "ExpressionStatement",
"src": "3995:24:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 232,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 209,
"src": "4041:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"argumentTypes": null,
"id": 229,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 40,
"src": "4029:6:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 231,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "push",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "4029:11:1",
"typeDescriptions": {
"typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$",
"typeString": "function (address) returns (uint256)"
}
},
"id": 233,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4029:18:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 234,
"nodeType": "ExpressionStatement",
"src": "4029:18:1"
},
{
"expression": {
"argumentTypes": null,
"id": 239,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 235,
"name": "isOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 47,
"src": "4057:7:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 237,
"indexExpression": {
"argumentTypes": null,
"id": 236,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 209,
"src": "4065:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "4057:14:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 238,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4074:4:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"src": "4057:21:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 240,
"nodeType": "ExpressionStatement",
"src": "4057:21:1"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 243,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 241,
"name": "threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 35,
"src": "4146:9:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"id": 242,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 211,
"src": "4159:10:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "4146:23:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 248,
"nodeType": "IfStatement",
"src": "4142:68:1",
"trueBody": {
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 245,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 211,
"src": "4199:10:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
],
"id": 244,
"name": "changeThreshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 385,
"src": "4183:15:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$",
"typeString": "function (uint8)"
}
},
"id": 246,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4183:27:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 247,
"nodeType": "ExpressionStatement",
"src": "4183:27:1"
}
}
]
},
"id": 250,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [
{
"arguments": [],
"id": 214,
"modifierName": {
"argumentTypes": null,
"id": 213,
"name": "onlyWallet",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 74,
"src": "3860:10:1",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "3860:10:1"
}
],
"name": "addOwner",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 212,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 209,
"name": "owner",
"nodeType": "VariableDeclaration",
"scope": 250,
"src": "3804:13:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 208,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3804:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 211,
"name": "_threshold",
"nodeType": "VariableDeclaration",
"scope": 250,
"src": "3819:16:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 210,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "3819:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "3803:33:1"
},
"payable": false,
"returnParameters": {
"id": 215,
"nodeType": "ParameterList",
"parameters": [],
"src": "3875:0:1"
},
"scope": 963,
"src": "3786:431:1",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 308,
"nodeType": "Block",
"src": "4660:487:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 267,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 265,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 262,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 40,
"src": "4755:6:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 263,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "4755:13:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 264,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4771:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "4755:17:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">=",
"rightExpression": {
"argumentTypes": null,
"id": 266,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 256,
"src": "4776:10:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "4755:31:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 261,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "4747:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 268,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4747:40:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 269,
"nodeType": "ExpressionStatement",
"src": "4747:40:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 275,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 271,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 40,
"src": "4867:6:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 273,
"indexExpression": {
"argumentTypes": null,
"id": 272,
"name": "ownerIndex",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 252,
"src": "4874:10:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4867:18:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"id": 274,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 254,
"src": "4889:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "4867:27:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 270,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "4859:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 276,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4859:36:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 277,
"nodeType": "ExpressionStatement",
"src": "4859:36:1"
},
{
"expression": {
"argumentTypes": null,
"id": 282,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 278,
"name": "isOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 47,
"src": "4905:7:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 280,
"indexExpression": {
"argumentTypes": null,
"id": 279,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 254,
"src": "4913:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "4905:14:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "66616c7365",
"id": 281,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4922:5:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "false"
},
"src": "4905:22:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 283,
"nodeType": "ExpressionStatement",
"src": "4905:22:1"
},
{
"expression": {
"argumentTypes": null,
"id": 293,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 284,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 40,
"src": "4937:6:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 286,
"indexExpression": {
"argumentTypes": null,
"id": 285,
"name": "ownerIndex",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 252,
"src": "4944:10:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "4937:18:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 287,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 40,
"src": "4958:6:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 292,
"indexExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 291,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 288,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 40,
"src": "4965:6:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 289,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "4965:13:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 290,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4981:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "4965:17:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4958:25:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "4937:46:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 294,
"nodeType": "ExpressionStatement",
"src": "4937:46:1"
},
{
"expression": {
"argumentTypes": null,
"id": 298,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "--",
"prefix": false,
"src": "4993:15:1",
"subExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 295,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 40,
"src": "4993:6:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 297,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "4993:13:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 299,
"nodeType": "ExpressionStatement",
"src": "4993:15:1"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 302,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 300,
"name": "threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 35,
"src": "5076:9:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"id": 301,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 256,
"src": "5089:10:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "5076:23:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 307,
"nodeType": "IfStatement",
"src": "5072:68:1",
"trueBody": {
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 304,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 256,
"src": "5129:10:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
],
"id": 303,
"name": "changeThreshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 385,
"src": "5113:15:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$",
"typeString": "function (uint8)"
}
},
"id": 305,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5113:27:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 306,
"nodeType": "ExpressionStatement",
"src": "5113:27:1"
}
}
]
},
"id": 309,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [
{
"arguments": [],
"id": 259,
"modifierName": {
"argumentTypes": null,
"id": 258,
"name": "onlyWallet",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 74,
"src": "4645:10:1",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "4645:10:1"
}
],
"name": "removeOwner",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 257,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 252,
"name": "ownerIndex",
"nodeType": "VariableDeclaration",
"scope": 309,
"src": "4569:18:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 251,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4569:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 254,
"name": "owner",
"nodeType": "VariableDeclaration",
"scope": 309,
"src": "4589:13:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 253,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4589:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 256,
"name": "_threshold",
"nodeType": "VariableDeclaration",
"scope": 309,
"src": "4604:16:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 255,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "4604:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4568:53:1"
},
"payable": false,
"returnParameters": {
"id": 260,
"nodeType": "ParameterList",
"parameters": [],
"src": "4660:0:1"
},
"scope": 963,
"src": "4548:599:1",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 359,
"nodeType": "Block",
"src": "5587:383:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 323,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 321,
"name": "newOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 315,
"src": "5646:8:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 322,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5658:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "5646:13:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 320,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "5638:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 324,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5638:22:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 325,
"nodeType": "ExpressionStatement",
"src": "5638:22:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 330,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
"src": "5718:18:1",
"subExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 327,
"name": "isOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 47,
"src": "5719:7:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 329,
"indexExpression": {
"argumentTypes": null,
"id": 328,
"name": "newOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 315,
"src": "5727:8:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "5719:17:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 326,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "5710:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 331,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5710:27:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 332,
"nodeType": "ExpressionStatement",
"src": "5710:27:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 338,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 334,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 40,
"src": "5817:6:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 336,
"indexExpression": {
"argumentTypes": null,
"id": 335,
"name": "oldOwnerIndex",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 311,
"src": "5824:13:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "5817:21:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"id": 337,
"name": "oldOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 313,
"src": "5842:8:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "5817:33:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 333,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "5809:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 339,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5809:42:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 340,
"nodeType": "ExpressionStatement",
"src": "5809:42:1"
},
{
"expression": {
"argumentTypes": null,
"id": 345,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 341,
"name": "isOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 47,
"src": "5861:7:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 343,
"indexExpression": {
"argumentTypes": null,
"id": 342,
"name": "oldOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 313,
"src": "5869:8:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "5861:17:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "66616c7365",
"id": 344,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5881:5:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "false"
},
"src": "5861:25:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 346,
"nodeType": "ExpressionStatement",
"src": "5861:25:1"
},
{
"expression": {
"argumentTypes": null,
"id": 351,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 347,
"name": "isOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 47,
"src": "5896:7:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 349,
"indexExpression": {
"argumentTypes": null,
"id": 348,
"name": "newOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 315,
"src": "5904:8:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "5896:17:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 350,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5917:4:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"src": "5896:25:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 352,
"nodeType": "ExpressionStatement",
"src": "5896:25:1"
},
{
"expression": {
"argumentTypes": null,
"id": 357,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 353,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 40,
"src": "5931:6:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 355,
"indexExpression": {
"argumentTypes": null,
"id": 354,
"name": "oldOwnerIndex",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 311,
"src": "5938:13:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "5931:21:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 356,
"name": "newOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 315,
"src": "5955:8:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "5931:32:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 358,
"nodeType": "ExpressionStatement",
"src": "5931:32:1"
}
]
},
"id": 360,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [
{
"arguments": [],
"id": 318,
"modifierName": {
"argumentTypes": null,
"id": 317,
"name": "onlyWallet",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 74,
"src": "5572:10:1",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "5572:10:1"
}
],
"name": "replaceOwner",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 316,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 311,
"name": "oldOwnerIndex",
"nodeType": "VariableDeclaration",
"scope": 360,
"src": "5490:21:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 310,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5490:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 313,
"name": "oldOwner",
"nodeType": "VariableDeclaration",
"scope": 360,
"src": "5513:16:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 312,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5513:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 315,
"name": "newOwner",
"nodeType": "VariableDeclaration",
"scope": 360,
"src": "5531:16:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 314,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5531:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "5489:59:1"
},
"payable": false,
"returnParameters": {
"id": 319,
"nodeType": "ParameterList",
"parameters": [],
"src": "5587:0:1"
},
"scope": 963,
"src": "5468:502:1",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 384,
"nodeType": "Block",
"src": "6240:239:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 371,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 368,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 362,
"src": "6326:10:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "<=",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 369,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 40,
"src": "6340:6:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 370,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "6340:13:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "6326:27:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 367,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "6318:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 372,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6318:36:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 373,
"nodeType": "ExpressionStatement",
"src": "6318:36:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 377,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 375,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 362,
"src": "6424:10:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": ">=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 376,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "6438:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "6424:15:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 374,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "6416:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 378,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6416:24:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 379,
"nodeType": "ExpressionStatement",
"src": "6416:24:1"
},
{
"expression": {
"argumentTypes": null,
"id": 382,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 380,
"name": "threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 35,
"src": "6450:9:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 381,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 362,
"src": "6462:10:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "6450:22:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"id": 383,
"nodeType": "ExpressionStatement",
"src": "6450:22:1"
}
]
},
"id": 385,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [
{
"arguments": [],
"id": 365,
"modifierName": {
"argumentTypes": null,
"id": 364,
"name": "onlyWallet",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 74,
"src": "6225:10:1",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "6225:10:1"
}
],
"name": "changeThreshold",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 363,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 362,
"name": "_threshold",
"nodeType": "VariableDeclaration",
"scope": 385,
"src": "6184:16:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 361,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "6184:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "6183:18:1"
},
"payable": false,
"returnParameters": {
"id": 366,
"nodeType": "ParameterList",
"parameters": [],
"src": "6240:0:1"
},
"scope": 963,
"src": "6159:320:1",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 419,
"nodeType": "Block",
"src": "6737:255:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 397,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 394,
"name": "extension",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 387,
"src": "6808:9:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Extension_$18",
"typeString": "contract Extension"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_Extension_$18",
"typeString": "contract Extension"
}
],
"id": 393,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "6800:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": "address"
},
"id": 395,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6800:18:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 396,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "6822:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "6800:23:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 392,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "6792:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 398,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6792:32:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 399,
"nodeType": "ExpressionStatement",
"src": "6792:32:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 404,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
"src": "6886:23:1",
"subExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 401,
"name": "isExtension",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 51,
"src": "6887:11:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 403,
"indexExpression": {
"argumentTypes": null,
"id": 402,
"name": "extension",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 387,
"src": "6899:9:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Extension_$18",
"typeString": "contract Extension"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "6887:22:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 400,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "6878:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 405,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6878:32:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 406,
"nodeType": "ExpressionStatement",
"src": "6878:32:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 410,
"name": "extension",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 387,
"src": "6936:9:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Extension_$18",
"typeString": "contract Extension"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_Extension_$18",
"typeString": "contract Extension"
}
],
"expression": {
"argumentTypes": null,
"id": 407,
"name": "extensions",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43,
"src": "6920:10:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage",
"typeString": "contract Extension[] storage ref"
}
},
"id": 409,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "push",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "6920:15:1",
"typeDescriptions": {
"typeIdentifier": "t_function_arraypush_nonpayable$_t_contract$_Extension_$18_$returns$_t_uint256_$",
"typeString": "function (contract Extension) returns (uint256)"
}
},
"id": 411,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6920:26:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 412,
"nodeType": "ExpressionStatement",
"src": "6920:26:1"
},
{
"expression": {
"argumentTypes": null,
"id": 417,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 413,
"name": "isExtension",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 51,
"src": "6956:11:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 415,
"indexExpression": {
"argumentTypes": null,
"id": 414,
"name": "extension",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 387,
"src": "6968:9:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Extension_$18",
"typeString": "contract Extension"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "6956:22:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 416,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "6981:4:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"src": "6956:29:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 418,
"nodeType": "ExpressionStatement",
"src": "6956:29:1"
}
]
},
"id": 420,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [
{
"arguments": [],
"id": 390,
"modifierName": {
"argumentTypes": null,
"id": 389,
"name": "onlyWallet",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 74,
"src": "6722:10:1",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "6722:10:1"
}
],
"name": "addExtension",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 388,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 387,
"name": "extension",
"nodeType": "VariableDeclaration",
"scope": 420,
"src": "6678:19:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Extension_$18",
"typeString": "contract Extension"
},
"typeName": {
"contractScope": null,
"id": 386,
"name": "Extension",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 18,
"src": "6678:9:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Extension_$18",
"typeString": "contract Extension"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "6677:21:1"
},
"payable": false,
"returnParameters": {
"id": 391,
"nodeType": "ParameterList",
"parameters": [],
"src": "6737:0:1"
},
"scope": 963,
"src": "6656:336:1",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 459,
"nodeType": "Block",
"src": "7372:276:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_contract$_Extension_$18",
"typeString": "contract Extension"
},
"id": 434,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 430,
"name": "extensions",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43,
"src": "7460:10:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage",
"typeString": "contract Extension[] storage ref"
}
},
"id": 432,
"indexExpression": {
"argumentTypes": null,
"id": 431,
"name": "extensionIndex",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 422,
"src": "7471:14:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "7460:26:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Extension_$18",
"typeString": "contract Extension"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"id": 433,
"name": "extension",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 424,
"src": "7490:9:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Extension_$18",
"typeString": "contract Extension"
}
},
"src": "7460:39:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 429,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "7452:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 435,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7452:48:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 436,
"nodeType": "ExpressionStatement",
"src": "7452:48:1"
},
{
"expression": {
"argumentTypes": null,
"id": 441,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 437,
"name": "isExtension",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 51,
"src": "7510:11:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 439,
"indexExpression": {
"argumentTypes": null,
"id": 438,
"name": "extension",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 424,
"src": "7522:9:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Extension_$18",
"typeString": "contract Extension"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "7510:22:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "66616c7365",
"id": 440,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "7535:5:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "false"
},
"src": "7510:30:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 442,
"nodeType": "ExpressionStatement",
"src": "7510:30:1"
},
{
"expression": {
"argumentTypes": null,
"id": 452,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 443,
"name": "extensions",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43,
"src": "7550:10:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage",
"typeString": "contract Extension[] storage ref"
}
},
"id": 445,
"indexExpression": {
"argumentTypes": null,
"id": 444,
"name": "extensionIndex",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 422,
"src": "7561:14:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "7550:26:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Extension_$18",
"typeString": "contract Extension"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 446,
"name": "extensions",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43,
"src": "7579:10:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage",
"typeString": "contract Extension[] storage ref"
}
},
"id": 451,
"indexExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 450,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 447,
"name": "extensions",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43,
"src": "7590:10:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage",
"typeString": "contract Extension[] storage ref"
}
},
"id": 448,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "7590:17:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 449,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "7610:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "7590:21:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "7579:33:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Extension_$18",
"typeString": "contract Extension"
}
},
"src": "7550:62:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Extension_$18",
"typeString": "contract Extension"
}
},
"id": 453,
"nodeType": "ExpressionStatement",
"src": "7550:62:1"
},
{
"expression": {
"argumentTypes": null,
"id": 457,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "--",
"prefix": false,
"src": "7622:19:1",
"subExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 454,
"name": "extensions",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43,
"src": "7622:10:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage",
"typeString": "contract Extension[] storage ref"
}
},
"id": 456,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "7622:17:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 458,
"nodeType": "ExpressionStatement",
"src": "7622:19:1"
}
]
},
"id": 460,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [
{
"arguments": [],
"id": 427,
"modifierName": {
"argumentTypes": null,
"id": 426,
"name": "onlyWallet",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 74,
"src": "7357:10:1",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "7357:10:1"
}
],
"name": "removeExtension",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 425,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 422,
"name": "extensionIndex",
"nodeType": "VariableDeclaration",
"scope": 460,
"src": "7289:22:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 421,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "7289:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 424,
"name": "extension",
"nodeType": "VariableDeclaration",
"scope": 460,
"src": "7313:19:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Extension_$18",
"typeString": "contract Extension"
},
"typeName": {
"contractScope": null,
"id": 423,
"name": "Extension",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 18,
"src": "7313:9:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Extension_$18",
"typeString": "contract Extension"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "7288:45:1"
},
"payable": false,
"returnParameters": {
"id": 428,
"nodeType": "ParameterList",
"parameters": [],
"src": "7372:0:1"
},
"scope": 963,
"src": "7264:384:1",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 509,
"nodeType": "Block",
"src": "8102:383:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 474,
"name": "isOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 47,
"src": "8190:7:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 477,
"indexExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 475,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2089,
"src": "8198:3:1",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 476,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "8198:10:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "8190:19:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 473,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "8182:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 478,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8182:28:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 479,
"nodeType": "ExpressionStatement",
"src": "8182:28:1"
},
{
"assignments": [
481
],
"declarations": [
{
"constant": false,
"id": 481,
"name": "transactionHash",
"nodeType": "VariableDeclaration",
"scope": 510,
"src": "8220:23:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 480,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "8220:7:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 489,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 483,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 462,
"src": "8265:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 484,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 464,
"src": "8269:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 485,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 466,
"src": "8276:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
{
"argumentTypes": null,
"id": 486,
"name": "operation",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 468,
"src": "8282:9:1",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
}
},
{
"argumentTypes": null,
"id": 487,
"name": "nonce",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 37,
"src": "8293:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
{
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 482,
"name": "getTransactionHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 852,
"src": "8246:18:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$_t_uint256_$returns$_t_bytes32_$",
"typeString": "function (address,uint256,bytes memory,enum GnosisSafe.Operation,uint256) view returns (bytes32)"
}
},
"id": 488,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8246:53:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "8220:79:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 497,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
"src": "8379:41:1",
"subExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 491,
"name": "isConfirmed",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 57,
"src": "8380:11:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$",
"typeString": "mapping(address => mapping(bytes32 => bool))"
}
},
"id": 494,
"indexExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 492,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2089,
"src": "8392:3:1",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 493,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "8392:10:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "8380:23:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
"typeString": "mapping(bytes32 => bool)"
}
},
"id": 496,
"indexExpression": {
"argumentTypes": null,
"id": 495,
"name": "transactionHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 481,
"src": "8404:15:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "8380:40:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 490,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "8371:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 498,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8371:50:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 499,
"nodeType": "ExpressionStatement",
"src": "8371:50:1"
},
{
"expression": {
"argumentTypes": null,
"id": 507,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 500,
"name": "isConfirmed",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 57,
"src": "8431:11:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$",
"typeString": "mapping(address => mapping(bytes32 => bool))"
}
},
"id": 504,
"indexExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 501,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2089,
"src": "8443:3:1",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 502,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "8443:10:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "8431:23:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
"typeString": "mapping(bytes32 => bool)"
}
},
"id": 505,
"indexExpression": {
"argumentTypes": null,
"id": 503,
"name": "transactionHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 481,
"src": "8455:15:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "8431:40:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 506,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "8474:4:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"src": "8431:47:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 508,
"nodeType": "ExpressionStatement",
"src": "8431:47:1"
}
]
},
"id": 510,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "confirmTransaction",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 471,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 462,
"name": "to",
"nodeType": "VariableDeclaration",
"scope": 510,
"src": "8007:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 461,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "8007:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 464,
"name": "value",
"nodeType": "VariableDeclaration",
"scope": 510,
"src": "8019:13:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 463,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8019:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 466,
"name": "data",
"nodeType": "VariableDeclaration",
"scope": 510,
"src": "8034:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
"typeName": {
"id": 465,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "8034:5:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes storage pointer"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 468,
"name": "operation",
"nodeType": "VariableDeclaration",
"scope": 510,
"src": "8046:19:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
},
"typeName": {
"contractScope": null,
"id": 467,
"name": "Operation",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 61,
"src": "8046:9:1",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 470,
"name": "_nonce",
"nodeType": "VariableDeclaration",
"scope": 510,
"src": "8067:14:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 469,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8067:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "8006:76:1"
},
"payable": false,
"returnParameters": {
"id": 472,
"nodeType": "ParameterList",
"parameters": [],
"src": "8102:0:1"
},
"scope": 963,
"src": "7979:506:1",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 697,
"nodeType": "Block",
"src": "9404:1349:1",
"statements": [
{
"assignments": [
537
],
"declarations": [
{
"constant": false,
"id": 537,
"name": "transactionHash",
"nodeType": "VariableDeclaration",
"scope": 698,
"src": "9414:23:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 536,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "9414:7:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 545,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 539,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 512,
"src": "9459:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 540,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 514,
"src": "9463:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 541,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 516,
"src": "9470:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
{
"argumentTypes": null,
"id": 542,
"name": "operation",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 518,
"src": "9476:9:1",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
}
},
{
"argumentTypes": null,
"id": 543,
"name": "nonce",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 37,
"src": "9487:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
{
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 538,
"name": "getTransactionHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 852,
"src": "9440:18:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$_t_uint256_$returns$_t_bytes32_$",
"typeString": "function (address,uint256,bytes memory,enum GnosisSafe.Operation,uint256) view returns (bytes32)"
}
},
"id": 544,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9440:53:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "9414:79:1"
},
{
"assignments": [
547
],
"declarations": [
{
"constant": false,
"id": 547,
"name": "lastOwner",
"nodeType": "VariableDeclaration",
"scope": 698,
"src": "9555:17:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 546,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9555:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 551,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 549,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9583:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 548,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "9575:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": "address"
},
"id": 550,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9575:10:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "9555:30:1"
},
{
"assignments": [],
"declarations": [
{
"constant": false,
"id": 553,
"name": "currentOwner",
"nodeType": "VariableDeclaration",
"scope": 698,
"src": "9595:20:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 552,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9595:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 554,
"initialValue": null,
"nodeType": "VariableDeclarationStatement",
"src": "9595:20:1"
},
{
"assignments": [],
"declarations": [
{
"constant": false,
"id": 556,
"name": "i",
"nodeType": "VariableDeclaration",
"scope": 698,
"src": "9625:9:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 555,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "9625:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 557,
"initialValue": null,
"nodeType": "VariableDeclarationStatement",
"src": "9625:9:1"
},
{
"assignments": [
559
],
"declarations": [
{
"constant": false,
"id": 559,
"name": "j",
"nodeType": "VariableDeclaration",
"scope": 698,
"src": "9644:9:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 558,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "9644:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 561,
"initialValue": {
"argumentTypes": null,
"hexValue": "30",
"id": 560,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9656:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"nodeType": "VariableDeclarationStatement",
"src": "9644:13:1"
},
{
"body": {
"id": 648,
"nodeType": "Block",
"src": "9741:619:1",
"statements": [
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 581,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 575,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 572,
"name": "indices",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 533,
"src": "9843:7:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
"typeString": "uint256[] memory"
}
},
"id": 573,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "9843:14:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"id": 574,
"name": "j",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 559,
"src": "9860:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "9843:18:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "&&",
"rightExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 580,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 576,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 556,
"src": "9865:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 577,
"name": "indices",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 533,
"src": "9870:7:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
"typeString": "uint256[] memory"
}
},
"id": 579,
"indexExpression": {
"argumentTypes": null,
"id": 578,
"name": "j",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 559,
"src": "9878:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "9870:10:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "9865:15:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "9843:37:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"expression": {
"argumentTypes": null,
"id": 629,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 610,
"name": "currentOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 553,
"src": "10155:12:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 612,
"name": "transactionHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 537,
"src": "10180:15:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 613,
"name": "v",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 521,
"src": "10197:1:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
"typeString": "uint8[] memory"
}
},
"id": 617,
"indexExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 616,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 614,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 556,
"src": "10199:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"argumentTypes": null,
"id": 615,
"name": "j",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 559,
"src": "10201:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "10199:3:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "10197:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
{
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 618,
"name": "r",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 524,
"src": "10205:1:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
"typeString": "bytes32[] memory"
}
},
"id": 622,
"indexExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 621,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 619,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 556,
"src": "10207:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"argumentTypes": null,
"id": 620,
"name": "j",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 559,
"src": "10209:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "10207:3:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "10205:6:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 623,
"name": "s",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 527,
"src": "10213:1:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
"typeString": "bytes32[] memory"
}
},
"id": 627,
"indexExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 626,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 624,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 556,
"src": "10215:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"argumentTypes": null,
"id": 625,
"name": "j",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 559,
"src": "10217:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "10215:3:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "10213:6:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 611,
"name": "ecrecover",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2082,
"src": "10170:9:1",
"typeDescriptions": {
"typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
"typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)"
}
},
"id": 628,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "10170:50:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "10155:65:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 630,
"nodeType": "ExpressionStatement",
"src": "10155:65:1"
},
"id": 631,
"nodeType": "IfStatement",
"src": "9839:381:1",
"trueBody": {
"id": 609,
"nodeType": "Block",
"src": "9882:177:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 596,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 588,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 583,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2089,
"src": "9908:3:1",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 584,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "9908:10:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 585,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 530,
"src": "9922:7:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 587,
"indexExpression": {
"argumentTypes": null,
"id": 586,
"name": "j",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 559,
"src": "9930:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "9922:10:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "9908:24:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "||",
"rightExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 589,
"name": "isConfirmed",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 57,
"src": "9936:11:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$",
"typeString": "mapping(address => mapping(bytes32 => bool))"
}
},
"id": 593,
"indexExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 590,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 530,
"src": "9948:7:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 592,
"indexExpression": {
"argumentTypes": null,
"id": 591,
"name": "j",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 559,
"src": "9956:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "9948:10:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "9936:23:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
"typeString": "mapping(bytes32 => bool)"
}
},
"id": 595,
"indexExpression": {
"argumentTypes": null,
"id": 594,
"name": "transactionHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 537,
"src": "9960:15:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "9936:40:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "9908:68:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 582,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "9900:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 597,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9900:77:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 598,
"nodeType": "ExpressionStatement",
"src": "9900:77:1"
},
{
"expression": {
"argumentTypes": null,
"id": 603,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 599,
"name": "currentOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 553,
"src": "9995:12:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 600,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 530,
"src": "10010:7:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 602,
"indexExpression": {
"argumentTypes": null,
"id": 601,
"name": "j",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 559,
"src": "10018:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "10010:10:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "9995:25:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 604,
"nodeType": "ExpressionStatement",
"src": "9995:25:1"
},
{
"expression": {
"argumentTypes": null,
"id": 607,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 605,
"name": "j",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 559,
"src": "10038:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "+=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "31",
"id": 606,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "10043:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "10038:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 608,
"nodeType": "ExpressionStatement",
"src": "10038:6:1"
}
]
}
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 633,
"name": "isOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 47,
"src": "10242:7:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 635,
"indexExpression": {
"argumentTypes": null,
"id": 634,
"name": "currentOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 553,
"src": "10250:12:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "10242:21:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 632,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "10234:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 636,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "10234:30:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 637,
"nodeType": "ExpressionStatement",
"src": "10234:30:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 641,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 639,
"name": "currentOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 553,
"src": "10286:12:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"id": 640,
"name": "lastOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 547,
"src": "10301:9:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "10286:24:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 638,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "10278:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 642,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "10278:33:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 643,
"nodeType": "ExpressionStatement",
"src": "10278:33:1"
},
{
"expression": {
"argumentTypes": null,
"id": 646,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 644,
"name": "lastOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 547,
"src": "10325:9:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 645,
"name": "currentOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 553,
"src": "10337:12:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "10325:24:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 647,
"nodeType": "ExpressionStatement",
"src": "10325:24:1"
}
]
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 568,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 566,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 556,
"src": "9721:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"id": 567,
"name": "threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 35,
"src": "9725:9:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "9721:13:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 649,
"initializationExpression": {
"expression": {
"argumentTypes": null,
"id": 564,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 562,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 556,
"src": "9714:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "30",
"id": 563,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9718:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "9714:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 565,
"nodeType": "ExpressionStatement",
"src": "9714:5:1"
},
"loopExpression": {
"expression": {
"argumentTypes": null,
"id": 570,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "9736:3:1",
"subExpression": {
"argumentTypes": null,
"id": 569,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 556,
"src": "9736:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 571,
"nodeType": "ExpressionStatement",
"src": "9736:3:1"
},
"nodeType": "ForStatement",
"src": "9709:651:1"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 653,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 650,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 530,
"src": "10419:7:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 651,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "10419:14:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 652,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "10436:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "10419:18:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 685,
"nodeType": "IfStatement",
"src": "10415:216:1",
"trueBody": {
"id": 684,
"nodeType": "Block",
"src": "10439:192:1",
"statements": [
{
"body": {
"id": 682,
"nodeType": "Block",
"src": "10490:131:1",
"statements": [
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 670,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 665,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2089,
"src": "10512:3:1",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 666,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "10512:10:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 667,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 530,
"src": "10526:7:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 669,
"indexExpression": {
"argumentTypes": null,
"id": 668,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 556,
"src": "10534:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "10526:10:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "10512:24:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 681,
"nodeType": "IfStatement",
"src": "10508:98:1",
"trueBody": {
"expression": {
"argumentTypes": null,
"id": 679,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 671,
"name": "isConfirmed",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 57,
"src": "10558:11:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$",
"typeString": "mapping(address => mapping(bytes32 => bool))"
}
},
"id": 676,
"indexExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 672,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 530,
"src": "10570:7:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 674,
"indexExpression": {
"argumentTypes": null,
"id": 673,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 556,
"src": "10578:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "10570:10:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "10558:23:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
"typeString": "mapping(bytes32 => bool)"
}
},
"id": 677,
"indexExpression": {
"argumentTypes": null,
"id": 675,
"name": "transactionHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 537,
"src": "10582:15:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "10558:40:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "66616c7365",
"id": 678,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "10601:5:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "false"
},
"src": "10558:48:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 680,
"nodeType": "ExpressionStatement",
"src": "10558:48:1"
}
}
]
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 661,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 658,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 556,
"src": "10465:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 659,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 530,
"src": "10469:7:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 660,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "10469:14:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "10465:18:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 683,
"initializationExpression": {
"expression": {
"argumentTypes": null,
"id": 656,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 654,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 556,
"src": "10458:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "30",
"id": 655,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "10462:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "10458:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 657,
"nodeType": "ExpressionStatement",
"src": "10458:5:1"
},
"loopExpression": {
"expression": {
"argumentTypes": null,
"id": 663,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "10485:3:1",
"subExpression": {
"argumentTypes": null,
"id": 662,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 556,
"src": "10485:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 664,
"nodeType": "ExpressionStatement",
"src": "10485:3:1"
},
"nodeType": "ForStatement",
"src": "10453:168:1"
}
]
}
},
{
"expression": {
"argumentTypes": null,
"id": 688,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 686,
"name": "nonce",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 37,
"src": "10691:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "+=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "31",
"id": 687,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "10700:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "10691:10:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 689,
"nodeType": "ExpressionStatement",
"src": "10691:10:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 691,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 512,
"src": "10719:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 692,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 514,
"src": "10723:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 693,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 516,
"src": "10730:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
{
"argumentTypes": null,
"id": 694,
"name": "operation",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 518,
"src": "10736:9:1",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
{
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
}
],
"id": 690,
"name": "execute",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 791,
"src": "10711:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$returns$__$",
"typeString": "function (address,uint256,bytes memory,enum GnosisSafe.Operation)"
}
},
"id": 695,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "10711:35:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 696,
"nodeType": "ExpressionStatement",
"src": "10711:35:1"
}
]
},
"id": 698,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "executeTransaction",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 534,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 512,
"name": "to",
"nodeType": "VariableDeclaration",
"scope": 698,
"src": "9250:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 511,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9250:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 514,
"name": "value",
"nodeType": "VariableDeclaration",
"scope": 698,
"src": "9262:13:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 513,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "9262:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 516,
"name": "data",
"nodeType": "VariableDeclaration",
"scope": 698,
"src": "9277:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
"typeName": {
"id": 515,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "9277:5:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes storage pointer"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 518,
"name": "operation",
"nodeType": "VariableDeclaration",
"scope": 698,
"src": "9289:19:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
},
"typeName": {
"contractScope": null,
"id": 517,
"name": "Operation",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 61,
"src": "9289:9:1",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 521,
"name": "v",
"nodeType": "VariableDeclaration",
"scope": 698,
"src": "9310:9:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
"typeString": "uint8[] memory"
},
"typeName": {
"baseType": {
"id": 519,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "9310:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"id": 520,
"length": null,
"nodeType": "ArrayTypeName",
"src": "9310:7:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr",
"typeString": "uint8[] storage pointer"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 524,
"name": "r",
"nodeType": "VariableDeclaration",
"scope": 698,
"src": "9321:11:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
"typeString": "bytes32[] memory"
},
"typeName": {
"baseType": {
"id": 522,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "9321:7:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"id": 523,
"length": null,
"nodeType": "ArrayTypeName",
"src": "9321:9:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
"typeString": "bytes32[] storage pointer"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 527,
"name": "s",
"nodeType": "VariableDeclaration",
"scope": 698,
"src": "9334:11:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
"typeString": "bytes32[] memory"
},
"typeName": {
"baseType": {
"id": 525,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "9334:7:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"id": 526,
"length": null,
"nodeType": "ArrayTypeName",
"src": "9334:9:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
"typeString": "bytes32[] storage pointer"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 530,
"name": "_owners",
"nodeType": "VariableDeclaration",
"scope": 698,
"src": "9347:17:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
},
"typeName": {
"baseType": {
"id": 528,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9347:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 529,
"length": null,
"nodeType": "ArrayTypeName",
"src": "9347:9:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[] storage pointer"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 533,
"name": "indices",
"nodeType": "VariableDeclaration",
"scope": 698,
"src": "9366:17:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
"typeString": "uint256[] memory"
},
"typeName": {
"baseType": {
"id": 531,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "9366:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 532,
"length": null,
"nodeType": "ArrayTypeName",
"src": "9366:9:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
"typeString": "uint256[] storage pointer"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "9249:135:1"
},
"payable": false,
"returnParameters": {
"id": 535,
"nodeType": "ParameterList",
"parameters": [],
"src": "9404:0:1"
},
"scope": 963,
"src": "9222:1531:1",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 736,
"nodeType": "Block",
"src": "11304:338:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 712,
"name": "isExtension",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 51,
"src": "11374:11:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 714,
"indexExpression": {
"argumentTypes": null,
"id": 713,
"name": "extension",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 708,
"src": "11386:9:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Extension_$18",
"typeString": "contract Extension"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "11374:22:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 711,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "11366:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 715,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "11366:31:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 716,
"nodeType": "ExpressionStatement",
"src": "11366:31:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 720,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2089,
"src": "11487:3:1",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 721,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "11487:10:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 722,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 700,
"src": "11499:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 723,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 702,
"src": "11503:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 724,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 704,
"src": "11510:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
{
"argumentTypes": null,
"id": 725,
"name": "operation",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 706,
"src": "11516:9:1",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
{
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
}
],
"expression": {
"argumentTypes": null,
"id": 718,
"name": "extension",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 708,
"src": "11464:9:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Extension_$18",
"typeString": "contract Extension"
}
},
"id": 719,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "isExecutable",
"nodeType": "MemberAccess",
"referencedDeclaration": 17,
"src": "11464:22:1",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$returns$_t_bool_$",
"typeString": "function (address,address,uint256,bytes memory,enum GnosisSafe.Operation) external returns (bool)"
}
},
"id": 726,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "11464:62:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 717,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "11456:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 727,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "11456:71:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 728,
"nodeType": "ExpressionStatement",
"src": "11456:71:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 730,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 700,
"src": "11608:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 731,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 702,
"src": "11612:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 732,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 704,
"src": "11619:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
{
"argumentTypes": null,
"id": 733,
"name": "operation",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 706,
"src": "11625:9:1",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
{
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
}
],
"id": 729,
"name": "execute",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 791,
"src": "11600:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$returns$__$",
"typeString": "function (address,uint256,bytes memory,enum GnosisSafe.Operation)"
}
},
"id": 734,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "11600:35:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 735,
"nodeType": "ExpressionStatement",
"src": "11600:35:1"
}
]
},
"id": 737,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "executeExtension",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 709,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 700,
"name": "to",
"nodeType": "VariableDeclaration",
"scope": 737,
"src": "11204:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 699,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "11204:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 702,
"name": "value",
"nodeType": "VariableDeclaration",
"scope": 737,
"src": "11216:13:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 701,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "11216:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 704,
"name": "data",
"nodeType": "VariableDeclaration",
"scope": 737,
"src": "11231:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
"typeName": {
"id": 703,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "11231:5:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes storage pointer"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 706,
"name": "operation",
"nodeType": "VariableDeclaration",
"scope": 737,
"src": "11243:19:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
},
"typeName": {
"contractScope": null,
"id": 705,
"name": "Operation",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 61,
"src": "11243:9:1",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 708,
"name": "extension",
"nodeType": "VariableDeclaration",
"scope": 737,
"src": "11264:19:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Extension_$18",
"typeString": "contract Extension"
},
"typeName": {
"contractScope": null,
"id": 707,
"name": "Extension",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 18,
"src": "11264:9:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Extension_$18",
"typeString": "contract Extension"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "11203:81:1"
},
"payable": false,
"returnParameters": {
"id": 710,
"nodeType": "ParameterList",
"parameters": [],
"src": "11304:0:1"
},
"scope": 963,
"src": "11178:464:1",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 790,
"nodeType": "Block",
"src": "11746:367:1",
"statements": [
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
},
"id": 751,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 748,
"name": "operation",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 745,
"src": "11760:9:1",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 749,
"name": "Operation",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 61,
"src": "11773:9:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_enum$_Operation_$61_$",
"typeString": "type(enum GnosisSafe.Operation)"
}
},
"id": 750,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "Call",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "11773:14:1",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
}
},
"src": "11760:27:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
},
"id": 763,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 760,
"name": "operation",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 745,
"src": "11857:9:1",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 761,
"name": "Operation",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 61,
"src": "11870:9:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_enum$_Operation_$61_$",
"typeString": "type(enum GnosisSafe.Operation)"
}
},
"id": 762,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "DelegateCall",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "11870:22:1",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
}
},
"src": "11857:35:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"id": 787,
"nodeType": "Block",
"src": "11959:148:1",
"statements": [
{
"assignments": [
772
],
"declarations": [
{
"constant": false,
"id": 772,
"name": "newContract",
"nodeType": "VariableDeclaration",
"scope": 791,
"src": "11973:19:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 771,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "11973:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 776,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 774,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 743,
"src": "12009:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 773,
"name": "executeCreate",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 824,
"src": "11995:13:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_address_$",
"typeString": "function (bytes memory) returns (address)"
}
},
"id": 775,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "11995:19:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "11973:41:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 780,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 778,
"name": "newContract",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 772,
"src": "12036:11:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 779,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "12051:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "12036:16:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 777,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "12028:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 781,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "12028:25:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 782,
"nodeType": "ExpressionStatement",
"src": "12028:25:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 784,
"name": "newContract",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 772,
"src": "12084:11:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 783,
"name": "ContractCreation",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 25,
"src": "12067:16:1",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
"typeString": "function (address)"
}
},
"id": 785,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "12067:29:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 786,
"nodeType": "ExpressionStatement",
"src": "12067:29:1"
}
]
},
"id": 788,
"nodeType": "IfStatement",
"src": "11853:254:1",
"trueBody": {
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 766,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 739,
"src": "11934:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 767,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 743,
"src": "11938:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 765,
"name": "executeDelegateCall",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 815,
"src": "11914:19:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$",
"typeString": "function (address,bytes memory) returns (bool)"
}
},
"id": 768,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "11914:29:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 764,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "11906:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 769,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "11906:38:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 770,
"nodeType": "ExpressionStatement",
"src": "11906:38:1"
}
},
"id": 789,
"nodeType": "IfStatement",
"src": "11756:351:1",
"trueBody": {
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 754,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 739,
"src": "11821:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 755,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 741,
"src": "11825:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 756,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 743,
"src": "11832:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 753,
"name": "executeCall",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 804,
"src": "11809:11:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$",
"typeString": "function (address,uint256,bytes memory) returns (bool)"
}
},
"id": 757,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "11809:28:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 752,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "11801:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 758,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "11801:37:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 759,
"nodeType": "ExpressionStatement",
"src": "11801:37:1"
}
}
]
},
"id": 791,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "execute",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 746,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 739,
"name": "to",
"nodeType": "VariableDeclaration",
"scope": 791,
"src": "11665:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 738,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "11665:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 741,
"name": "value",
"nodeType": "VariableDeclaration",
"scope": 791,
"src": "11677:13:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 740,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "11677:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 743,
"name": "data",
"nodeType": "VariableDeclaration",
"scope": 791,
"src": "11692:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
"typeName": {
"id": 742,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "11692:5:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes storage pointer"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 745,
"name": "operation",
"nodeType": "VariableDeclaration",
"scope": 791,
"src": "11704:19:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
},
"typeName": {
"contractScope": null,
"id": 744,
"name": "Operation",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 61,
"src": "11704:9:1",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "11664:60:1"
},
"payable": false,
"returnParameters": {
"id": 747,
"nodeType": "ParameterList",
"parameters": [],
"src": "11746:0:1"
},
"scope": 963,
"src": "11648:465:1",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "internal"
},
{
"body": {
"id": 803,
"nodeType": "Block",
"src": "12231:119:1",
"statements": [
{
"externalReferences": [
{
"data": {
"declaration": 797,
"isOffset": false,
"isSlot": false,
"src": "12303:4:1",
"valueSize": 1
}
},
{
"data": {
"declaration": 797,
"isOffset": false,
"isSlot": false,
"src": "12322:4:1",
"valueSize": 1
}
},
{
"success": {
"declaration": 800,
"isOffset": false,
"isSlot": false,
"src": "12264:7:1",
"valueSize": 1
}
},
{
"to": {
"declaration": 793,
"isOffset": false,
"isSlot": false,
"src": "12288:2:1",
"valueSize": 1
}
},
{
"value": {
"declaration": 795,
"isOffset": false,
"isSlot": false,
"src": "12292:5:1",
"valueSize": 1
}
}
],
"id": 802,
"nodeType": "InlineAssembly",
"operations": "{\n success := call(not(0), to, value, add(data, 0x20), mload(data), 0, 0)\n}",
"src": "12241:109:1"
}
]
},
"id": 804,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "executeCall",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 798,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 793,
"name": "to",
"nodeType": "VariableDeclaration",
"scope": 804,
"src": "12140:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 792,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "12140:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 795,
"name": "value",
"nodeType": "VariableDeclaration",
"scope": 804,
"src": "12152:13:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 794,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "12152:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 797,
"name": "data",
"nodeType": "VariableDeclaration",
"scope": 804,
"src": "12167:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
"typeName": {
"id": 796,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "12167:5:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes storage pointer"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "12139:39:1"
},
"payable": false,
"returnParameters": {
"id": 801,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 800,
"name": "success",
"nodeType": "VariableDeclaration",
"scope": 804,
"src": "12213:12:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 799,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "12213:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "12212:14:1"
},
"scope": 963,
"src": "12119:231:1",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "internal"
},
{
"body": {
"id": 814,
"nodeType": "Block",
"src": "12461:120:1",
"statements": [
{
"externalReferences": [
{
"data": {
"declaration": 808,
"isOffset": false,
"isSlot": false,
"src": "12534:4:1",
"valueSize": 1
}
},
{
"data": {
"declaration": 808,
"isOffset": false,
"isSlot": false,
"src": "12553:4:1",
"valueSize": 1
}
},
{
"success": {
"declaration": 811,
"isOffset": false,
"isSlot": false,
"src": "12494:7:1",
"valueSize": 1
}
},
{
"to": {
"declaration": 806,
"isOffset": false,
"isSlot": false,
"src": "12526:2:1",
"valueSize": 1
}
}
],
"id": 813,
"nodeType": "InlineAssembly",
"operations": "{\n success := delegatecall(not(0), to, add(data, 0x20), mload(data), 0, 0)\n}",
"src": "12471:110:1"
}
]
},
"id": 815,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "executeDelegateCall",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 809,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 806,
"name": "to",
"nodeType": "VariableDeclaration",
"scope": 815,
"src": "12385:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 805,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "12385:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 808,
"name": "data",
"nodeType": "VariableDeclaration",
"scope": 815,
"src": "12397:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
"typeName": {
"id": 807,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "12397:5:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes storage pointer"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "12384:24:1"
},
"payable": false,
"returnParameters": {
"id": 812,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 811,
"name": "success",
"nodeType": "VariableDeclaration",
"scope": 815,
"src": "12443:12:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 810,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "12443:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "12442:14:1"
},
"scope": 963,
"src": "12356:225:1",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "internal"
},
{
"body": {
"id": 823,
"nodeType": "Block",
"src": "12681:103:1",
"statements": [
{
"externalReferences": [
{
"data": {
"declaration": 817,
"isOffset": false,
"isSlot": false,
"src": "12762:4:1",
"valueSize": 1
}
},
{
"newContract": {
"declaration": 820,
"isOffset": false,
"isSlot": false,
"src": "12714:11:1",
"valueSize": 1
}
},
{
"data": {
"declaration": 817,
"isOffset": false,
"isSlot": false,
"src": "12743:4:1",
"valueSize": 1
}
}
],
"id": 822,
"nodeType": "InlineAssembly",
"operations": "{\n newContract := create(0, add(data, 0x20), mload(data))\n}",
"src": "12691:93:1"
}
]
},
"id": 824,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "executeCreate",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 818,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 817,
"name": "data",
"nodeType": "VariableDeclaration",
"scope": 824,
"src": "12610:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
"typeName": {
"id": 816,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "12610:5:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes storage pointer"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "12609:12:1"
},
"payable": false,
"returnParameters": {
"id": 821,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 820,
"name": "newContract",
"nodeType": "VariableDeclaration",
"scope": 824,
"src": "12656:19:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 819,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "12656:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "12655:21:1"
},
"scope": 963,
"src": "12587:197:1",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "internal"
},
{
"body": {
"id": 851,
"nodeType": "Block",
"src": "13238:87:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30783139",
"id": 841,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "13270:4:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_25_by_1",
"typeString": "int_const 25"
},
"value": "0x19"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_25_by_1",
"typeString": "int_const 25"
}
],
"id": 840,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "13265:4:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_bytes1_$",
"typeString": "type(bytes1)"
},
"typeName": "byte"
},
"id": 842,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "13265:10:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes1",
"typeString": "bytes1"
}
},
{
"argumentTypes": null,
"id": 843,
"name": "this",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2100,
"src": "13277:4:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
}
},
{
"argumentTypes": null,
"id": 844,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 826,
"src": "13283:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 845,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 828,
"src": "13287:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 846,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 830,
"src": "13294:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
{
"argumentTypes": null,
"id": 847,
"name": "operation",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 832,
"src": "13300:9:1",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
}
},
{
"argumentTypes": null,
"id": 848,
"name": "_nonce",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 834,
"src": "13311:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes1",
"typeString": "bytes1"
},
{
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
{
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 839,
"name": "keccak256",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2083,
"src": "13255:9:1",
"typeDescriptions": {
"typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
"typeString": "function () pure returns (bytes32)"
}
},
"id": 849,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "13255:63:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"functionReturnParameters": 838,
"id": 850,
"nodeType": "Return",
"src": "13248:70:1"
}
]
},
"id": 852,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": true,
"modifiers": [],
"name": "getTransactionHash",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 835,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 826,
"name": "to",
"nodeType": "VariableDeclaration",
"scope": 852,
"src": "13104:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 825,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "13104:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 828,
"name": "value",
"nodeType": "VariableDeclaration",
"scope": 852,
"src": "13116:13:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 827,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "13116:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 830,
"name": "data",
"nodeType": "VariableDeclaration",
"scope": 852,
"src": "13131:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
"typeName": {
"id": 829,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "13131:5:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes storage pointer"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 832,
"name": "operation",
"nodeType": "VariableDeclaration",
"scope": 852,
"src": "13143:19:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
},
"typeName": {
"contractScope": null,
"id": 831,
"name": "Operation",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 61,
"src": "13143:9:1",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 834,
"name": "_nonce",
"nodeType": "VariableDeclaration",
"scope": 852,
"src": "13164:14:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 833,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "13164:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "13103:76:1"
},
"payable": false,
"returnParameters": {
"id": 838,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 837,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 852,
"src": "13225:7:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 836,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "13225:7:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "13224:9:1"
},
"scope": 963,
"src": "13076:249:1",
"stateMutability": "view",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 860,
"nodeType": "Block",
"src": "13488:30:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 858,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 40,
"src": "13505:6:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"functionReturnParameters": 857,
"id": 859,
"nodeType": "Return",
"src": "13498:13:1"
}
]
},
"id": 861,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": true,
"modifiers": [],
"name": "getOwners",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 853,
"nodeType": "ParameterList",
"parameters": [],
"src": "13425:2:1"
},
"payable": false,
"returnParameters": {
"id": 857,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 856,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 861,
"src": "13473:9:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
},
"typeName": {
"baseType": {
"id": 854,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "13473:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 855,
"length": null,
"nodeType": "ArrayTypeName",
"src": "13473:9:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[] storage pointer"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "13472:11:1"
},
"scope": 963,
"src": "13407:111:1",
"stateMutability": "view",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 869,
"nodeType": "Block",
"src": "13690:34:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 867,
"name": "extensions",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43,
"src": "13707:10:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage",
"typeString": "contract Extension[] storage ref"
}
},
"functionReturnParameters": 866,
"id": 868,
"nodeType": "Return",
"src": "13700:17:1"
}
]
},
"id": 870,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": true,
"modifiers": [],
"name": "getExtensions",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 862,
"nodeType": "ParameterList",
"parameters": [],
"src": "13625:2:1"
},
"payable": false,
"returnParameters": {
"id": 866,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 865,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 870,
"src": "13673:11:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_memory_ptr",
"typeString": "contract Extension[] memory"
},
"typeName": {
"baseType": {
"contractScope": null,
"id": 863,
"name": "Extension",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 18,
"src": "13673:9:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Extension_$18",
"typeString": "contract Extension"
}
},
"id": 864,
"length": null,
"nodeType": "ArrayTypeName",
"src": "13673:11:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage_ptr",
"typeString": "contract Extension[] storage pointer"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "13672:13:1"
},
"scope": 963,
"src": "13603:121:1",
"stateMutability": "view",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 901,
"nodeType": "Block",
"src": "13998:162:1",
"statements": [
{
"body": {
"id": 899,
"nodeType": "Block",
"src": "14049:105:1",
"statements": [
{
"condition": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 888,
"name": "isConfirmed",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 57,
"src": "14067:11:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$",
"typeString": "mapping(address => mapping(bytes32 => bool))"
}
},
"id": 892,
"indexExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 889,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 40,
"src": "14079:6:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 891,
"indexExpression": {
"argumentTypes": null,
"id": 890,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 878,
"src": "14086:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "14079:9:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "14067:22:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
"typeString": "mapping(bytes32 => bool)"
}
},
"id": 894,
"indexExpression": {
"argumentTypes": null,
"id": 893,
"name": "transactionHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 872,
"src": "14090:15:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "14067:39:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 898,
"nodeType": "IfStatement",
"src": "14063:80:1",
"trueBody": {
"expression": {
"argumentTypes": null,
"id": 896,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "14124:19:1",
"subExpression": {
"argumentTypes": null,
"id": 895,
"name": "confirmationCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 875,
"src": "14124:17:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 897,
"nodeType": "ExpressionStatement",
"src": "14124:19:1"
}
}
]
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 884,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 881,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 878,
"src": "14025:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 882,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 40,
"src": "14029:6:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 883,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "14029:13:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "14025:17:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 900,
"initializationExpression": {
"assignments": [
878
],
"declarations": [
{
"constant": false,
"id": 878,
"name": "i",
"nodeType": "VariableDeclaration",
"scope": 902,
"src": "14013:6:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 877,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "14013:4:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 880,
"initialValue": {
"argumentTypes": null,
"hexValue": "30",
"id": 879,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "14022:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"nodeType": "VariableDeclarationStatement",
"src": "14013:10:1"
},
"loopExpression": {
"expression": {
"argumentTypes": null,
"id": 886,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "14044:3:1",
"subExpression": {
"argumentTypes": null,
"id": 885,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 878,
"src": "14044:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 887,
"nodeType": "ExpressionStatement",
"src": "14044:3:1"
},
"nodeType": "ForStatement",
"src": "14008:146:1"
}
]
},
"id": 902,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": true,
"modifiers": [],
"name": "getConfirmationCount",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 873,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 872,
"name": "transactionHash",
"nodeType": "VariableDeclaration",
"scope": 902,
"src": "13900:23:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 871,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "13900:7:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "13899:25:1"
},
"payable": false,
"returnParameters": {
"id": 876,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 875,
"name": "confirmationCount",
"nodeType": "VariableDeclaration",
"scope": 902,
"src": "13970:22:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 874,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "13970:4:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "13969:24:1"
},
"scope": 963,
"src": "13870:290:1",
"stateMutability": "view",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 961,
"nodeType": "Block",
"src": "14432:407:1",
"statements": [
{
"assignments": [
911
],
"declarations": [
{
"constant": false,
"id": 911,
"name": "confirmationCount",
"nodeType": "VariableDeclaration",
"scope": 962,
"src": "14442:22:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 910,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "14442:4:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 915,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 913,
"name": "transactionHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 904,
"src": "14488:15:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 912,
"name": "getConfirmationCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 902,
"src": "14467:20:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
"typeString": "function (bytes32) view returns (uint256)"
}
},
"id": 914,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "14467:37:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "14442:62:1"
},
{
"expression": {
"argumentTypes": null,
"id": 922,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 916,
"name": "confirmingOwners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 908,
"src": "14514:16:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 920,
"name": "confirmationCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 911,
"src": "14547:17:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 919,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "NewExpression",
"src": "14533:13:1",
"typeDescriptions": {
"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$",
"typeString": "function (uint256) pure returns (address[] memory)"
},
"typeName": {
"baseType": {
"id": 917,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "14537:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 918,
"length": null,
"nodeType": "ArrayTypeName",
"src": "14537:9:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[] storage pointer"
}
}
},
"id": 921,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "14533:32:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory",
"typeString": "address[] memory"
}
},
"src": "14514:51:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 923,
"nodeType": "ExpressionStatement",
"src": "14514:51:1"
},
{
"expression": {
"argumentTypes": null,
"id": 926,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 924,
"name": "confirmationCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 911,
"src": "14575:17:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "30",
"id": 925,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "14595:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "14575:21:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 927,
"nodeType": "ExpressionStatement",
"src": "14575:21:1"
},
{
"body": {
"id": 959,
"nodeType": "Block",
"src": "14647:186:1",
"statements": [
{
"condition": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 939,
"name": "isConfirmed",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 57,
"src": "14665:11:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$",
"typeString": "mapping(address => mapping(bytes32 => bool))"
}
},
"id": 943,
"indexExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 940,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 40,
"src": "14677:6:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 942,
"indexExpression": {
"argumentTypes": null,
"id": 941,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 929,
"src": "14684:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "14677:9:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "14665:22:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
"typeString": "mapping(bytes32 => bool)"
}
},
"id": 945,
"indexExpression": {
"argumentTypes": null,
"id": 944,
"name": "transactionHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 904,
"src": "14688:15:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "14665:39:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 958,
"nodeType": "IfStatement",
"src": "14661:162:1",
"trueBody": {
"id": 957,
"nodeType": "Block",
"src": "14706:117:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 952,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 946,
"name": "confirmingOwners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 908,
"src": "14724:16:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 948,
"indexExpression": {
"argumentTypes": null,
"id": 947,
"name": "confirmationCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 911,
"src": "14741:17:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "14724:35:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 949,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 40,
"src": "14762:6:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 951,
"indexExpression": {
"argumentTypes": null,
"id": 950,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 929,
"src": "14769:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "14762:9:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "14724:47:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 953,
"nodeType": "ExpressionStatement",
"src": "14724:47:1"
},
{
"expression": {
"argumentTypes": null,
"id": 955,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "14789:19:1",
"subExpression": {
"argumentTypes": null,
"id": 954,
"name": "confirmationCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 911,
"src": "14789:17:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 956,
"nodeType": "ExpressionStatement",
"src": "14789:19:1"
}
]
}
}
]
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 935,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 932,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 929,
"src": "14623:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 933,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 40,
"src": "14627:6:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 934,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "14627:13:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "14623:17:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 960,
"initializationExpression": {
"assignments": [
929
],
"declarations": [
{
"constant": false,
"id": 929,
"name": "i",
"nodeType": "VariableDeclaration",
"scope": 962,
"src": "14611:6:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 928,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "14611:4:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 931,
"initialValue": {
"argumentTypes": null,
"hexValue": "30",
"id": 930,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "14620:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"nodeType": "VariableDeclarationStatement",
"src": "14611:10:1"
},
"loopExpression": {
"expression": {
"argumentTypes": null,
"id": 937,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "14642:3:1",
"subExpression": {
"argumentTypes": null,
"id": 936,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 929,
"src": "14642:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 938,
"nodeType": "ExpressionStatement",
"src": "14642:3:1"
},
"nodeType": "ForStatement",
"src": "14606:227:1"
}
]
},
"id": 962,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": true,
"modifiers": [],
"name": "getConfirmingOwners",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 905,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 904,
"name": "transactionHash",
"nodeType": "VariableDeclaration",
"scope": 962,
"src": "14330:23:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 903,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "14330:7:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "14329:25:1"
},
"payable": false,
"returnParameters": {
"id": 909,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 908,
"name": "confirmingOwners",
"nodeType": "VariableDeclaration",
"scope": 962,
"src": "14400:26:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
},
"typeName": {
"baseType": {
"id": 906,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "14400:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 907,
"length": null,
"nodeType": "ArrayTypeName",
"src": "14400:9:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[] storage pointer"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "14399:28:1"
},
"scope": 963,
"src": "14301:538:1",
"stateMutability": "view",
"superFunction": null,
"visibility": "public"
}
],
"scope": 964,
"src": "218:14623:1"
}
],
"src": "0:14842:1"
},
"legacyAST": {
"absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol",
"exportedSymbols": {
"GnosisSafe": [
963
]
},
"id": 964,
"nodeType": "SourceUnit",
"nodes": [
{
"id": 20,
"literals": [
"solidity",
"0.4",
".19"
],
"nodeType": "PragmaDirective",
"src": "0:23:1"
},
{
"absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Extension.sol",
"file": "./Extension.sol",
"id": 21,
"nodeType": "ImportDirective",
"scope": 964,
"sourceUnit": 19,
"src": "24:25:1",
"symbolAliases": [],
"unitAlias": ""
},
{
"baseContracts": [],
"contractDependencies": [],
"contractKind": "contract",
"documentation": "@title Gnosis Safe - A multisignature wallet with support for confirmations using signed messages based on ERC191.\n @author Stefan George - <stefan@gnosis.pm>",
"fullyImplemented": true,
"id": 963,
"linearizedBaseContracts": [
963
],
"name": "GnosisSafe",
"nodeType": "ContractDefinition",
"nodes": [
{
"anonymous": false,
"id": 25,
"name": "ContractCreation",
"nodeType": "EventDefinition",
"parameters": {
"id": 24,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 23,
"indexed": false,
"name": "newContract",
"nodeType": "VariableDeclaration",
"scope": 25,
"src": "268:19:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 22,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "268:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "267:21:1"
},
"src": "245:44:1"
},
{
"constant": true,
"id": 28,
"name": "NAME",
"nodeType": "VariableDeclaration",
"scope": 963,
"src": "295:43:1",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_string_memory",
"typeString": "string memory"
},
"typeName": {
"id": 26,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "295:6:1",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string storage pointer"
}
},
"value": {
"argumentTypes": null,
"hexValue": "476e6f7369732053616665",
"id": 27,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "325:13:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_72ec6775392f699e8ffd72b7c600556d49bdc746bf22bce93d3ae6019cdaff63",
"typeString": "literal_string \"Gnosis Safe\""
},
"value": "Gnosis Safe"
},
"visibility": "public"
},
{
"constant": true,
"id": 31,
"name": "VERSION",
"nodeType": "VariableDeclaration",
"scope": 963,
"src": "344:40:1",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_string_memory",
"typeString": "string memory"
},
"typeName": {
"id": 29,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "344:6:1",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string storage pointer"
}
},
"value": {
"argumentTypes": null,
"hexValue": "302e302e31",
"id": 30,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "377:7:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885",
"typeString": "literal_string \"0.0.1\""
},
"value": "0.0.1"
},
"visibility": "public"
},
{
"constant": false,
"id": 33,
"name": "masterCopy",
"nodeType": "VariableDeclaration",
"scope": 963,
"src": "391:21:1",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
},
"typeName": {
"contractScope": null,
"id": 32,
"name": "GnosisSafe",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 963,
"src": "391:10:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 35,
"name": "threshold",
"nodeType": "VariableDeclaration",
"scope": 963,
"src": "418:22:1",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 34,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "418:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"id": 37,
"name": "nonce",
"nodeType": "VariableDeclaration",
"scope": 963,
"src": "446:20:1",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 36,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "446:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"id": 40,
"name": "owners",
"nodeType": "VariableDeclaration",
"scope": 963,
"src": "472:23:1",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
},
"typeName": {
"baseType": {
"id": 38,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "472:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 39,
"length": null,
"nodeType": "ArrayTypeName",
"src": "472:9:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[] storage pointer"
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"id": 43,
"name": "extensions",
"nodeType": "VariableDeclaration",
"scope": 963,
"src": "501:29:1",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage",
"typeString": "contract Extension[] storage ref"
},
"typeName": {
"baseType": {
"contractScope": null,
"id": 41,
"name": "Extension",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 18,
"src": "501:9:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Extension_$18",
"typeString": "contract Extension"
}
},
"id": 42,
"length": null,
"nodeType": "ArrayTypeName",
"src": "501:11:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage_ptr",
"typeString": "contract Extension[] storage pointer"
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"id": 47,
"name": "isOwner",
"nodeType": "VariableDeclaration",
"scope": 963,
"src": "607:40:1",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
},
"typeName": {
"id": 46,
"keyType": {
"id": 44,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "616:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "607:25:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
},
"valueType": {
"id": 45,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "627:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"id": 51,
"name": "isExtension",
"nodeType": "VariableDeclaration",
"scope": 963,
"src": "729:44:1",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
},
"typeName": {
"id": 50,
"keyType": {
"id": 48,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "738:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "729:25:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
},
"valueType": {
"id": 49,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "749:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"id": 57,
"name": "isConfirmed",
"nodeType": "VariableDeclaration",
"scope": 963,
"src": "892:65:1",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$",
"typeString": "mapping(address => mapping(bytes32 => bool))"
},
"typeName": {
"id": 56,
"keyType": {
"id": 52,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "901:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "892:46:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$",
"typeString": "mapping(address => mapping(bytes32 => bool))"
},
"valueType": {
"id": 55,
"keyType": {
"id": 53,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "921:7:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "Mapping",
"src": "912:25:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
"typeString": "mapping(bytes32 => bool)"
},
"valueType": {
"id": 54,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "932:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
}
},
"value": null,
"visibility": "public"
},
{
"canonicalName": "GnosisSafe.Operation",
"id": 61,
"members": [
{
"id": 58,
"name": "Call",
"nodeType": "EnumValue",
"src": "989:4:1"
},
{
"id": 59,
"name": "DelegateCall",
"nodeType": "EnumValue",
"src": "1003:12:1"
},
{
"id": 60,
"name": "Create",
"nodeType": "EnumValue",
"src": "1025:6:1"
}
],
"name": "Operation",
"nodeType": "EnumDefinition",
"src": "964:73:1"
},
{
"body": {
"id": 73,
"nodeType": "Block",
"src": "1065:64:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 69,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 64,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2089,
"src": "1083:3:1",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 65,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "1083:10:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 67,
"name": "this",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2100,
"src": "1105:4:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
}
],
"id": 66,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "1097:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": "address"
},
"id": 68,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1097:13:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "1083:27:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 63,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "1075:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 70,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1075:36:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 71,
"nodeType": "ExpressionStatement",
"src": "1075:36:1"
},
{
"id": 72,
"nodeType": "PlaceholderStatement",
"src": "1121:1:1"
}
]
},
"id": 74,
"name": "onlyWallet",
"nodeType": "ModifierDefinition",
"parameters": {
"id": 62,
"nodeType": "ParameterList",
"parameters": [],
"src": "1062:2:1"
},
"src": "1043:86:1",
"visibility": "internal"
},
{
"body": {
"id": 77,
"nodeType": "Block",
"src": "1243:8:1",
"statements": []
},
"id": 78,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 75,
"nodeType": "ParameterList",
"parameters": [],
"src": "1203:2:1"
},
"payable": true,
"returnParameters": {
"id": 76,
"nodeType": "ParameterList",
"parameters": [],
"src": "1243:0:1"
},
"scope": 963,
"src": "1194:57:1",
"stateMutability": "payable",
"superFunction": null,
"visibility": "external"
},
{
"body": {
"id": 97,
"nodeType": "Block",
"src": "1667:53:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 91,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 81,
"src": "1683:7:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
{
"argumentTypes": null,
"id": 92,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 83,
"src": "1692:10:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
{
"argumentTypes": null,
"id": 93,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 85,
"src": "1704:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 94,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 87,
"src": "1708:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
},
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 90,
"name": "setup",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 187,
"src": "1677:5:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_uint8_$_t_address_$_t_bytes_memory_ptr_$returns$__$",
"typeString": "function (address[] memory,uint8,address,bytes memory)"
}
},
"id": 95,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1677:36:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 96,
"nodeType": "ExpressionStatement",
"src": "1677:36:1"
}
]
},
"id": 98,
"implemented": true,
"isConstructor": true,
"isDeclaredConst": false,
"modifiers": [],
"name": "GnosisSafe",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 88,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 81,
"name": "_owners",
"nodeType": "VariableDeclaration",
"scope": 98,
"src": "1587:17:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
},
"typeName": {
"baseType": {
"id": 79,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1587:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 80,
"length": null,
"nodeType": "ArrayTypeName",
"src": "1587:9:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[] storage pointer"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 83,
"name": "_threshold",
"nodeType": "VariableDeclaration",
"scope": 98,
"src": "1606:16:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 82,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "1606:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 85,
"name": "to",
"nodeType": "VariableDeclaration",
"scope": 98,
"src": "1624:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 84,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1624:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 87,
"name": "data",
"nodeType": "VariableDeclaration",
"scope": 98,
"src": "1636:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
"typeName": {
"id": 86,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "1636:5:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes storage pointer"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1586:61:1"
},
"payable": false,
"returnParameters": {
"id": 89,
"nodeType": "ParameterList",
"parameters": [],
"src": "1667:0:1"
},
"scope": 963,
"src": "1567:153:1",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 186,
"nodeType": "Block",
"src": "2134:1046:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 113,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 111,
"name": "threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 35,
"src": "2276:9:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 112,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2289:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "2276:14:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 110,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "2268:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 114,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2268:23:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 115,
"nodeType": "ExpressionStatement",
"src": "2268:23:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 120,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 117,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 103,
"src": "2383:10:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "<=",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 118,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 101,
"src": "2397:7:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 119,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "2397:14:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2383:28:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 116,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "2375:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 121,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2375:37:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 122,
"nodeType": "ExpressionStatement",
"src": "2375:37:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 126,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 124,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 103,
"src": "2482:10:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": ">=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 125,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2496:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "2482:15:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 123,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "2474:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 127,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2474:24:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 128,
"nodeType": "ExpressionStatement",
"src": "2474:24:1"
},
{
"body": {
"id": 165,
"nodeType": "Block",
"src": "2590:221:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 145,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 141,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 101,
"src": "2657:7:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 143,
"indexExpression": {
"argumentTypes": null,
"id": 142,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 130,
"src": "2665:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2657:10:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 144,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2671:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "2657:15:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 140,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "2649:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 146,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2649:24:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 147,
"nodeType": "ExpressionStatement",
"src": "2649:24:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 154,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
"src": "2739:20:1",
"subExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 149,
"name": "isOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 47,
"src": "2740:7:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 153,
"indexExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 150,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 101,
"src": "2748:7:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 152,
"indexExpression": {
"argumentTypes": null,
"id": 151,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 130,
"src": "2756:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2748:10:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2740:19:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 148,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "2731:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 155,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2731:29:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 156,
"nodeType": "ExpressionStatement",
"src": "2731:29:1"
},
{
"expression": {
"argumentTypes": null,
"id": 163,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 157,
"name": "isOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 47,
"src": "2774:7:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 161,
"indexExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 158,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 101,
"src": "2782:7:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 160,
"indexExpression": {
"argumentTypes": null,
"id": 159,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 130,
"src": "2790:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2782:10:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "2774:19:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 162,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2796:4:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"src": "2774:26:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 164,
"nodeType": "ExpressionStatement",
"src": "2774:26:1"
}
]
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 136,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 133,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 130,
"src": "2565:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 134,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 101,
"src": "2569:7:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 135,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "2569:14:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2565:18:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 166,
"initializationExpression": {
"assignments": [
130
],
"declarations": [
{
"constant": false,
"id": 130,
"name": "i",
"nodeType": "VariableDeclaration",
"scope": 187,
"src": "2550:9:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 129,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2550:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 132,
"initialValue": {
"argumentTypes": null,
"hexValue": "30",
"id": 131,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2562:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"nodeType": "VariableDeclarationStatement",
"src": "2550:13:1"
},
"loopExpression": {
"expression": {
"argumentTypes": null,
"id": 138,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "2585:3:1",
"subExpression": {
"argumentTypes": null,
"id": 137,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 130,
"src": "2585:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 139,
"nodeType": "ExpressionStatement",
"src": "2585:3:1"
},
"nodeType": "ForStatement",
"src": "2545:266:1"
},
{
"expression": {
"argumentTypes": null,
"id": 169,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 167,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 40,
"src": "2820:6:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 168,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 101,
"src": "2829:7:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"src": "2820:16:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 170,
"nodeType": "ExpressionStatement",
"src": "2820:16:1"
},
{
"expression": {
"argumentTypes": null,
"id": 173,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 171,
"name": "threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 35,
"src": "2846:9:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 172,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 103,
"src": "2858:10:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "2846:22:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"id": 174,
"nodeType": "ExpressionStatement",
"src": "2846:22:1"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 177,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 175,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 105,
"src": "3042:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 176,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3048:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "3042:7:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 185,
"nodeType": "IfStatement",
"src": "3038:135:1",
"trueBody": {
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 180,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 105,
"src": "3163:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 181,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 107,
"src": "3167:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 179,
"name": "executeDelegateCall",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 815,
"src": "3143:19:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$",
"typeString": "function (address,bytes memory) returns (bool)"
}
},
"id": 182,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3143:29:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 178,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "3135:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 183,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3135:38:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 184,
"nodeType": "ExpressionStatement",
"src": "3135:38:1"
}
}
]
},
"id": 187,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "setup",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 108,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 101,
"name": "_owners",
"nodeType": "VariableDeclaration",
"scope": 187,
"src": "2054:17:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
},
"typeName": {
"baseType": {
"id": 99,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2054:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 100,
"length": null,
"nodeType": "ArrayTypeName",
"src": "2054:9:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[] storage pointer"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 103,
"name": "_threshold",
"nodeType": "VariableDeclaration",
"scope": 187,
"src": "2073:16:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 102,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "2073:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 105,
"name": "to",
"nodeType": "VariableDeclaration",
"scope": 187,
"src": "2091:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 104,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2091:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 107,
"name": "data",
"nodeType": "VariableDeclaration",
"scope": 187,
"src": "2103:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
"typeName": {
"id": 106,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "2103:5:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes storage pointer"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2053:61:1"
},
"payable": false,
"returnParameters": {
"id": 109,
"nodeType": "ParameterList",
"parameters": [],
"src": "2134:0:1"
},
"scope": 963,
"src": "2039:1141:1",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 206,
"nodeType": "Block",
"src": "3414:132:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 199,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 196,
"name": "_masterCopy",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 189,
"src": "3487:11:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
}
],
"id": 195,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "3479:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": "address"
},
"id": 197,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3479:20:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 198,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3503:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "3479:25:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 194,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "3471:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 200,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3471:34:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 201,
"nodeType": "ExpressionStatement",
"src": "3471:34:1"
},
{
"expression": {
"argumentTypes": null,
"id": 204,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 202,
"name": "masterCopy",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 33,
"src": "3515:10:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 203,
"name": "_masterCopy",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 189,
"src": "3528:11:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
}
},
"src": "3515:24:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
}
},
"id": 205,
"nodeType": "ExpressionStatement",
"src": "3515:24:1"
}
]
},
"id": 207,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [
{
"arguments": [],
"id": 192,
"modifierName": {
"argumentTypes": null,
"id": 191,
"name": "onlyWallet",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 74,
"src": "3399:10:1",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "3399:10:1"
}
],
"name": "changeMasterCopy",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 190,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 189,
"name": "_masterCopy",
"nodeType": "VariableDeclaration",
"scope": 207,
"src": "3352:22:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
},
"typeName": {
"contractScope": null,
"id": 188,
"name": "GnosisSafe",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 963,
"src": "3352:10:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "3351:24:1"
},
"payable": false,
"returnParameters": {
"id": 193,
"nodeType": "ParameterList",
"parameters": [],
"src": "3414:0:1"
},
"scope": 963,
"src": "3326:220:1",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 249,
"nodeType": "Block",
"src": "3875:342:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 219,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 217,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 209,
"src": "3934:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 218,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3943:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "3934:10:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 216,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "3926:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 220,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3926:19:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 221,
"nodeType": "ExpressionStatement",
"src": "3926:19:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 226,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
"src": "4003:15:1",
"subExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 223,
"name": "isOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 47,
"src": "4004:7:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 225,
"indexExpression": {
"argumentTypes": null,
"id": 224,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 209,
"src": "4012:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4004:14:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 222,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "3995:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 227,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3995:24:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 228,
"nodeType": "ExpressionStatement",
"src": "3995:24:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 232,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 209,
"src": "4041:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"argumentTypes": null,
"id": 229,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 40,
"src": "4029:6:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 231,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "push",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "4029:11:1",
"typeDescriptions": {
"typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$",
"typeString": "function (address) returns (uint256)"
}
},
"id": 233,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4029:18:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 234,
"nodeType": "ExpressionStatement",
"src": "4029:18:1"
},
{
"expression": {
"argumentTypes": null,
"id": 239,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 235,
"name": "isOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 47,
"src": "4057:7:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 237,
"indexExpression": {
"argumentTypes": null,
"id": 236,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 209,
"src": "4065:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "4057:14:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 238,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4074:4:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"src": "4057:21:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 240,
"nodeType": "ExpressionStatement",
"src": "4057:21:1"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 243,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 241,
"name": "threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 35,
"src": "4146:9:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"id": 242,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 211,
"src": "4159:10:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "4146:23:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 248,
"nodeType": "IfStatement",
"src": "4142:68:1",
"trueBody": {
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 245,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 211,
"src": "4199:10:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
],
"id": 244,
"name": "changeThreshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 385,
"src": "4183:15:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$",
"typeString": "function (uint8)"
}
},
"id": 246,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4183:27:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 247,
"nodeType": "ExpressionStatement",
"src": "4183:27:1"
}
}
]
},
"id": 250,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [
{
"arguments": [],
"id": 214,
"modifierName": {
"argumentTypes": null,
"id": 213,
"name": "onlyWallet",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 74,
"src": "3860:10:1",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "3860:10:1"
}
],
"name": "addOwner",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 212,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 209,
"name": "owner",
"nodeType": "VariableDeclaration",
"scope": 250,
"src": "3804:13:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 208,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3804:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 211,
"name": "_threshold",
"nodeType": "VariableDeclaration",
"scope": 250,
"src": "3819:16:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 210,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "3819:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "3803:33:1"
},
"payable": false,
"returnParameters": {
"id": 215,
"nodeType": "ParameterList",
"parameters": [],
"src": "3875:0:1"
},
"scope": 963,
"src": "3786:431:1",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 308,
"nodeType": "Block",
"src": "4660:487:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 267,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 265,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 262,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 40,
"src": "4755:6:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 263,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "4755:13:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 264,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4771:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "4755:17:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">=",
"rightExpression": {
"argumentTypes": null,
"id": 266,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 256,
"src": "4776:10:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "4755:31:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 261,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "4747:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 268,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4747:40:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 269,
"nodeType": "ExpressionStatement",
"src": "4747:40:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 275,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 271,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 40,
"src": "4867:6:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 273,
"indexExpression": {
"argumentTypes": null,
"id": 272,
"name": "ownerIndex",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 252,
"src": "4874:10:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4867:18:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"id": 274,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 254,
"src": "4889:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "4867:27:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 270,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "4859:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 276,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4859:36:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 277,
"nodeType": "ExpressionStatement",
"src": "4859:36:1"
},
{
"expression": {
"argumentTypes": null,
"id": 282,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 278,
"name": "isOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 47,
"src": "4905:7:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 280,
"indexExpression": {
"argumentTypes": null,
"id": 279,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 254,
"src": "4913:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "4905:14:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "66616c7365",
"id": 281,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4922:5:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "false"
},
"src": "4905:22:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 283,
"nodeType": "ExpressionStatement",
"src": "4905:22:1"
},
{
"expression": {
"argumentTypes": null,
"id": 293,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 284,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 40,
"src": "4937:6:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 286,
"indexExpression": {
"argumentTypes": null,
"id": 285,
"name": "ownerIndex",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 252,
"src": "4944:10:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "4937:18:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 287,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 40,
"src": "4958:6:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 292,
"indexExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 291,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 288,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 40,
"src": "4965:6:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 289,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "4965:13:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 290,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4981:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "4965:17:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4958:25:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "4937:46:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 294,
"nodeType": "ExpressionStatement",
"src": "4937:46:1"
},
{
"expression": {
"argumentTypes": null,
"id": 298,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "--",
"prefix": false,
"src": "4993:15:1",
"subExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 295,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 40,
"src": "4993:6:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 297,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "4993:13:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 299,
"nodeType": "ExpressionStatement",
"src": "4993:15:1"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 302,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 300,
"name": "threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 35,
"src": "5076:9:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"id": 301,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 256,
"src": "5089:10:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "5076:23:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 307,
"nodeType": "IfStatement",
"src": "5072:68:1",
"trueBody": {
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 304,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 256,
"src": "5129:10:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
],
"id": 303,
"name": "changeThreshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 385,
"src": "5113:15:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$",
"typeString": "function (uint8)"
}
},
"id": 305,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5113:27:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 306,
"nodeType": "ExpressionStatement",
"src": "5113:27:1"
}
}
]
},
"id": 309,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [
{
"arguments": [],
"id": 259,
"modifierName": {
"argumentTypes": null,
"id": 258,
"name": "onlyWallet",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 74,
"src": "4645:10:1",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "4645:10:1"
}
],
"name": "removeOwner",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 257,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 252,
"name": "ownerIndex",
"nodeType": "VariableDeclaration",
"scope": 309,
"src": "4569:18:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 251,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4569:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 254,
"name": "owner",
"nodeType": "VariableDeclaration",
"scope": 309,
"src": "4589:13:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 253,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4589:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 256,
"name": "_threshold",
"nodeType": "VariableDeclaration",
"scope": 309,
"src": "4604:16:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 255,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "4604:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4568:53:1"
},
"payable": false,
"returnParameters": {
"id": 260,
"nodeType": "ParameterList",
"parameters": [],
"src": "4660:0:1"
},
"scope": 963,
"src": "4548:599:1",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 359,
"nodeType": "Block",
"src": "5587:383:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 323,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 321,
"name": "newOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 315,
"src": "5646:8:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 322,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5658:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "5646:13:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 320,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "5638:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 324,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5638:22:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 325,
"nodeType": "ExpressionStatement",
"src": "5638:22:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 330,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
"src": "5718:18:1",
"subExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 327,
"name": "isOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 47,
"src": "5719:7:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 329,
"indexExpression": {
"argumentTypes": null,
"id": 328,
"name": "newOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 315,
"src": "5727:8:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "5719:17:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 326,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "5710:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 331,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5710:27:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 332,
"nodeType": "ExpressionStatement",
"src": "5710:27:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 338,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 334,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 40,
"src": "5817:6:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 336,
"indexExpression": {
"argumentTypes": null,
"id": 335,
"name": "oldOwnerIndex",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 311,
"src": "5824:13:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "5817:21:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"id": 337,
"name": "oldOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 313,
"src": "5842:8:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "5817:33:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 333,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "5809:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 339,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5809:42:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 340,
"nodeType": "ExpressionStatement",
"src": "5809:42:1"
},
{
"expression": {
"argumentTypes": null,
"id": 345,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 341,
"name": "isOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 47,
"src": "5861:7:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 343,
"indexExpression": {
"argumentTypes": null,
"id": 342,
"name": "oldOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 313,
"src": "5869:8:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "5861:17:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "66616c7365",
"id": 344,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5881:5:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "false"
},
"src": "5861:25:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 346,
"nodeType": "ExpressionStatement",
"src": "5861:25:1"
},
{
"expression": {
"argumentTypes": null,
"id": 351,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 347,
"name": "isOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 47,
"src": "5896:7:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 349,
"indexExpression": {
"argumentTypes": null,
"id": 348,
"name": "newOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 315,
"src": "5904:8:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "5896:17:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 350,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5917:4:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"src": "5896:25:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 352,
"nodeType": "ExpressionStatement",
"src": "5896:25:1"
},
{
"expression": {
"argumentTypes": null,
"id": 357,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 353,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 40,
"src": "5931:6:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 355,
"indexExpression": {
"argumentTypes": null,
"id": 354,
"name": "oldOwnerIndex",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 311,
"src": "5938:13:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "5931:21:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 356,
"name": "newOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 315,
"src": "5955:8:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "5931:32:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 358,
"nodeType": "ExpressionStatement",
"src": "5931:32:1"
}
]
},
"id": 360,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [
{
"arguments": [],
"id": 318,
"modifierName": {
"argumentTypes": null,
"id": 317,
"name": "onlyWallet",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 74,
"src": "5572:10:1",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "5572:10:1"
}
],
"name": "replaceOwner",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 316,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 311,
"name": "oldOwnerIndex",
"nodeType": "VariableDeclaration",
"scope": 360,
"src": "5490:21:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 310,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5490:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 313,
"name": "oldOwner",
"nodeType": "VariableDeclaration",
"scope": 360,
"src": "5513:16:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 312,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5513:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 315,
"name": "newOwner",
"nodeType": "VariableDeclaration",
"scope": 360,
"src": "5531:16:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 314,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5531:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "5489:59:1"
},
"payable": false,
"returnParameters": {
"id": 319,
"nodeType": "ParameterList",
"parameters": [],
"src": "5587:0:1"
},
"scope": 963,
"src": "5468:502:1",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 384,
"nodeType": "Block",
"src": "6240:239:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 371,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 368,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 362,
"src": "6326:10:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "<=",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 369,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 40,
"src": "6340:6:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 370,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "6340:13:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "6326:27:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 367,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "6318:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 372,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6318:36:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 373,
"nodeType": "ExpressionStatement",
"src": "6318:36:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 377,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 375,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 362,
"src": "6424:10:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": ">=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 376,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "6438:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "6424:15:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 374,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "6416:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 378,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6416:24:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 379,
"nodeType": "ExpressionStatement",
"src": "6416:24:1"
},
{
"expression": {
"argumentTypes": null,
"id": 382,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 380,
"name": "threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 35,
"src": "6450:9:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 381,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 362,
"src": "6462:10:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "6450:22:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"id": 383,
"nodeType": "ExpressionStatement",
"src": "6450:22:1"
}
]
},
"id": 385,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [
{
"arguments": [],
"id": 365,
"modifierName": {
"argumentTypes": null,
"id": 364,
"name": "onlyWallet",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 74,
"src": "6225:10:1",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "6225:10:1"
}
],
"name": "changeThreshold",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 363,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 362,
"name": "_threshold",
"nodeType": "VariableDeclaration",
"scope": 385,
"src": "6184:16:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 361,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "6184:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "6183:18:1"
},
"payable": false,
"returnParameters": {
"id": 366,
"nodeType": "ParameterList",
"parameters": [],
"src": "6240:0:1"
},
"scope": 963,
"src": "6159:320:1",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 419,
"nodeType": "Block",
"src": "6737:255:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 397,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 394,
"name": "extension",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 387,
"src": "6808:9:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Extension_$18",
"typeString": "contract Extension"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_Extension_$18",
"typeString": "contract Extension"
}
],
"id": 393,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "6800:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": "address"
},
"id": 395,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6800:18:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 396,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "6822:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "6800:23:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 392,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "6792:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 398,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6792:32:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 399,
"nodeType": "ExpressionStatement",
"src": "6792:32:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 404,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
"src": "6886:23:1",
"subExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 401,
"name": "isExtension",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 51,
"src": "6887:11:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 403,
"indexExpression": {
"argumentTypes": null,
"id": 402,
"name": "extension",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 387,
"src": "6899:9:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Extension_$18",
"typeString": "contract Extension"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "6887:22:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 400,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "6878:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 405,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6878:32:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 406,
"nodeType": "ExpressionStatement",
"src": "6878:32:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 410,
"name": "extension",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 387,
"src": "6936:9:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Extension_$18",
"typeString": "contract Extension"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_Extension_$18",
"typeString": "contract Extension"
}
],
"expression": {
"argumentTypes": null,
"id": 407,
"name": "extensions",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43,
"src": "6920:10:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage",
"typeString": "contract Extension[] storage ref"
}
},
"id": 409,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "push",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "6920:15:1",
"typeDescriptions": {
"typeIdentifier": "t_function_arraypush_nonpayable$_t_contract$_Extension_$18_$returns$_t_uint256_$",
"typeString": "function (contract Extension) returns (uint256)"
}
},
"id": 411,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6920:26:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 412,
"nodeType": "ExpressionStatement",
"src": "6920:26:1"
},
{
"expression": {
"argumentTypes": null,
"id": 417,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 413,
"name": "isExtension",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 51,
"src": "6956:11:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 415,
"indexExpression": {
"argumentTypes": null,
"id": 414,
"name": "extension",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 387,
"src": "6968:9:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Extension_$18",
"typeString": "contract Extension"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "6956:22:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 416,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "6981:4:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"src": "6956:29:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 418,
"nodeType": "ExpressionStatement",
"src": "6956:29:1"
}
]
},
"id": 420,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [
{
"arguments": [],
"id": 390,
"modifierName": {
"argumentTypes": null,
"id": 389,
"name": "onlyWallet",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 74,
"src": "6722:10:1",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "6722:10:1"
}
],
"name": "addExtension",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 388,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 387,
"name": "extension",
"nodeType": "VariableDeclaration",
"scope": 420,
"src": "6678:19:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Extension_$18",
"typeString": "contract Extension"
},
"typeName": {
"contractScope": null,
"id": 386,
"name": "Extension",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 18,
"src": "6678:9:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Extension_$18",
"typeString": "contract Extension"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "6677:21:1"
},
"payable": false,
"returnParameters": {
"id": 391,
"nodeType": "ParameterList",
"parameters": [],
"src": "6737:0:1"
},
"scope": 963,
"src": "6656:336:1",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 459,
"nodeType": "Block",
"src": "7372:276:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_contract$_Extension_$18",
"typeString": "contract Extension"
},
"id": 434,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 430,
"name": "extensions",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43,
"src": "7460:10:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage",
"typeString": "contract Extension[] storage ref"
}
},
"id": 432,
"indexExpression": {
"argumentTypes": null,
"id": 431,
"name": "extensionIndex",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 422,
"src": "7471:14:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "7460:26:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Extension_$18",
"typeString": "contract Extension"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"id": 433,
"name": "extension",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 424,
"src": "7490:9:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Extension_$18",
"typeString": "contract Extension"
}
},
"src": "7460:39:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 429,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "7452:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 435,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7452:48:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 436,
"nodeType": "ExpressionStatement",
"src": "7452:48:1"
},
{
"expression": {
"argumentTypes": null,
"id": 441,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 437,
"name": "isExtension",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 51,
"src": "7510:11:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 439,
"indexExpression": {
"argumentTypes": null,
"id": 438,
"name": "extension",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 424,
"src": "7522:9:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Extension_$18",
"typeString": "contract Extension"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "7510:22:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "66616c7365",
"id": 440,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "7535:5:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "false"
},
"src": "7510:30:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 442,
"nodeType": "ExpressionStatement",
"src": "7510:30:1"
},
{
"expression": {
"argumentTypes": null,
"id": 452,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 443,
"name": "extensions",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43,
"src": "7550:10:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage",
"typeString": "contract Extension[] storage ref"
}
},
"id": 445,
"indexExpression": {
"argumentTypes": null,
"id": 444,
"name": "extensionIndex",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 422,
"src": "7561:14:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "7550:26:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Extension_$18",
"typeString": "contract Extension"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 446,
"name": "extensions",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43,
"src": "7579:10:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage",
"typeString": "contract Extension[] storage ref"
}
},
"id": 451,
"indexExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 450,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 447,
"name": "extensions",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43,
"src": "7590:10:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage",
"typeString": "contract Extension[] storage ref"
}
},
"id": 448,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "7590:17:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 449,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "7610:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "7590:21:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "7579:33:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Extension_$18",
"typeString": "contract Extension"
}
},
"src": "7550:62:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Extension_$18",
"typeString": "contract Extension"
}
},
"id": 453,
"nodeType": "ExpressionStatement",
"src": "7550:62:1"
},
{
"expression": {
"argumentTypes": null,
"id": 457,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "--",
"prefix": false,
"src": "7622:19:1",
"subExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 454,
"name": "extensions",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43,
"src": "7622:10:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage",
"typeString": "contract Extension[] storage ref"
}
},
"id": 456,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "7622:17:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 458,
"nodeType": "ExpressionStatement",
"src": "7622:19:1"
}
]
},
"id": 460,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [
{
"arguments": [],
"id": 427,
"modifierName": {
"argumentTypes": null,
"id": 426,
"name": "onlyWallet",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 74,
"src": "7357:10:1",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "7357:10:1"
}
],
"name": "removeExtension",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 425,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 422,
"name": "extensionIndex",
"nodeType": "VariableDeclaration",
"scope": 460,
"src": "7289:22:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 421,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "7289:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 424,
"name": "extension",
"nodeType": "VariableDeclaration",
"scope": 460,
"src": "7313:19:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Extension_$18",
"typeString": "contract Extension"
},
"typeName": {
"contractScope": null,
"id": 423,
"name": "Extension",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 18,
"src": "7313:9:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Extension_$18",
"typeString": "contract Extension"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "7288:45:1"
},
"payable": false,
"returnParameters": {
"id": 428,
"nodeType": "ParameterList",
"parameters": [],
"src": "7372:0:1"
},
"scope": 963,
"src": "7264:384:1",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 509,
"nodeType": "Block",
"src": "8102:383:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 474,
"name": "isOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 47,
"src": "8190:7:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 477,
"indexExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 475,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2089,
"src": "8198:3:1",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 476,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "8198:10:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "8190:19:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 473,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "8182:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 478,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8182:28:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 479,
"nodeType": "ExpressionStatement",
"src": "8182:28:1"
},
{
"assignments": [
481
],
"declarations": [
{
"constant": false,
"id": 481,
"name": "transactionHash",
"nodeType": "VariableDeclaration",
"scope": 510,
"src": "8220:23:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 480,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "8220:7:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 489,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 483,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 462,
"src": "8265:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 484,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 464,
"src": "8269:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 485,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 466,
"src": "8276:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
{
"argumentTypes": null,
"id": 486,
"name": "operation",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 468,
"src": "8282:9:1",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
}
},
{
"argumentTypes": null,
"id": 487,
"name": "nonce",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 37,
"src": "8293:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
{
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 482,
"name": "getTransactionHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 852,
"src": "8246:18:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$_t_uint256_$returns$_t_bytes32_$",
"typeString": "function (address,uint256,bytes memory,enum GnosisSafe.Operation,uint256) view returns (bytes32)"
}
},
"id": 488,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8246:53:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "8220:79:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 497,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
"src": "8379:41:1",
"subExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 491,
"name": "isConfirmed",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 57,
"src": "8380:11:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$",
"typeString": "mapping(address => mapping(bytes32 => bool))"
}
},
"id": 494,
"indexExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 492,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2089,
"src": "8392:3:1",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 493,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "8392:10:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "8380:23:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
"typeString": "mapping(bytes32 => bool)"
}
},
"id": 496,
"indexExpression": {
"argumentTypes": null,
"id": 495,
"name": "transactionHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 481,
"src": "8404:15:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "8380:40:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 490,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "8371:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 498,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8371:50:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 499,
"nodeType": "ExpressionStatement",
"src": "8371:50:1"
},
{
"expression": {
"argumentTypes": null,
"id": 507,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 500,
"name": "isConfirmed",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 57,
"src": "8431:11:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$",
"typeString": "mapping(address => mapping(bytes32 => bool))"
}
},
"id": 504,
"indexExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 501,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2089,
"src": "8443:3:1",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 502,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "8443:10:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "8431:23:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
"typeString": "mapping(bytes32 => bool)"
}
},
"id": 505,
"indexExpression": {
"argumentTypes": null,
"id": 503,
"name": "transactionHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 481,
"src": "8455:15:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "8431:40:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 506,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "8474:4:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"src": "8431:47:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 508,
"nodeType": "ExpressionStatement",
"src": "8431:47:1"
}
]
},
"id": 510,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "confirmTransaction",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 471,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 462,
"name": "to",
"nodeType": "VariableDeclaration",
"scope": 510,
"src": "8007:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 461,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "8007:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 464,
"name": "value",
"nodeType": "VariableDeclaration",
"scope": 510,
"src": "8019:13:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 463,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8019:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 466,
"name": "data",
"nodeType": "VariableDeclaration",
"scope": 510,
"src": "8034:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
"typeName": {
"id": 465,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "8034:5:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes storage pointer"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 468,
"name": "operation",
"nodeType": "VariableDeclaration",
"scope": 510,
"src": "8046:19:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
},
"typeName": {
"contractScope": null,
"id": 467,
"name": "Operation",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 61,
"src": "8046:9:1",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 470,
"name": "_nonce",
"nodeType": "VariableDeclaration",
"scope": 510,
"src": "8067:14:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 469,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8067:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "8006:76:1"
},
"payable": false,
"returnParameters": {
"id": 472,
"nodeType": "ParameterList",
"parameters": [],
"src": "8102:0:1"
},
"scope": 963,
"src": "7979:506:1",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 697,
"nodeType": "Block",
"src": "9404:1349:1",
"statements": [
{
"assignments": [
537
],
"declarations": [
{
"constant": false,
"id": 537,
"name": "transactionHash",
"nodeType": "VariableDeclaration",
"scope": 698,
"src": "9414:23:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 536,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "9414:7:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 545,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 539,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 512,
"src": "9459:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 540,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 514,
"src": "9463:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 541,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 516,
"src": "9470:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
{
"argumentTypes": null,
"id": 542,
"name": "operation",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 518,
"src": "9476:9:1",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
}
},
{
"argumentTypes": null,
"id": 543,
"name": "nonce",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 37,
"src": "9487:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
{
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 538,
"name": "getTransactionHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 852,
"src": "9440:18:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$_t_uint256_$returns$_t_bytes32_$",
"typeString": "function (address,uint256,bytes memory,enum GnosisSafe.Operation,uint256) view returns (bytes32)"
}
},
"id": 544,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9440:53:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "9414:79:1"
},
{
"assignments": [
547
],
"declarations": [
{
"constant": false,
"id": 547,
"name": "lastOwner",
"nodeType": "VariableDeclaration",
"scope": 698,
"src": "9555:17:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 546,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9555:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 551,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 549,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9583:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 548,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "9575:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": "address"
},
"id": 550,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9575:10:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "9555:30:1"
},
{
"assignments": [],
"declarations": [
{
"constant": false,
"id": 553,
"name": "currentOwner",
"nodeType": "VariableDeclaration",
"scope": 698,
"src": "9595:20:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 552,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9595:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 554,
"initialValue": null,
"nodeType": "VariableDeclarationStatement",
"src": "9595:20:1"
},
{
"assignments": [],
"declarations": [
{
"constant": false,
"id": 556,
"name": "i",
"nodeType": "VariableDeclaration",
"scope": 698,
"src": "9625:9:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 555,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "9625:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 557,
"initialValue": null,
"nodeType": "VariableDeclarationStatement",
"src": "9625:9:1"
},
{
"assignments": [
559
],
"declarations": [
{
"constant": false,
"id": 559,
"name": "j",
"nodeType": "VariableDeclaration",
"scope": 698,
"src": "9644:9:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 558,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "9644:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 561,
"initialValue": {
"argumentTypes": null,
"hexValue": "30",
"id": 560,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9656:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"nodeType": "VariableDeclarationStatement",
"src": "9644:13:1"
},
{
"body": {
"id": 648,
"nodeType": "Block",
"src": "9741:619:1",
"statements": [
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 581,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 575,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 572,
"name": "indices",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 533,
"src": "9843:7:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
"typeString": "uint256[] memory"
}
},
"id": 573,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "9843:14:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"id": 574,
"name": "j",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 559,
"src": "9860:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "9843:18:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "&&",
"rightExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 580,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 576,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 556,
"src": "9865:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 577,
"name": "indices",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 533,
"src": "9870:7:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
"typeString": "uint256[] memory"
}
},
"id": 579,
"indexExpression": {
"argumentTypes": null,
"id": 578,
"name": "j",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 559,
"src": "9878:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "9870:10:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "9865:15:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "9843:37:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"expression": {
"argumentTypes": null,
"id": 629,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 610,
"name": "currentOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 553,
"src": "10155:12:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 612,
"name": "transactionHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 537,
"src": "10180:15:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 613,
"name": "v",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 521,
"src": "10197:1:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
"typeString": "uint8[] memory"
}
},
"id": 617,
"indexExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 616,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 614,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 556,
"src": "10199:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"argumentTypes": null,
"id": 615,
"name": "j",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 559,
"src": "10201:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "10199:3:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "10197:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
{
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 618,
"name": "r",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 524,
"src": "10205:1:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
"typeString": "bytes32[] memory"
}
},
"id": 622,
"indexExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 621,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 619,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 556,
"src": "10207:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"argumentTypes": null,
"id": 620,
"name": "j",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 559,
"src": "10209:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "10207:3:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "10205:6:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 623,
"name": "s",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 527,
"src": "10213:1:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
"typeString": "bytes32[] memory"
}
},
"id": 627,
"indexExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 626,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 624,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 556,
"src": "10215:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"argumentTypes": null,
"id": 625,
"name": "j",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 559,
"src": "10217:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "10215:3:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "10213:6:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 611,
"name": "ecrecover",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2082,
"src": "10170:9:1",
"typeDescriptions": {
"typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
"typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)"
}
},
"id": 628,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "10170:50:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "10155:65:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 630,
"nodeType": "ExpressionStatement",
"src": "10155:65:1"
},
"id": 631,
"nodeType": "IfStatement",
"src": "9839:381:1",
"trueBody": {
"id": 609,
"nodeType": "Block",
"src": "9882:177:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 596,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 588,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 583,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2089,
"src": "9908:3:1",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 584,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "9908:10:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 585,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 530,
"src": "9922:7:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 587,
"indexExpression": {
"argumentTypes": null,
"id": 586,
"name": "j",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 559,
"src": "9930:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "9922:10:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "9908:24:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "||",
"rightExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 589,
"name": "isConfirmed",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 57,
"src": "9936:11:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$",
"typeString": "mapping(address => mapping(bytes32 => bool))"
}
},
"id": 593,
"indexExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 590,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 530,
"src": "9948:7:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 592,
"indexExpression": {
"argumentTypes": null,
"id": 591,
"name": "j",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 559,
"src": "9956:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "9948:10:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "9936:23:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
"typeString": "mapping(bytes32 => bool)"
}
},
"id": 595,
"indexExpression": {
"argumentTypes": null,
"id": 594,
"name": "transactionHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 537,
"src": "9960:15:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "9936:40:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "9908:68:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 582,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "9900:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 597,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9900:77:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 598,
"nodeType": "ExpressionStatement",
"src": "9900:77:1"
},
{
"expression": {
"argumentTypes": null,
"id": 603,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 599,
"name": "currentOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 553,
"src": "9995:12:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 600,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 530,
"src": "10010:7:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 602,
"indexExpression": {
"argumentTypes": null,
"id": 601,
"name": "j",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 559,
"src": "10018:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "10010:10:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "9995:25:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 604,
"nodeType": "ExpressionStatement",
"src": "9995:25:1"
},
{
"expression": {
"argumentTypes": null,
"id": 607,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 605,
"name": "j",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 559,
"src": "10038:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "+=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "31",
"id": 606,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "10043:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "10038:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 608,
"nodeType": "ExpressionStatement",
"src": "10038:6:1"
}
]
}
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 633,
"name": "isOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 47,
"src": "10242:7:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 635,
"indexExpression": {
"argumentTypes": null,
"id": 634,
"name": "currentOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 553,
"src": "10250:12:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "10242:21:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 632,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "10234:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 636,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "10234:30:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 637,
"nodeType": "ExpressionStatement",
"src": "10234:30:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 641,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 639,
"name": "currentOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 553,
"src": "10286:12:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"id": 640,
"name": "lastOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 547,
"src": "10301:9:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "10286:24:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 638,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "10278:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 642,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "10278:33:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 643,
"nodeType": "ExpressionStatement",
"src": "10278:33:1"
},
{
"expression": {
"argumentTypes": null,
"id": 646,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 644,
"name": "lastOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 547,
"src": "10325:9:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 645,
"name": "currentOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 553,
"src": "10337:12:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "10325:24:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 647,
"nodeType": "ExpressionStatement",
"src": "10325:24:1"
}
]
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 568,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 566,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 556,
"src": "9721:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"id": 567,
"name": "threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 35,
"src": "9725:9:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "9721:13:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 649,
"initializationExpression": {
"expression": {
"argumentTypes": null,
"id": 564,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 562,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 556,
"src": "9714:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "30",
"id": 563,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9718:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "9714:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 565,
"nodeType": "ExpressionStatement",
"src": "9714:5:1"
},
"loopExpression": {
"expression": {
"argumentTypes": null,
"id": 570,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "9736:3:1",
"subExpression": {
"argumentTypes": null,
"id": 569,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 556,
"src": "9736:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 571,
"nodeType": "ExpressionStatement",
"src": "9736:3:1"
},
"nodeType": "ForStatement",
"src": "9709:651:1"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 653,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 650,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 530,
"src": "10419:7:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 651,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "10419:14:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 652,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "10436:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "10419:18:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 685,
"nodeType": "IfStatement",
"src": "10415:216:1",
"trueBody": {
"id": 684,
"nodeType": "Block",
"src": "10439:192:1",
"statements": [
{
"body": {
"id": 682,
"nodeType": "Block",
"src": "10490:131:1",
"statements": [
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 670,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 665,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2089,
"src": "10512:3:1",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 666,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "10512:10:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 667,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 530,
"src": "10526:7:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 669,
"indexExpression": {
"argumentTypes": null,
"id": 668,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 556,
"src": "10534:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "10526:10:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "10512:24:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 681,
"nodeType": "IfStatement",
"src": "10508:98:1",
"trueBody": {
"expression": {
"argumentTypes": null,
"id": 679,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 671,
"name": "isConfirmed",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 57,
"src": "10558:11:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$",
"typeString": "mapping(address => mapping(bytes32 => bool))"
}
},
"id": 676,
"indexExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 672,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 530,
"src": "10570:7:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 674,
"indexExpression": {
"argumentTypes": null,
"id": 673,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 556,
"src": "10578:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "10570:10:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "10558:23:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
"typeString": "mapping(bytes32 => bool)"
}
},
"id": 677,
"indexExpression": {
"argumentTypes": null,
"id": 675,
"name": "transactionHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 537,
"src": "10582:15:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "10558:40:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "66616c7365",
"id": 678,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "10601:5:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "false"
},
"src": "10558:48:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 680,
"nodeType": "ExpressionStatement",
"src": "10558:48:1"
}
}
]
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 661,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 658,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 556,
"src": "10465:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 659,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 530,
"src": "10469:7:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 660,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "10469:14:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "10465:18:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 683,
"initializationExpression": {
"expression": {
"argumentTypes": null,
"id": 656,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 654,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 556,
"src": "10458:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "30",
"id": 655,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "10462:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "10458:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 657,
"nodeType": "ExpressionStatement",
"src": "10458:5:1"
},
"loopExpression": {
"expression": {
"argumentTypes": null,
"id": 663,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "10485:3:1",
"subExpression": {
"argumentTypes": null,
"id": 662,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 556,
"src": "10485:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 664,
"nodeType": "ExpressionStatement",
"src": "10485:3:1"
},
"nodeType": "ForStatement",
"src": "10453:168:1"
}
]
}
},
{
"expression": {
"argumentTypes": null,
"id": 688,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 686,
"name": "nonce",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 37,
"src": "10691:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "+=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "31",
"id": 687,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "10700:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "10691:10:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 689,
"nodeType": "ExpressionStatement",
"src": "10691:10:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 691,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 512,
"src": "10719:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 692,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 514,
"src": "10723:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 693,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 516,
"src": "10730:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
{
"argumentTypes": null,
"id": 694,
"name": "operation",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 518,
"src": "10736:9:1",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
{
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
}
],
"id": 690,
"name": "execute",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 791,
"src": "10711:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$returns$__$",
"typeString": "function (address,uint256,bytes memory,enum GnosisSafe.Operation)"
}
},
"id": 695,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "10711:35:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 696,
"nodeType": "ExpressionStatement",
"src": "10711:35:1"
}
]
},
"id": 698,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "executeTransaction",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 534,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 512,
"name": "to",
"nodeType": "VariableDeclaration",
"scope": 698,
"src": "9250:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 511,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9250:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 514,
"name": "value",
"nodeType": "VariableDeclaration",
"scope": 698,
"src": "9262:13:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 513,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "9262:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 516,
"name": "data",
"nodeType": "VariableDeclaration",
"scope": 698,
"src": "9277:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
"typeName": {
"id": 515,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "9277:5:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes storage pointer"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 518,
"name": "operation",
"nodeType": "VariableDeclaration",
"scope": 698,
"src": "9289:19:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
},
"typeName": {
"contractScope": null,
"id": 517,
"name": "Operation",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 61,
"src": "9289:9:1",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 521,
"name": "v",
"nodeType": "VariableDeclaration",
"scope": 698,
"src": "9310:9:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
"typeString": "uint8[] memory"
},
"typeName": {
"baseType": {
"id": 519,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "9310:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"id": 520,
"length": null,
"nodeType": "ArrayTypeName",
"src": "9310:7:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr",
"typeString": "uint8[] storage pointer"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 524,
"name": "r",
"nodeType": "VariableDeclaration",
"scope": 698,
"src": "9321:11:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
"typeString": "bytes32[] memory"
},
"typeName": {
"baseType": {
"id": 522,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "9321:7:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"id": 523,
"length": null,
"nodeType": "ArrayTypeName",
"src": "9321:9:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
"typeString": "bytes32[] storage pointer"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 527,
"name": "s",
"nodeType": "VariableDeclaration",
"scope": 698,
"src": "9334:11:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
"typeString": "bytes32[] memory"
},
"typeName": {
"baseType": {
"id": 525,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "9334:7:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"id": 526,
"length": null,
"nodeType": "ArrayTypeName",
"src": "9334:9:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
"typeString": "bytes32[] storage pointer"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 530,
"name": "_owners",
"nodeType": "VariableDeclaration",
"scope": 698,
"src": "9347:17:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
},
"typeName": {
"baseType": {
"id": 528,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9347:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 529,
"length": null,
"nodeType": "ArrayTypeName",
"src": "9347:9:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[] storage pointer"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 533,
"name": "indices",
"nodeType": "VariableDeclaration",
"scope": 698,
"src": "9366:17:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
"typeString": "uint256[] memory"
},
"typeName": {
"baseType": {
"id": 531,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "9366:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 532,
"length": null,
"nodeType": "ArrayTypeName",
"src": "9366:9:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
"typeString": "uint256[] storage pointer"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "9249:135:1"
},
"payable": false,
"returnParameters": {
"id": 535,
"nodeType": "ParameterList",
"parameters": [],
"src": "9404:0:1"
},
"scope": 963,
"src": "9222:1531:1",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 736,
"nodeType": "Block",
"src": "11304:338:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 712,
"name": "isExtension",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 51,
"src": "11374:11:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 714,
"indexExpression": {
"argumentTypes": null,
"id": 713,
"name": "extension",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 708,
"src": "11386:9:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Extension_$18",
"typeString": "contract Extension"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "11374:22:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 711,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "11366:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 715,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "11366:31:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 716,
"nodeType": "ExpressionStatement",
"src": "11366:31:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 720,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2089,
"src": "11487:3:1",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 721,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "11487:10:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 722,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 700,
"src": "11499:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 723,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 702,
"src": "11503:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 724,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 704,
"src": "11510:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
{
"argumentTypes": null,
"id": 725,
"name": "operation",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 706,
"src": "11516:9:1",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
{
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
}
],
"expression": {
"argumentTypes": null,
"id": 718,
"name": "extension",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 708,
"src": "11464:9:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Extension_$18",
"typeString": "contract Extension"
}
},
"id": 719,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "isExecutable",
"nodeType": "MemberAccess",
"referencedDeclaration": 17,
"src": "11464:22:1",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$returns$_t_bool_$",
"typeString": "function (address,address,uint256,bytes memory,enum GnosisSafe.Operation) external returns (bool)"
}
},
"id": 726,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "11464:62:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 717,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "11456:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 727,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "11456:71:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 728,
"nodeType": "ExpressionStatement",
"src": "11456:71:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 730,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 700,
"src": "11608:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 731,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 702,
"src": "11612:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 732,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 704,
"src": "11619:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
{
"argumentTypes": null,
"id": 733,
"name": "operation",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 706,
"src": "11625:9:1",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
{
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
}
],
"id": 729,
"name": "execute",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 791,
"src": "11600:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$returns$__$",
"typeString": "function (address,uint256,bytes memory,enum GnosisSafe.Operation)"
}
},
"id": 734,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "11600:35:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 735,
"nodeType": "ExpressionStatement",
"src": "11600:35:1"
}
]
},
"id": 737,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "executeExtension",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 709,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 700,
"name": "to",
"nodeType": "VariableDeclaration",
"scope": 737,
"src": "11204:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 699,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "11204:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 702,
"name": "value",
"nodeType": "VariableDeclaration",
"scope": 737,
"src": "11216:13:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 701,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "11216:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 704,
"name": "data",
"nodeType": "VariableDeclaration",
"scope": 737,
"src": "11231:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
"typeName": {
"id": 703,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "11231:5:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes storage pointer"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 706,
"name": "operation",
"nodeType": "VariableDeclaration",
"scope": 737,
"src": "11243:19:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
},
"typeName": {
"contractScope": null,
"id": 705,
"name": "Operation",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 61,
"src": "11243:9:1",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 708,
"name": "extension",
"nodeType": "VariableDeclaration",
"scope": 737,
"src": "11264:19:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Extension_$18",
"typeString": "contract Extension"
},
"typeName": {
"contractScope": null,
"id": 707,
"name": "Extension",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 18,
"src": "11264:9:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Extension_$18",
"typeString": "contract Extension"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "11203:81:1"
},
"payable": false,
"returnParameters": {
"id": 710,
"nodeType": "ParameterList",
"parameters": [],
"src": "11304:0:1"
},
"scope": 963,
"src": "11178:464:1",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 790,
"nodeType": "Block",
"src": "11746:367:1",
"statements": [
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
},
"id": 751,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 748,
"name": "operation",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 745,
"src": "11760:9:1",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 749,
"name": "Operation",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 61,
"src": "11773:9:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_enum$_Operation_$61_$",
"typeString": "type(enum GnosisSafe.Operation)"
}
},
"id": 750,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "Call",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "11773:14:1",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
}
},
"src": "11760:27:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
},
"id": 763,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 760,
"name": "operation",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 745,
"src": "11857:9:1",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 761,
"name": "Operation",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 61,
"src": "11870:9:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_enum$_Operation_$61_$",
"typeString": "type(enum GnosisSafe.Operation)"
}
},
"id": 762,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "DelegateCall",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "11870:22:1",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
}
},
"src": "11857:35:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"id": 787,
"nodeType": "Block",
"src": "11959:148:1",
"statements": [
{
"assignments": [
772
],
"declarations": [
{
"constant": false,
"id": 772,
"name": "newContract",
"nodeType": "VariableDeclaration",
"scope": 791,
"src": "11973:19:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 771,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "11973:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 776,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 774,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 743,
"src": "12009:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 773,
"name": "executeCreate",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 824,
"src": "11995:13:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_address_$",
"typeString": "function (bytes memory) returns (address)"
}
},
"id": 775,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "11995:19:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "11973:41:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 780,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 778,
"name": "newContract",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 772,
"src": "12036:11:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 779,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "12051:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "12036:16:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 777,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "12028:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 781,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "12028:25:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 782,
"nodeType": "ExpressionStatement",
"src": "12028:25:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 784,
"name": "newContract",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 772,
"src": "12084:11:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 783,
"name": "ContractCreation",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 25,
"src": "12067:16:1",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
"typeString": "function (address)"
}
},
"id": 785,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "12067:29:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 786,
"nodeType": "ExpressionStatement",
"src": "12067:29:1"
}
]
},
"id": 788,
"nodeType": "IfStatement",
"src": "11853:254:1",
"trueBody": {
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 766,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 739,
"src": "11934:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 767,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 743,
"src": "11938:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 765,
"name": "executeDelegateCall",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 815,
"src": "11914:19:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$",
"typeString": "function (address,bytes memory) returns (bool)"
}
},
"id": 768,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "11914:29:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 764,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "11906:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 769,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "11906:38:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 770,
"nodeType": "ExpressionStatement",
"src": "11906:38:1"
}
},
"id": 789,
"nodeType": "IfStatement",
"src": "11756:351:1",
"trueBody": {
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 754,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 739,
"src": "11821:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 755,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 741,
"src": "11825:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 756,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 743,
"src": "11832:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 753,
"name": "executeCall",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 804,
"src": "11809:11:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$",
"typeString": "function (address,uint256,bytes memory) returns (bool)"
}
},
"id": 757,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "11809:28:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 752,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "11801:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 758,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "11801:37:1",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 759,
"nodeType": "ExpressionStatement",
"src": "11801:37:1"
}
}
]
},
"id": 791,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "execute",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 746,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 739,
"name": "to",
"nodeType": "VariableDeclaration",
"scope": 791,
"src": "11665:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 738,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "11665:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 741,
"name": "value",
"nodeType": "VariableDeclaration",
"scope": 791,
"src": "11677:13:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 740,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "11677:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 743,
"name": "data",
"nodeType": "VariableDeclaration",
"scope": 791,
"src": "11692:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
"typeName": {
"id": 742,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "11692:5:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes storage pointer"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 745,
"name": "operation",
"nodeType": "VariableDeclaration",
"scope": 791,
"src": "11704:19:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
},
"typeName": {
"contractScope": null,
"id": 744,
"name": "Operation",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 61,
"src": "11704:9:1",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "11664:60:1"
},
"payable": false,
"returnParameters": {
"id": 747,
"nodeType": "ParameterList",
"parameters": [],
"src": "11746:0:1"
},
"scope": 963,
"src": "11648:465:1",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "internal"
},
{
"body": {
"id": 803,
"nodeType": "Block",
"src": "12231:119:1",
"statements": [
{
"externalReferences": [
{
"data": {
"declaration": 797,
"isOffset": false,
"isSlot": false,
"src": "12303:4:1",
"valueSize": 1
}
},
{
"data": {
"declaration": 797,
"isOffset": false,
"isSlot": false,
"src": "12322:4:1",
"valueSize": 1
}
},
{
"success": {
"declaration": 800,
"isOffset": false,
"isSlot": false,
"src": "12264:7:1",
"valueSize": 1
}
},
{
"to": {
"declaration": 793,
"isOffset": false,
"isSlot": false,
"src": "12288:2:1",
"valueSize": 1
}
},
{
"value": {
"declaration": 795,
"isOffset": false,
"isSlot": false,
"src": "12292:5:1",
"valueSize": 1
}
}
],
"id": 802,
"nodeType": "InlineAssembly",
"operations": "{\n success := call(not(0), to, value, add(data, 0x20), mload(data), 0, 0)\n}",
"src": "12241:109:1"
}
]
},
"id": 804,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "executeCall",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 798,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 793,
"name": "to",
"nodeType": "VariableDeclaration",
"scope": 804,
"src": "12140:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 792,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "12140:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 795,
"name": "value",
"nodeType": "VariableDeclaration",
"scope": 804,
"src": "12152:13:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 794,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "12152:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 797,
"name": "data",
"nodeType": "VariableDeclaration",
"scope": 804,
"src": "12167:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
"typeName": {
"id": 796,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "12167:5:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes storage pointer"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "12139:39:1"
},
"payable": false,
"returnParameters": {
"id": 801,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 800,
"name": "success",
"nodeType": "VariableDeclaration",
"scope": 804,
"src": "12213:12:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 799,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "12213:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "12212:14:1"
},
"scope": 963,
"src": "12119:231:1",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "internal"
},
{
"body": {
"id": 814,
"nodeType": "Block",
"src": "12461:120:1",
"statements": [
{
"externalReferences": [
{
"data": {
"declaration": 808,
"isOffset": false,
"isSlot": false,
"src": "12534:4:1",
"valueSize": 1
}
},
{
"data": {
"declaration": 808,
"isOffset": false,
"isSlot": false,
"src": "12553:4:1",
"valueSize": 1
}
},
{
"success": {
"declaration": 811,
"isOffset": false,
"isSlot": false,
"src": "12494:7:1",
"valueSize": 1
}
},
{
"to": {
"declaration": 806,
"isOffset": false,
"isSlot": false,
"src": "12526:2:1",
"valueSize": 1
}
}
],
"id": 813,
"nodeType": "InlineAssembly",
"operations": "{\n success := delegatecall(not(0), to, add(data, 0x20), mload(data), 0, 0)\n}",
"src": "12471:110:1"
}
]
},
"id": 815,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "executeDelegateCall",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 809,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 806,
"name": "to",
"nodeType": "VariableDeclaration",
"scope": 815,
"src": "12385:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 805,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "12385:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 808,
"name": "data",
"nodeType": "VariableDeclaration",
"scope": 815,
"src": "12397:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
"typeName": {
"id": 807,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "12397:5:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes storage pointer"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "12384:24:1"
},
"payable": false,
"returnParameters": {
"id": 812,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 811,
"name": "success",
"nodeType": "VariableDeclaration",
"scope": 815,
"src": "12443:12:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 810,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "12443:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "12442:14:1"
},
"scope": 963,
"src": "12356:225:1",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "internal"
},
{
"body": {
"id": 823,
"nodeType": "Block",
"src": "12681:103:1",
"statements": [
{
"externalReferences": [
{
"data": {
"declaration": 817,
"isOffset": false,
"isSlot": false,
"src": "12762:4:1",
"valueSize": 1
}
},
{
"newContract": {
"declaration": 820,
"isOffset": false,
"isSlot": false,
"src": "12714:11:1",
"valueSize": 1
}
},
{
"data": {
"declaration": 817,
"isOffset": false,
"isSlot": false,
"src": "12743:4:1",
"valueSize": 1
}
}
],
"id": 822,
"nodeType": "InlineAssembly",
"operations": "{\n newContract := create(0, add(data, 0x20), mload(data))\n}",
"src": "12691:93:1"
}
]
},
"id": 824,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "executeCreate",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 818,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 817,
"name": "data",
"nodeType": "VariableDeclaration",
"scope": 824,
"src": "12610:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
"typeName": {
"id": 816,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "12610:5:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes storage pointer"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "12609:12:1"
},
"payable": false,
"returnParameters": {
"id": 821,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 820,
"name": "newContract",
"nodeType": "VariableDeclaration",
"scope": 824,
"src": "12656:19:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 819,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "12656:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "12655:21:1"
},
"scope": 963,
"src": "12587:197:1",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "internal"
},
{
"body": {
"id": 851,
"nodeType": "Block",
"src": "13238:87:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30783139",
"id": 841,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "13270:4:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_25_by_1",
"typeString": "int_const 25"
},
"value": "0x19"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_25_by_1",
"typeString": "int_const 25"
}
],
"id": 840,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "13265:4:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_bytes1_$",
"typeString": "type(bytes1)"
},
"typeName": "byte"
},
"id": 842,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "13265:10:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes1",
"typeString": "bytes1"
}
},
{
"argumentTypes": null,
"id": 843,
"name": "this",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2100,
"src": "13277:4:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
}
},
{
"argumentTypes": null,
"id": 844,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 826,
"src": "13283:2:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 845,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 828,
"src": "13287:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 846,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 830,
"src": "13294:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
{
"argumentTypes": null,
"id": 847,
"name": "operation",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 832,
"src": "13300:9:1",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
}
},
{
"argumentTypes": null,
"id": 848,
"name": "_nonce",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 834,
"src": "13311:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes1",
"typeString": "bytes1"
},
{
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
{
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 839,
"name": "keccak256",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2083,
"src": "13255:9:1",
"typeDescriptions": {
"typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
"typeString": "function () pure returns (bytes32)"
}
},
"id": 849,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "13255:63:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"functionReturnParameters": 838,
"id": 850,
"nodeType": "Return",
"src": "13248:70:1"
}
]
},
"id": 852,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": true,
"modifiers": [],
"name": "getTransactionHash",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 835,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 826,
"name": "to",
"nodeType": "VariableDeclaration",
"scope": 852,
"src": "13104:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 825,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "13104:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 828,
"name": "value",
"nodeType": "VariableDeclaration",
"scope": 852,
"src": "13116:13:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 827,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "13116:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 830,
"name": "data",
"nodeType": "VariableDeclaration",
"scope": 852,
"src": "13131:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
"typeName": {
"id": 829,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "13131:5:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes storage pointer"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 832,
"name": "operation",
"nodeType": "VariableDeclaration",
"scope": 852,
"src": "13143:19:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
},
"typeName": {
"contractScope": null,
"id": 831,
"name": "Operation",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 61,
"src": "13143:9:1",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 834,
"name": "_nonce",
"nodeType": "VariableDeclaration",
"scope": 852,
"src": "13164:14:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 833,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "13164:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "13103:76:1"
},
"payable": false,
"returnParameters": {
"id": 838,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 837,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 852,
"src": "13225:7:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 836,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "13225:7:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "13224:9:1"
},
"scope": 963,
"src": "13076:249:1",
"stateMutability": "view",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 860,
"nodeType": "Block",
"src": "13488:30:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 858,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 40,
"src": "13505:6:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"functionReturnParameters": 857,
"id": 859,
"nodeType": "Return",
"src": "13498:13:1"
}
]
},
"id": 861,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": true,
"modifiers": [],
"name": "getOwners",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 853,
"nodeType": "ParameterList",
"parameters": [],
"src": "13425:2:1"
},
"payable": false,
"returnParameters": {
"id": 857,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 856,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 861,
"src": "13473:9:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
},
"typeName": {
"baseType": {
"id": 854,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "13473:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 855,
"length": null,
"nodeType": "ArrayTypeName",
"src": "13473:9:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[] storage pointer"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "13472:11:1"
},
"scope": 963,
"src": "13407:111:1",
"stateMutability": "view",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 869,
"nodeType": "Block",
"src": "13690:34:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 867,
"name": "extensions",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43,
"src": "13707:10:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage",
"typeString": "contract Extension[] storage ref"
}
},
"functionReturnParameters": 866,
"id": 868,
"nodeType": "Return",
"src": "13700:17:1"
}
]
},
"id": 870,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": true,
"modifiers": [],
"name": "getExtensions",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 862,
"nodeType": "ParameterList",
"parameters": [],
"src": "13625:2:1"
},
"payable": false,
"returnParameters": {
"id": 866,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 865,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 870,
"src": "13673:11:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_memory_ptr",
"typeString": "contract Extension[] memory"
},
"typeName": {
"baseType": {
"contractScope": null,
"id": 863,
"name": "Extension",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 18,
"src": "13673:9:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Extension_$18",
"typeString": "contract Extension"
}
},
"id": 864,
"length": null,
"nodeType": "ArrayTypeName",
"src": "13673:11:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage_ptr",
"typeString": "contract Extension[] storage pointer"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "13672:13:1"
},
"scope": 963,
"src": "13603:121:1",
"stateMutability": "view",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 901,
"nodeType": "Block",
"src": "13998:162:1",
"statements": [
{
"body": {
"id": 899,
"nodeType": "Block",
"src": "14049:105:1",
"statements": [
{
"condition": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 888,
"name": "isConfirmed",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 57,
"src": "14067:11:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$",
"typeString": "mapping(address => mapping(bytes32 => bool))"
}
},
"id": 892,
"indexExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 889,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 40,
"src": "14079:6:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 891,
"indexExpression": {
"argumentTypes": null,
"id": 890,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 878,
"src": "14086:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "14079:9:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "14067:22:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
"typeString": "mapping(bytes32 => bool)"
}
},
"id": 894,
"indexExpression": {
"argumentTypes": null,
"id": 893,
"name": "transactionHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 872,
"src": "14090:15:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "14067:39:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 898,
"nodeType": "IfStatement",
"src": "14063:80:1",
"trueBody": {
"expression": {
"argumentTypes": null,
"id": 896,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "14124:19:1",
"subExpression": {
"argumentTypes": null,
"id": 895,
"name": "confirmationCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 875,
"src": "14124:17:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 897,
"nodeType": "ExpressionStatement",
"src": "14124:19:1"
}
}
]
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 884,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 881,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 878,
"src": "14025:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 882,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 40,
"src": "14029:6:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 883,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "14029:13:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "14025:17:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 900,
"initializationExpression": {
"assignments": [
878
],
"declarations": [
{
"constant": false,
"id": 878,
"name": "i",
"nodeType": "VariableDeclaration",
"scope": 902,
"src": "14013:6:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 877,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "14013:4:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 880,
"initialValue": {
"argumentTypes": null,
"hexValue": "30",
"id": 879,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "14022:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"nodeType": "VariableDeclarationStatement",
"src": "14013:10:1"
},
"loopExpression": {
"expression": {
"argumentTypes": null,
"id": 886,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "14044:3:1",
"subExpression": {
"argumentTypes": null,
"id": 885,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 878,
"src": "14044:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 887,
"nodeType": "ExpressionStatement",
"src": "14044:3:1"
},
"nodeType": "ForStatement",
"src": "14008:146:1"
}
]
},
"id": 902,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": true,
"modifiers": [],
"name": "getConfirmationCount",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 873,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 872,
"name": "transactionHash",
"nodeType": "VariableDeclaration",
"scope": 902,
"src": "13900:23:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 871,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "13900:7:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "13899:25:1"
},
"payable": false,
"returnParameters": {
"id": 876,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 875,
"name": "confirmationCount",
"nodeType": "VariableDeclaration",
"scope": 902,
"src": "13970:22:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 874,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "13970:4:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "13969:24:1"
},
"scope": 963,
"src": "13870:290:1",
"stateMutability": "view",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 961,
"nodeType": "Block",
"src": "14432:407:1",
"statements": [
{
"assignments": [
911
],
"declarations": [
{
"constant": false,
"id": 911,
"name": "confirmationCount",
"nodeType": "VariableDeclaration",
"scope": 962,
"src": "14442:22:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 910,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "14442:4:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 915,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 913,
"name": "transactionHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 904,
"src": "14488:15:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 912,
"name": "getConfirmationCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 902,
"src": "14467:20:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
"typeString": "function (bytes32) view returns (uint256)"
}
},
"id": 914,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "14467:37:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "14442:62:1"
},
{
"expression": {
"argumentTypes": null,
"id": 922,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 916,
"name": "confirmingOwners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 908,
"src": "14514:16:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 920,
"name": "confirmationCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 911,
"src": "14547:17:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 919,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "NewExpression",
"src": "14533:13:1",
"typeDescriptions": {
"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$",
"typeString": "function (uint256) pure returns (address[] memory)"
},
"typeName": {
"baseType": {
"id": 917,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "14537:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 918,
"length": null,
"nodeType": "ArrayTypeName",
"src": "14537:9:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[] storage pointer"
}
}
},
"id": 921,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "14533:32:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory",
"typeString": "address[] memory"
}
},
"src": "14514:51:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 923,
"nodeType": "ExpressionStatement",
"src": "14514:51:1"
},
{
"expression": {
"argumentTypes": null,
"id": 926,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 924,
"name": "confirmationCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 911,
"src": "14575:17:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "30",
"id": 925,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "14595:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "14575:21:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 927,
"nodeType": "ExpressionStatement",
"src": "14575:21:1"
},
{
"body": {
"id": 959,
"nodeType": "Block",
"src": "14647:186:1",
"statements": [
{
"condition": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 939,
"name": "isConfirmed",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 57,
"src": "14665:11:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$",
"typeString": "mapping(address => mapping(bytes32 => bool))"
}
},
"id": 943,
"indexExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 940,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 40,
"src": "14677:6:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 942,
"indexExpression": {
"argumentTypes": null,
"id": 941,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 929,
"src": "14684:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "14677:9:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "14665:22:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
"typeString": "mapping(bytes32 => bool)"
}
},
"id": 945,
"indexExpression": {
"argumentTypes": null,
"id": 944,
"name": "transactionHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 904,
"src": "14688:15:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "14665:39:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 958,
"nodeType": "IfStatement",
"src": "14661:162:1",
"trueBody": {
"id": 957,
"nodeType": "Block",
"src": "14706:117:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 952,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 946,
"name": "confirmingOwners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 908,
"src": "14724:16:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 948,
"indexExpression": {
"argumentTypes": null,
"id": 947,
"name": "confirmationCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 911,
"src": "14741:17:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "14724:35:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 949,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 40,
"src": "14762:6:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 951,
"indexExpression": {
"argumentTypes": null,
"id": 950,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 929,
"src": "14769:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "14762:9:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "14724:47:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 953,
"nodeType": "ExpressionStatement",
"src": "14724:47:1"
},
{
"expression": {
"argumentTypes": null,
"id": 955,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "14789:19:1",
"subExpression": {
"argumentTypes": null,
"id": 954,
"name": "confirmationCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 911,
"src": "14789:17:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 956,
"nodeType": "ExpressionStatement",
"src": "14789:19:1"
}
]
}
}
]
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 935,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 932,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 929,
"src": "14623:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 933,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 40,
"src": "14627:6:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage",
"typeString": "address[] storage ref"
}
},
"id": 934,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "14627:13:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "14623:17:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 960,
"initializationExpression": {
"assignments": [
929
],
"declarations": [
{
"constant": false,
"id": 929,
"name": "i",
"nodeType": "VariableDeclaration",
"scope": 962,
"src": "14611:6:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 928,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "14611:4:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 931,
"initialValue": {
"argumentTypes": null,
"hexValue": "30",
"id": 930,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "14620:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"nodeType": "VariableDeclarationStatement",
"src": "14611:10:1"
},
"loopExpression": {
"expression": {
"argumentTypes": null,
"id": 937,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "14642:3:1",
"subExpression": {
"argumentTypes": null,
"id": 936,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 929,
"src": "14642:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 938,
"nodeType": "ExpressionStatement",
"src": "14642:3:1"
},
"nodeType": "ForStatement",
"src": "14606:227:1"
}
]
},
"id": 962,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": true,
"modifiers": [],
"name": "getConfirmingOwners",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 905,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 904,
"name": "transactionHash",
"nodeType": "VariableDeclaration",
"scope": 962,
"src": "14330:23:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 903,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "14330:7:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "14329:25:1"
},
"payable": false,
"returnParameters": {
"id": 909,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 908,
"name": "confirmingOwners",
"nodeType": "VariableDeclaration",
"scope": 962,
"src": "14400:26:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
},
"typeName": {
"baseType": {
"id": 906,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "14400:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 907,
"length": null,
"nodeType": "ArrayTypeName",
"src": "14400:9:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[] storage pointer"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "14399:28:1"
},
"scope": 963,
"src": "14301:538:1",
"stateMutability": "view",
"superFunction": null,
"visibility": "public"
}
],
"scope": 964,
"src": "218:14623:1"
}
],
"src": "0:14842:1"
},
"compiler": {
"name": "solc",
"version": "0.4.19+commit.c4cbbb05.Emscripten.clang"
},
"networks": {
"4": {
"events": {},
"links": {},
"address": "0x90bbec32c6d045b37b2ee32a2bbbef640b3972d1",
"transactionHash": "0x2f6d1570cc556eef41a2d5e6d0410188979b61cbd580084cc7451a5776009204"
},
"42": {
"events": {},
"links": {},
"address": "0xaefa715af8a64d96f8619daa663fd72d78a0bf28",
"transactionHash": "0x13a8bc9539b1b6652ad74f4b3cbe2ec19d48cbbe578b7496e95379e12aca1862"
},
"1525342778744": {
"events": {},
"links": {},
"address": "0x84c8db395337da2e3d4fb3e26af6bf35739d49b8",
"transactionHash": "0x5b64197eda9ffa97845a6a77ff7bfb134b37c81fa74b3eef652bffbcd6879f6a"
},
"1525789101965": {
"events": {},
"links": {},
"address": "0x6ad761ab330a930f611c0a19226e39ae5da5122d",
"transactionHash": "0x2030f160032d1cea96610c0485dc0fc03426ab66de7f3582cd5fd02a60b14f52"
}
},
"schemaVersion": "2.0.0",
"updatedAt": "2018-05-08T14:18:44.047Z"
}